Merge branch 'es/blame-L-twice'
authorJunio C Hamano <gitster@pobox.com>
Mon, 9 Sep 2013 21:35:11 +0000 (14:35 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Sep 2013 21:35:11 +0000 (14:35 -0700)
Teaches "git blame" to take more than one -L ranges.

* es/blame-L-twice:
line-range: reject -L line numbers less than 1
t8001/t8002: blame: add tests of -L line numbers less than 1
line-range: teach -L^:RE to search from start of file
line-range: teach -L:RE to search from end of previous -L range
line-range: teach -L^/RE/ to search from start of file
line-range-format.txt: document -L/RE/ relative search
log: teach -L/RE/ to search from end of previous -L range
blame: teach -L/RE/ to search from end of previous -L range
line-range: teach -L/RE/ to search relative to anchor point
blame: document multiple -L support
t8001/t8002: blame: add tests of multiple -L options
blame: accept multiple -L ranges
blame: inline one-line function into its lone caller
range-set: publish API for re-use by git-blame -L
line-range-format.txt: clarify -L:regex usage form
git-log.txt: place each -L option variation on its own line

157 files changed:
.mailmap
Documentation/CodingGuidelines
Documentation/RelNotes/1.8.4.txt
Documentation/RelNotes/1.8.5.txt [new file with mode: 0644]
Documentation/SubmittingPatches
Documentation/config.txt
Documentation/git-cat-file.txt
Documentation/git-check-attr.txt
Documentation/git-check-ref-format.txt
Documentation/git-fetch-pack.txt
Documentation/git-format-patch.txt
Documentation/git-gc.txt
Documentation/git-merge-file.txt
Documentation/git-merge.txt
Documentation/git-push.txt
Documentation/git-rev-list.txt
Documentation/git-rev-parse.txt
Documentation/git-stash.txt
Documentation/git-svn.txt
Documentation/git-whatchanged.txt
Documentation/git.txt
Documentation/gitcore-tutorial.txt
Documentation/gitremote-helpers.txt
Documentation/pretty-options.txt
Documentation/rev-list-options.txt
Documentation/revisions.txt
Documentation/technical/http-protocol.txt [new file with mode: 0644]
GIT-VERSION-GEN
Makefile
RelNotes
builtin/apply.c
builtin/bisect--helper.c
builtin/blame.c
builtin/branch.c
builtin/cat-file.c
builtin/check-attr.c
builtin/check-ignore.c
builtin/checkout-index.c
builtin/checkout.c
builtin/clean.c
builtin/clone.c
builtin/commit.c
builtin/config.c
builtin/describe.c
builtin/fast-export.c
builtin/fetch-pack.c
builtin/fetch.c
builtin/for-each-ref.c
builtin/fsck.c
builtin/gc.c
builtin/grep.c
builtin/hash-object.c
builtin/log.c
builtin/ls-files.c
builtin/ls-tree.c
builtin/merge-base.c
builtin/merge-file.c
builtin/merge.c
builtin/mv.c
builtin/name-rev.c
builtin/notes.c
builtin/pack-objects.c
builtin/push.c
builtin/receive-pack.c
builtin/remote.c
builtin/replace.c
builtin/reset.c
builtin/rev-parse.c
builtin/revert.c
builtin/rm.c
builtin/send-pack.c
builtin/shortlog.c
builtin/show-branch.c
builtin/show-ref.c
builtin/tag.c
builtin/tar-tree.c
builtin/update-ref.c
cache.h
combine-diff.c
commit.c
commit.h
compat/apple-common-crypto.h [new file with mode: 0644]
compat/mingw.c
config.c
connect.c
connect.h [new file with mode: 0644]
contrib/completion/git-completion.bash
contrib/completion/git-prompt.sh
contrib/examples/git-log.sh [new file with mode: 0755]
contrib/examples/git-whatchanged.sh [new file with mode: 0755]
contrib/mw-to-git/.gitignore
contrib/remote-helpers/git-remote-bzr
contrib/remote-helpers/git-remote-hg
diff-delta.c
diff-lib.c
diff-no-index.c
diff.c
diff.h
editor.c
fast-import.c
fetch-pack.c
fetch-pack.h
git-compat-util.h
git-p4.py
git-sh-setup.sh
git-stash.sh
http.c
imap-send.c
log-tree.c
parse-options.c
parse-options.h
perl/Git.pm
perl/Git/SVN/Fetcher.pm
po/TEAMS
po/de.po
po/fr.po [new file with mode: 0644]
po/git.pot
po/sv.po
po/vi.po
po/zh_CN.po
quote.c
quote.h
refs.c
remote-curl.c
remote.c
remote.h
revision.c
revision.h
send-pack.c
sha1_file.c
sha1_name.c
submodule.c
t/lib-httpd.sh
t/lib-httpd/apache.conf
t/t0070-fundamental.sh
t/t1006-cat-file.sh
t/t1411-reflog-show.sh
t/t1508-at-combinations.sh
t/t3404-rebase-interactive.sh
t/t3903-stash.sh
t/t5500-fetch-pack.sh
t/t5510-fetch.sh
t/t5533-push-cas.sh [new file with mode: 0755]
t/t5541-http-push.sh
t/t5551-http-fetch.sh
t/t6012-rev-list-simplify.sh
t/t7400-submodule-basic.sh
t/t7407-submodule-foreach.sh
t/t9300-fast-import.sh
t/t9902-completion.sh
t/t9903-bash-prompt.sh
templates/hooks--pre-push.sample
transport-helper.c
transport.c
transport.h
unpack-trees.c
upload-pack.c
index dfa2e65348e992fc3f66a88f4438581d6fa7f116..1c1f5ec6bf83ca9dd27f7dacaa05b722202e115b 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -14,13 +14,18 @@ Alex Riesen <raa.lkml@gmail.com> <raa@steel.home>
 Alex Vandiver <alex@chmrr.net> <alexmv@MIT.EDU>
 Alexander Gavrilov <angavrilov@gmail.com>
 Alexey Shumkin <alex.crezoff@gmail.com> <zapped@mail.ru>
+Alexey Shumkin <alex.crezoff@gmail.com> <Alex.Crezoff@gmail.com>
 Anders Kaseorg <andersk@MIT.EDU> <andersk@ksplice.com>
 Anders Kaseorg <andersk@MIT.EDU> <andersk@mit.edu>
 Aneesh Kumar K.V <aneesh.kumar@gmail.com>
+Amos Waterland <apw@debian.org> <apw@rossby.metr.ou.edu>
+Amos Waterland <apw@debian.org> <apw@us.ibm.com>
 Ben Walton <bdwalton@gmail.com> <bwalton@artsci.utoronto.ca>
+Benoit Sigoure <tsunanet@gmail.com> <tsuna@lrde.epita.fr>
 Bernt Hansen <bernt@norang.ca> <bernt@alumni.uwaterloo.ca>
 Brandon Casey <drafnel@gmail.com> <casey@nrlssc.navy.mil>
-Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
+brian m. carlson <sandals@crustytoothpaste.ath.cx> Brian M. Carlson <sandals@crustytoothpaste.ath.cx>
+brian m. carlson <sandals@crustytoothpaste.ath.cx> <sandals@crustytoothpaste.net>
 Bryan Larsen <bryan@larsen.st> <bryan.larsen@gmail.com>
 Bryan Larsen <bryan@larsen.st> <bryanlarsen@yahoo.com>
 Cheng Renquan <crquan@gmail.com>
@@ -31,7 +36,10 @@ Christian Stimming <stimming@tuhh.de> <chs@ckiste.goetheallee>
 Csaba Henk <csaba@gluster.com> <csaba@lowlife.hu>
 Dan Johnson <computerdruid@gmail.com>
 Dana L. How <danahow@gmail.com> <how@deathvalley.cswitch.com>
+Dana L. How <danahow@gmail.com> Dana How
 Daniel Barkalow <barkalow@iabervon.org>
+Daniel Trstenjak <daniel.trstenjak@gmail.com> <daniel.trstenjak@online.de>
+Daniel Trstenjak <daniel.trstenjak@gmail.com> <trsten@science-computing.de>
 David Brown <git@davidb.org> <davidb@quicinc.com>
 David D. Kilzer <ddkilzer@kilzer.net>
 David Kågedal <davidk@lysator.liu.se>
@@ -65,11 +73,18 @@ J. Bruce Fields <bfields@citi.umich.edu> <bfields@fieldses.org>
 J. Bruce Fields <bfields@citi.umich.edu> <bfields@pig.linuxdev.us.dell.com>
 J. Bruce Fields <bfields@citi.umich.edu> <bfields@puzzle.fieldses.org>
 Jakub Narębski <jnareb@gmail.com>
+James Y Knight <jknight@itasoftware.com> <foom@fuhm.net>
+# The 2 following authors are probably the same person,
+# but both emails bounce.
+Jason McMullan <jason.mcmullan@timesys.com>
+Jason McMullan <mcmullan@netapp.com>
 Jason Riedy <ejr@eecs.berkeley.edu> <ejr@EECS.Berkeley.EDU>
 Jason Riedy <ejr@eecs.berkeley.edu> <ejr@cs.berkeley.edu>
 Jay Soffian <jaysoffian@gmail.com> <jaysoffian+git@gmail.com>
 Jeff King <peff@peff.net> <peff@github.com>
 Jeff Muizelaar <jmuizelaar@mozilla.com> <jeff@infidigm.net>
+Jens Axboe <axboe@kernel.dk> <axboe@suse.de>
+Jens Axboe <axboe@kernel.dk> <jens.axboe@oracle.com>
 Jim Meyering <jim@meyering.net> <meyering@redhat.com>
 Joachim Berdal Haga <cjhaga@fys.uio.no>
 Johannes Schindelin <Johannes.Schindelin@gmx.de> <johannes.schindelin@gmx.de>
@@ -92,8 +107,8 @@ Junio C Hamano <gitster@pobox.com> <junio@pobox.com>
 Junio C Hamano <gitster@pobox.com> <junio@twinsun.com>
 Junio C Hamano <gitster@pobox.com> <junkio@cox.net>
 Junio C Hamano <gitster@pobox.com> <junkio@twinsun.com>
-Karl Wiberg <kha@treskal.com> Karl Hasselström <kha@treskal.com>
-Karl Wiberg <kha@treskal.com> Karl Hasselström <kha@yoghurt.hemma.treskal.com>
+Karl Wiberg <kha@treskal.com> Karl  Hasselström
+Karl Wiberg <kha@treskal.com> <kha@yoghurt.hemma.treskal.com>
 Karsten Blees <blees@dcon.de> <karsten.blees@dcon.de>
 Karsten Blees <blees@dcon.de> <karsten.blees@gmail.com>
 Kay Sievers <kay.sievers@vrfy.org> <kay.sievers@suse.de>
@@ -141,7 +156,7 @@ Michele Ballabio <barra_cuda@katamail.com>
 Miklos Vajna <vmiklos@frugalware.org> <vmiklos@suse.cz>
 Namhyung Kim <namhyung@gmail.com> <namhyung.kim@lge.com>
 Namhyung Kim <namhyung@gmail.com> <namhyung@kernel.org>
-Nanako Shiraishi <nanako3@bluebottle.com>
+Nanako Shiraishi <nanako3@lavabit.com> <nanako3@bluebottle.com>
 Nanako Shiraishi <nanako3@lavabit.com>
 Nelson Elhage <nelhage@mit.edu> <nelhage@MIT.EDU>
 Nelson Elhage <nelhage@mit.edu> <nelhage@ksplice.com>
@@ -174,9 +189,12 @@ Robert Fitzsimons <robfitz@273k.net>
 Robert Shearman <robertshearman@gmail.com> <rob@codeweavers.com>
 Robert Zeh <robert.a.zeh@gmail.com>
 Robin Rosenberg <robin.rosenberg@dewire.com> <robin.rosenberg.lists@dewire.com>
+Rutger Nijlunsing <rutger.nijlunsing@gmail.com> <rutger@nospam.com>
+Rutger Nijlunsing <rutger.nijlunsing@gmail.com> <git@tux.tmfweb.nl>
 Ryan Anderson <ryan@michonline.com> <rda@google.com>
 Salikh Zakirov <salikh.zakirov@gmail.com> <Salikh.Zakirov@Intel.com>
 Sam Vilain <sam@vilain.net> <sam.vilain@catalyst.net.nz>
+Sam Vilain <sam@vilain.net> sam@vilain.net
 Santi Béjar <santi@agolina.net> <sbejar@gmail.com>
 Sean Estabrooks <seanlkml@sympatico.ca>
 Sebastian Schuberth <sschuberth@gmail.com> <sschuberth@visageimaging.com>
@@ -191,6 +209,7 @@ Stefan Sperling <stsp@elego.de> <stsp@stsp.name>
 Stephen Boyd <bebarino@gmail.com> <sboyd@codeaurora.org>
 Steven Drake <sdrake@xnet.co.nz> <sdrake@ihug.co.nz>
 Steven Grimm <koreth@midwinter.com> <sgrimm@sgrimm-mbp.local>
+Steven Grimm <koreth@midwinter.com> koreth@midwinter.com
 Steven Walter <stevenrwalter@gmail.com> <swalter@lexmark.com>
 Steven Walter <stevenrwalter@gmail.com> <swalter@lpdev.prtdev.lexmark.com>
 Sven Verdoolaege <skimo@kotnet.org> <Sven.Verdoolaege@cs.kuleuven.ac.be>
index 559d5f9ebf6fefe57b403327ed3e06942d0b822b..e5ca3b75d3778308ee1b7b20e3a86475244f7b96 100644 (file)
@@ -242,6 +242,14 @@ Writing Documentation:
  processed into HTML and manpages (e.g. git.html and git.1 in the
  same directory).
 
+ The documentation liberally mixes US and UK English (en_US/UK)
+ norms for spelling and grammar, which is somewhat unfortunate.
+ In an ideal world, it would have been better if it consistently
+ used only one and not the other, and we would have picked en_US
+ (if you wish to correct the English of some of the existing
+ documentation, please see the documentation-related advice in the
+ Documentation/SubmittingPatches file).
+
  Every user-visible change should be reflected in the documentation.
  The same general rule as for code applies -- imitate the existing
  conventions.  A few commented examples follow to provide reference
index b4f8737c5a494efeac5d8a901cb1bad46ba8c9f1..02f681b71051a9c964511d8f317b024f4bf1c74e 100644 (file)
@@ -198,9 +198,6 @@ UI, Workflows & Features
    response was to stash them and re-run).  This introduced a corner
    case breakage to "git am --abort" but it has been fixed.
 
- * Instead of typing four capital letters "HEAD", you can say "@" now,
-   e.g. "git log @".
-
  * "check-ignore" (new feature since 1.8.2) has been updated to work
    more like "check-attr" over bidi-pipes.
 
@@ -242,6 +239,13 @@ UI, Workflows & Features
 
 Performance, Internal Implementation, etc.
 
+ * On Cygwin, we used to use our own lstat(2) emulation that is
+   allegedly faster than the platform one in codepaths where some of
+   the information it returns did not matter, but it started to bite
+   us in a few codepaths where the trick it uses to cheat does show
+   breakages. This emulation has been removed and we use the native
+   lstat(2) emulation supplied by Cygwin now.
+
  * The function attributes extensions are used to catch mistakes in
    use of our own variadic functions that use NULL sentinel at the end
    (i.e. like execl(3)) and format strings (i.e. like printf(3)).
@@ -263,7 +267,7 @@ Performance, Internal Implementation, etc.
    been susceptible to lossage of refs under right conditions, which
    has been tightened up.
 
- * We read loose and packed rerferences in two steps, but after
+ * We read loose and packed references in two steps, but after
    deciding to read a loose ref but before actually opening it to read
    it, another process racing with us can unlink it, which would cause
    us to barf.  The codepath has been updated to retry when such a
@@ -365,12 +369,6 @@ details).
    the user to an unexpected place.
    (merge 3bed291 rr/rebase-checkout-reflog later to maint).
 
- * "git stash save", when your local change turns a tracked file into
-   a directory, has to remove files in that directory in order to
-   revert your working tree to a pristine state.  This will lose
-   untracked files in such a directory, and the command now requires
-   you to "--force" it.
-
  * The configuration variable column.ui was poorly documented.
    (merge 5e62cc1 rr/column-doc later to maint).
 
@@ -381,7 +379,7 @@ details).
 
  * "git apply" parsed patches that add new files, generated by
    programs other than Git, incorrectly.  This is an old breakage in
-   v1.7.11 and will need to be merged down to the maintanance tracks.
+   v1.7.11 and will need to be merged down to the maintenance tracks.
 
  * Older cURL wanted piece of memory we call it with to be stable, but
    we updated the auth material after handing it to a call.
diff --git a/Documentation/RelNotes/1.8.5.txt b/Documentation/RelNotes/1.8.5.txt
new file mode 100644 (file)
index 0000000..3b43a61
--- /dev/null
@@ -0,0 +1,130 @@
+Git v1.8.5 Release Notes
+========================
+
+Backward compatibility notes (for Git 2.0)
+------------------------------------------
+
+When "git push [$there]" does not say what to push, we have used the
+traditional "matching" semantics so far (all your branches were sent
+to the remote as long as there already are branches of the same name
+over there).  In Git 2.0, the default will change to the "simple"
+semantics that pushes:
+
+ - only the current branch to the branch with the same name, and only
+   when the current branch is set to integrate with that remote
+   branch, if you are pushing to the same remote as you fetch from; or
+
+ - only the current branch to the branch with the same name, if you
+   are pushing to a remote that is not where you usually fetch from.
+
+Use the user preference configuration variable "push.default" to
+change this.  If you are an old-timer who is used to the "matching"
+semantics, you can set the variable to "matching" to keep the
+traditional behaviour.  If you want to live in the future early, you
+can set it to "simple" today without waiting for Git 2.0.
+
+When "git add -u" (and "git add -A") is run inside a subdirectory and
+does not specify which paths to add on the command line, it
+will operate on the entire tree in Git 2.0 for consistency
+with "git commit -a" and other commands.  There will be no
+mechanism to make plain "git add -u" behave like "git add -u .".
+Current users of "git add -u" (without a pathspec) should start
+training their fingers to explicitly say "git add -u ."
+before Git 2.0 comes.  A warning is issued when these commands are
+run without a pathspec and when you have local changes outside the
+current directory, because the behaviour in Git 2.0 will be different
+from today's version in such a situation.
+
+In Git 2.0, "git add <path>" will behave as "git add -A <path>", so
+that "git add dir/" will notice paths you removed from the directory
+and record the removal.  Versions before Git 2.0, including this
+release, will keep ignoring removals, but the users who rely on this
+behaviour are encouraged to start using "git add --ignore-removal <path>"
+now before 2.0 is released.
+
+
+Updates since v1.8.4
+--------------------
+
+Foreign interfaces, subsystems and ports.
+
+ * remote-hg remote helper misbehaved when interacting with a local Hg
+   repository relative to the home directory, e.g. "clone hg::~/there".
+
+ * imap-send ported to OS X uses Apple's security framework instead of
+   OpenSSL one.
+
+ * Subversion 1.8.0 that was recently released breaks older subversion
+   clients coming over http/https in various ways.
+
+ * "git fast-import" treats an empty path given to "ls" as the root of
+   the tree.
+
+
+UI, Workflows & Features
+
+ * "git check-ignore -z" applied the NUL termination to both its input
+   (with --stdin) and its output, but "git check-attr -z" ignored the
+   option on the output side. Make both honor -z on the input and
+   output side the same way.
+
+ * "git whatchanged" may still be used by old timers, but mention of
+   it in documents meant for new users will only waste readers' time
+   wonderig what the difference is between it and "git log".  Make it
+   less prominent in the general part of the documentation and explain
+   that it is merely a "git log" with different default behaviour in
+   its own document.
+
+
+Performance, Internal Implementation, etc.
+
+ * Many commands use --dashed-option as a operation mode selector
+   (e.g. "git tag --delete") that the user can use at most one
+   (e.g. "git tag --delete --verify" is a nonsense) and you cannot
+   negate (e.g. "git tag --no-delete" is a nonsense).  parse-options
+   API learned a new OPT_CMDMODE macro to make it easier to implement
+   such a set of options.
+
+ * OPT_BOOLEAN() in parse-options API was misdesigned to be "counting
+   up" but many subcommands expect it to behave as "on/off". Update
+   them to use OPT_BOOL() which is a proper boolean.
+
+ * "git gc" exits early without doing a double-work when it detects
+   that another instance of itself is already running.
+
+ * Under memory pressure and/or file descriptor pressure, we used to
+   close pack windows that are not used and also closed filehandle to
+   an open but unused packfiles. These are now controlled separately
+   to better cope with the load.
+
+Also contains various documentation updates and code clean-ups.
+
+
+Fixes since v1.8.4
+------------------
+
+Unless otherwise noted, all the fixes since v1.8.4 in the maintenance
+track are contained in this release (see release notes to them for
+details).
+
+ * Setting submodule.*.path configuration variable to true (without
+   giving "= value") caused Git to segfault.
+   (merge 4b05440 jl/some-submodule-config-are-not-boolean later to maint).
+
+ * "git rebase -i" (there could be others, as the root cause is pretty
+   generic) fed a random, data dependeant string to 'echo' and
+   expects it to come out literally, corrupting its error message.
+   (merge 89b0230 mm/no-shell-escape-in-die-message later to maint).
+
+ * Some people still use rather old versions of bash, which cannot
+   grok some constructs like 'printf -v varname' the prompt and
+   completion code started to use recently.
+   (merge a44aa69 bc/completion-for-bash-3.0 later to maint).
+
+ * Code to read configuration from a blob object did not compile on
+   platforms with fgetc() etc. implemented as macros.
+   (merge 49d6cfa hv/config-from-blob later to maint-1.8.3).
+
+ * The recent "short-cut clone connectivity check" topic broke a
+   shallow repository when a fetch operation tries to auto-follow tags.
+   (merge 6da8bdc nd/fetch-pack-shallow-fix later to maint-1.8.3).
index d0a4733e456777d97555ffd475799b468dc8b9de..705557689d7fa46f88f936bb8c42471ffbfb052b 100644 (file)
@@ -65,7 +65,20 @@ feature does not trigger when it shouldn't.  Also make sure that the
 test suite passes after your commit.  Do not forget to update the
 documentation to describe the updated behaviour.
 
-Oh, another thing.  I am picky about whitespaces.  Make sure your
+Speaking of the documentation, it is currently a liberal mixture of US
+and UK English norms for spelling and grammar, which is somewhat
+unfortunate.  A huge patch that touches the files all over the place
+only to correct the inconsistency is not welcome, though.  Potential
+clashes with other changes that can result from such a patch are not
+worth it.  We prefer to gradually reconcile the inconsistencies in
+favor of US English, with small and easily digestible patches, as a
+side effect of doing some other real work in the vicinity (e.g.
+rewriting a paragraph for clarity, while turning en_UK spelling to
+en_US).  Obvious typographical fixes are much more welcomed ("teh ->
+"the"), preferably submitted as independent patches separate from
+other documentation changes.
+
+Oh, another thing.  We are picky about whitespaces.  Make sure your
 changes do not trigger errors with the sample pre-commit hook shipped
 in templates/hooks--pre-commit.  To help ensure this does not happen,
 run git diff --check on your changes before you commit.
index ec57a15ac5da284f35ced4441e2315fec9b05e2d..e8eadde30577dd7a08ef412d24f857638ff47880 100644 (file)
@@ -1061,6 +1061,10 @@ fetch.unpackLimit::
        especially on slow filesystems.  If not set, the value of
        `transfer.unpackLimit` is used instead.
 
+fetch.prune::
+       If true, fetch will automatically behave as if the `--prune`
+       option was given on the command line.  See also `remote.<name>.prune`.
+
 format.attach::
        Enable multipart/mixed attachments as the default for
        'format-patch'.  The value can also be a double quoted string
@@ -1445,7 +1449,11 @@ http.cookiefile::
        of the file to read cookies from should be plain HTTP headers or
        the Netscape/Mozilla cookie file format (see linkgit:curl[1]).
        NOTE that the file specified with http.cookiefile is only used as
-       input. No cookies will be stored in the file.
+       input unless http.saveCookies is set.
+
+http.savecookies::
+       If set, store cookies received during requests to the file specified by
+       http.cookiefile. Has no effect if http.cookiefile is unset.
 
 http.sslVerify::
        Whether to verify the SSL certificate when fetching or pushing
@@ -2024,6 +2032,12 @@ remote.<name>.vcs::
        Setting this to a value <vcs> will cause Git to interact with
        the remote with the git-remote-<vcs> helper.
 
+remote.<name>.prune::
+       When set to true, fetching from this remote by default will also
+       remove any remote-tracking branches which no longer exist on the
+       remote (as if the `--prune` option was give on the command line).
+       Overrides `fetch.prune` settings, if any.
+
 remotes.<group>::
        The list of remotes which are fetched by "git remote update
        <group>".  See linkgit:git-remote[1].
index 10fbc6a373758437f23ef80245b3bd9e164add1f..21cffe2bcd0d5907efda9d525228e3f78a5cff65 100644 (file)
@@ -86,10 +86,9 @@ BATCH OUTPUT
 ------------
 
 If `--batch` or `--batch-check` is given, `cat-file` will read objects
-from stdin, one per line, and print information about them.
-
-Each line is considered as a whole object name, and is parsed as if
-given to linkgit:git-rev-parse[1].
+from stdin, one per line, and print information about them. By default,
+the whole line is considered as an object, as if it were fed to
+linkgit:git-rev-parse[1].
 
 You can specify the information shown for each object by using a custom
 `<format>`. The `<format>` is copied literally to stdout for each
@@ -110,6 +109,13 @@ newline. The available atoms are:
        The size, in bytes, that the object takes up on disk. See the
        note about on-disk sizes in the `CAVEATS` section below.
 
+`rest`::
+       If this atom is used in the output string, input lines are split
+       at the first whitespace boundary. All characters before that
+       whitespace are considered to be the object name; characters
+       after that first run of whitespace (i.e., the "rest" of the
+       line) are output in place of the `%(rest)` atom.
+
 If no format is specified, the default format is `%(objectname)
 %(objecttype) %(objectsize)`.
 
index a7be80d48bf6fd6928186116f00f3b48cf564041..00e2aa2df259d449602f59cbec33599346ebd8a0 100644 (file)
@@ -31,8 +31,9 @@ OPTIONS
        Read file names from stdin instead of from the command-line.
 
 -z::
-       Only meaningful with `--stdin`; paths are separated with a
-       NUL character instead of a linefeed character.
+       The output format is modified to be machine-parseable.
+       If `--stdin` is also given, input paths are separated
+       with a NUL character instead of a linefeed character.
 
 \--::
        Interpret all preceding arguments as attributes and all following
@@ -48,6 +49,10 @@ OUTPUT
 The output is of the form:
 <path> COLON SP <attribute> COLON SP <info> LF
 
+unless `-z` is in effect, in which case NUL is used as delimiter:
+<path> NUL <attribute> NUL <info> NUL
+
+
 <path> is the path of a file being queried, <attribute> is an attribute
 being queried and <info> can be either:
 
index fc02959ba4ab1ae6acc3dc5f707e870e42144f1c..a49be1bab49ddcdb65e4b45b578bd183a94657a5 100644 (file)
@@ -54,8 +54,6 @@ Git imposes the following rules on how references are named:
 
 . They cannot contain a sequence `@{`.
 
-. They cannot be the single character `@`.
-
 . They cannot contain a `\`.
 
 These rules make it easy for shell script based tools to parse
index 1e717543470c0440a72812a046bcadf0e52e4953..444b805d350a6111d56b53d19fe155eb7b79038b 100644 (file)
@@ -90,6 +90,10 @@ be in a separate packet, and the list must end with a flush packet.
 --no-progress::
        Do not show the progress.
 
+--check-self-contained-and-connected::
+       Output "connectivity-ok" if the received pack is
+       self-contained and connected.
+
 -v::
        Run verbosely.
 
index e394276b1a2e2edfbbf8ab1dea9fcd30ca66e61f..9e0ef0eaf32f8861ba7090ae2feb6188c2c2f0b7 100644 (file)
@@ -242,6 +242,7 @@ configuration options in linkgit:git-notes[1] to use this workflow).
 Note that the leading character does not have to be a dot; for example,
 you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`.
 
+-q::
 --quiet::
        Do not print the names of the generated files to standard output.
 
index 2402ed68280ded314c340e394da64b3372038113..e158a3b31fce6b7573a3f549a3d9e0ecbf1cdff2 100644 (file)
@@ -9,7 +9,7 @@ git-gc - Cleanup unnecessary files and optimize the local repository
 SYNOPSIS
 --------
 [verse]
-'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune]
+'git gc' [--aggressive] [--auto] [--quiet] [--prune=<date> | --no-prune] [--force]
 
 DESCRIPTION
 -----------
@@ -72,6 +72,10 @@ automatic consolidation of packs.
 --quiet::
        Suppress all progress reports.
 
+--force::
+       Force `git gc` to run even if there may be another `git gc`
+       instance running on this repository.
+
 Configuration
 -------------
 
index d7db2a3737fbdb032747bc6dd2740be1a56dfced..d2fc12ec77b85a5c9457cbfa160e5c05c1a32f43 100644 (file)
@@ -11,7 +11,7 @@ SYNOPSIS
 [verse]
 'git merge-file' [-L <current-name> [-L <base-name> [-L <other-name>]]]
        [--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
-       <current-file> <base-file> <other-file>
+       [--[no-]diff3] <current-file> <base-file> <other-file>
 
 
 DESCRIPTION
@@ -66,6 +66,9 @@ OPTIONS
 -q::
        Quiet; do not warn about conflicts.
 
+--diff3::
+       Show conflicts in "diff3" style.
+
 --ours::
 --theirs::
 --union::
index 8c7f2f66d86e5d41113d6158b496068cc6b72bce..a74c3713c6e60db404cbca5afeeebfe687012f58 100644 (file)
@@ -186,11 +186,11 @@ In such a case, you can "unwrap" the tag yourself before feeding it
 to `git merge`, or pass `--ff-only` when you do not have any work on
 your own. e.g.
 
----
+----
 git fetch origin
 git merge v1.2.3^0
 git merge --ff-only v1.2.3
----
+----
 
 
 HOW CONFLICTS ARE PRESENTED
index f7dfe48d2813324e1a699efa530afe8974d7c400..e2992f17a0e4e0e78630ee8cbc1c723a70d855e2 100644 (file)
@@ -11,6 +11,7 @@ SYNOPSIS
 [verse]
 'git push' [--all | --mirror | --tags] [--follow-tags] [-n | --dry-run] [--receive-pack=<git-receive-pack>]
           [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose] [-u | --set-upstream]
+          [--force-with-lease[=<refname>[:<expect>]]]
           [--no-verify] [<repository> [<refspec>...]]
 
 DESCRIPTION
@@ -130,21 +131,75 @@ already exists on the remote side.
        repository over ssh, and you do not have the program in
        a directory on the default $PATH.
 
+--[no-]force-with-lease::
+--force-with-lease=<refname>::
+--force-with-lease=<refname>:<expect>::
+       Usually, "git push" refuses to update a remote ref that is
+       not an ancestor of the local ref used to overwrite it.
++
+This option bypasses the check, but instead requires that the
+current value of the ref to be the expected value.  "git push"
+fails otherwise.
++
+Imagine that you have to rebase what you have already published.
+You will have to bypass the "must fast-forward" rule in order to
+replace the history you originally published with the rebased history.
+If somebody else built on top of your original history while you are
+rebasing, the tip of the branch at the remote may advance with her
+commit, and blindly pushing with `--force` will lose her work.
++
+This option allows you to say that you expect the history you are
+updating is what you rebased and want to replace. If the remote ref
+still points at the commit you specified, you can be sure that no
+other people did anything to the ref (it is like taking a "lease" on
+the ref without explicitly locking it, and you update the ref while
+making sure that your earlier "lease" is still valid).
++
+`--force-with-lease` alone, without specifying the details, will protect
+all remote refs that are going to be updated by requiring their
+current value to be the same as the remote-tracking branch we have
+for them, unless specified with a `--force-with-lease=<refname>:<expect>`
+option that explicitly states what the expected value is.
++
+`--force-with-lease=<refname>`, without specifying the expected value, will
+protect the named ref (alone), if it is going to be updated, by
+requiring its current value to be the same as the remote-tracking
+branch we have for it.
++
+`--force-with-lease=<refname>:<expect>` will protect the named ref (alone),
+if it is going to be updated, by requiring its current value to be
+the same as the specified value <expect> (which is allowed to be
+different from the remote-tracking branch we have for the refname,
+or we do not even have to have such a remote-tracking branch when
+this form is used).
++
+Note that all forms other than `--force-with-lease=<refname>:<expect>`
+that specifies the expected current value of the ref explicitly are
+still experimental and their semantics may change as we gain experience
+with this feature.
++
+"--no-force-with-lease" will cancel all the previous --force-with-lease on the
+command line.
+
 -f::
 --force::
        Usually, the command refuses to update a remote ref that is
        not an ancestor of the local ref used to overwrite it.
-       This flag disables the check.  This can cause the
-       remote repository to lose commits; use it with care.
-       Note that `--force` applies to all the refs that are pushed,
-       hence using it with `push.default` set to `matching` or with
-       multiple push destinations configured with `remote.*.push`
-       may overwrite refs other than the current branch (including
-       local refs that are strictly behind their remote counterpart).
-       To force a push to only one branch, use a `+` in front of the
-       refspec to push (e.g `git push origin +master` to force a push
-       to the `master` branch). See the `<refspec>...` section above
-       for details.
+       Also, when `--force-with-lease` option is used, the command refuses
+       to update a remote ref whose current value does not match
+       what is expected.
++
+This flag disables these checks, and can cause the remote repository
+to lose commits; use it with care.
++
+Note that `--force` applies to all the refs that are pushed, hence
+using it with `push.default` set to `matching` or with multiple push
+destinations configured with `remote.*.push` may overwrite refs
+other than the current branch (including local refs that are
+strictly behind their remote counterpart).  To force a push to only
+one branch, use a `+` in front of the refspec to push (e.g `git push
+origin +master` to force a push to the `master` branch). See the
+`<refspec>...` section above for details.
 
 --repo=<repository>::
        This option is only relevant if no <repository> argument is
index 65ac27e0c9f1f7c8a0313314574831a546bb3862..045b37b82e7544ddb753cdec7ead2bc8d97ad1c8 100644 (file)
@@ -40,7 +40,7 @@ SYNOPSIS
             [ \--right-only ]
             [ \--cherry-mark ]
             [ \--cherry-pick ]
-            [ \--encoding[=<encoding>] ]
+            [ \--encoding=<encoding> ]
             [ \--(author|committer|grep)=<pattern> ]
             [ \--regexp-ignore-case | -i ]
             [ \--extended-regexp | -E ]
index 2b126c0a77f9901eea1ba5ac37a2fb2d66c4d21f..d068a653778d6713d6ab370379dadf0d6f754856 100644 (file)
@@ -24,9 +24,23 @@ distinguish between them.
 
 OPTIONS
 -------
+
+Operation Modes
+~~~~~~~~~~~~~~~
+
+Each of these options must appear first on the command line.
+
 --parseopt::
        Use 'git rev-parse' in option parsing mode (see PARSEOPT section below).
 
+--sq-quote::
+       Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE
+       section below). In contrast to the `--sq` option below, this
+       mode does only quoting. Nothing else is done to command input.
+
+Options for --parseopt
+~~~~~~~~~~~~~~~~~~~~~~
+
 --keep-dashdash::
        Only meaningful in `--parseopt` mode. Tells the option parser to echo
        out the first `--` met instead of skipping it.
@@ -36,10 +50,8 @@ OPTIONS
        the first non-option argument.  This can be used to parse sub-commands
        that take options themselves.
 
---sq-quote::
-       Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE
-       section below). In contrast to the `--sq` option below, this
-       mode does only quoting. Nothing else is done to command input.
+Options for Filtering
+~~~~~~~~~~~~~~~~~~~~~
 
 --revs-only::
        Do not output flags and parameters not meant for
@@ -55,6 +67,9 @@ OPTIONS
 --no-flags::
        Do not output flag parameters.
 
+Options for Output
+~~~~~~~~~~~~~~~~~~
+
 --default <arg>::
        If there is no parameter given by the user, use `<arg>`
        instead.
@@ -110,6 +125,17 @@ can be used.
        strip '{caret}' prefix from the object names that already have
        one.
 
+--abbrev-ref[=(strict|loose)]::
+       A non-ambiguous short name of the objects name.
+       The option core.warnAmbiguousRefs is used to select the strict
+       abbreviation mode.
+
+--short::
+--short=number::
+       Instead of outputting the full SHA-1 values of object names try to
+       abbreviate them to a shorter unique name. When no length is specified
+       7 is used. The minimum length is 4.
+
 --symbolic::
        Usually the object names are output in SHA-1 form (with
        possible '{caret}' prefix); this option makes them output in a
@@ -123,16 +149,8 @@ can be used.
        unfortunately named tag "master"), and show them as full
        refnames (e.g. "refs/heads/master").
 
---abbrev-ref[=(strict|loose)]::
-       A non-ambiguous short name of the objects name.
-       The option core.warnAmbiguousRefs is used to select the strict
-       abbreviation mode.
-
---disambiguate=<prefix>::
-       Show every object whose name begins with the given prefix.
-       The <prefix> must be at least 4 hexadecimal digits long to
-       avoid listing each and every object in the repository by
-       mistake.
+Options for Objects
+~~~~~~~~~~~~~~~~~~~
 
 --all::
        Show all refs found in `refs/`.
@@ -155,18 +173,20 @@ shown.  If the pattern does not contain a globbing character (`?`,
        character (`?`, `*`, or `[`), it is turned into a prefix
        match by appending `/*`.
 
---show-toplevel::
-       Show the absolute path of the top-level directory.
+--disambiguate=<prefix>::
+       Show every object whose name begins with the given prefix.
+       The <prefix> must be at least 4 hexadecimal digits long to
+       avoid listing each and every object in the repository by
+       mistake.
 
---show-prefix::
-       When the command is invoked from a subdirectory, show the
-       path of the current directory relative to the top-level
-       directory.
+Options for Files
+~~~~~~~~~~~~~~~~~
 
---show-cdup::
-       When the command is invoked from a subdirectory, show the
-       path of the top-level directory relative to the current
-       directory (typically a sequence of "../", or an empty string).
+--local-env-vars::
+       List the GIT_* environment variables that are local to the
+       repository (e.g. GIT_DIR or GIT_WORK_TREE, but not GIT_EDITOR).
+       Only the names of the variables are listed, not their value,
+       even if they are set.
 
 --git-dir::
        Show `$GIT_DIR` if defined. Otherwise show the path to
@@ -188,17 +208,27 @@ print a message to stderr and exit with nonzero status.
 --is-bare-repository::
        When the repository is bare print "true", otherwise "false".
 
---local-env-vars::
-       List the GIT_* environment variables that are local to the
-       repository (e.g. GIT_DIR or GIT_WORK_TREE, but not GIT_EDITOR).
-       Only the names of the variables are listed, not their value,
-       even if they are set.
+--resolve-git-dir <path>::
+       Check if <path> is a valid repository or a gitfile that
+       points at a valid repository, and print the location of the
+       repository.  If <path> is a gitfile then the resolved path
+       to the real repository is printed.
 
---short::
---short=number::
-       Instead of outputting the full SHA-1 values of object names try to
-       abbreviate them to a shorter unique name. When no length is specified
-       7 is used. The minimum length is 4.
+--show-cdup::
+       When the command is invoked from a subdirectory, show the
+       path of the top-level directory relative to the current
+       directory (typically a sequence of "../", or an empty string).
+
+--show-prefix::
+       When the command is invoked from a subdirectory, show the
+       path of the current directory relative to the top-level
+       directory.
+
+--show-toplevel::
+       Show the absolute path of the top-level directory.
+
+Other Options
+~~~~~~~~~~~~~
 
 --since=datestring::
 --after=datestring::
@@ -213,12 +243,6 @@ print a message to stderr and exit with nonzero status.
 <args>...::
        Flags and parameters to be parsed.
 
---resolve-git-dir <path>::
-       Check if <path> is a valid repository or a gitfile that
-       points at a valid repository, and print the location of the
-       repository.  If <path> is a gitfile then the resolved path
-       to the real repository is printed.
-
 
 include::revisions.txt[]
 
index 7c8b648fbe8f76d523f781699447586c838b12fc..db7e803038090510609a6534ab7d086245c15270 100644 (file)
@@ -14,8 +14,7 @@ SYNOPSIS
 'git stash' ( pop | apply ) [--index] [-q|--quiet] [<stash>]
 'git stash' branch <branchname> [<stash>]
 'git stash' [save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
-            [-u|--include-untracked] [-a|--all] [-f|--force]
-            [<message>]]
+            [-u|--include-untracked] [-a|--all] [<message>]]
 'git stash' clear
 'git stash' create [<message>]
 'git stash' store [-m|--message <message>] [-q|--quiet] <commit>
@@ -45,7 +44,7 @@ is also possible).
 OPTIONS
 -------
 
-save [-p|--patch] [--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-f|--force] [<message>]::
+save [-p|--patch] [--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [<message>]::
 
        Save your local modifications to a new 'stash', and run `git reset
        --hard` to revert them.  The <message> part is optional and gives
@@ -72,13 +71,6 @@ linkgit:git-add[1] to learn how to operate the `--patch` mode.
 +
 The `--patch` option implies `--keep-index`.  You can use
 `--no-keep-index` to override this.
-+
-In some cases, saving a stash could mean irretrievably removing some
-data - if a directory with untracked files replaces a tracked file of
-the same name, the new untracked files are not saved (except in case
-of `--include-untracked`) but the original tracked file shall be restored.
-By default, `stash save` will abort in such a case; `--force` will allow
-it to remove the untracked files.
 
 list [<options>]::
 
index aad452f1697b92713a032c36bf40477c51008f04..4dd3bcb5117f31a76281ef09847b0171cdbf9b80 100644 (file)
@@ -256,7 +256,7 @@ first have already been pushed into SVN.
        For each patch, one may answer "yes" (accept this patch), "no" (discard this
        patch), "all" (accept all patches), or "quit".
        +
-       'git svn dcommit' returns immediately if answer if "no" or "quit", without
+       'git svn dcommit' returns immediately if answer is "no" or "quit", without
        committing anything to SVN.
 
 'branch'::
index c600b61e2b62013366476807c733837c0e854165..8b63ceb00e71a5e2f09cf7686b0978dcf71d1e03 100644 (file)
@@ -13,43 +13,17 @@ SYNOPSIS
 
 DESCRIPTION
 -----------
-Shows commit logs and diff output each commit introduces.  The
-command internally invokes 'git rev-list' piped to
-'git diff-tree', and takes command line options for both of
-these commands.
 
-This manual page describes only the most frequently used options.
+Shows commit logs and diff output each commit introduces.
 
+New users are encouraged to use linkgit:git-log[1] instead.  The
+`whatchanged` command is essentially the same as linkgit:git-log[1]
+but defaults to show the raw format diff output and to skip merges.
 
-OPTIONS
--------
--p::
-       Show textual diffs, instead of the Git internal diff
-       output format that is useful only to tell the changed
-       paths and their nature of changes.
+The command is kept primarily for historical reasons; fingers of
+many people who learned Git long before `git log` was invented by
+reading Linux kernel mailing list are trained to type it.
 
--<n>::
-       Limit output to <n> commits.
-
-<since>..<until>::
-       Limit output to between the two named commits (bottom
-       exclusive, top inclusive).
-
--r::
-       Show Git internal diff output, but for the whole tree,
-       not just the top level.
-
--m::
-       By default, differences for merge commits are not shown.
-       With this flag, show differences to that commit from all
-       of its parents.
-+
-However, it is not very useful in general, although it
-*is* useful on a file-by-file basis.
-
-include::pretty-options.txt[]
-
-include::pretty-formats.txt[]
 
 Examples
 --------
index 3bdd56e8f41bbe1fa695c5ef03a7c6d253e7af62..83edf308b1f7b9779bfc409ab518a812eb231275 100644 (file)
@@ -43,6 +43,11 @@ unreleased) version of Git, that is available from 'master'
 branch of the `git.git` repository.
 Documentation for older releases are available here:
 
+* link:v1.8.4/git.html[documentation for release 1.8.4]
+
+* release notes for
+  link:RelNotes/1.8.4.txt[1.8.4].
+
 * link:v1.8.3.4/git.html[documentation for release 1.8.3.4]
 
 * release notes for
@@ -818,7 +823,7 @@ for further details.
 'GIT_FLUSH'::
        If this environment variable is set to "1", then commands such
        as 'git blame' (in incremental mode), 'git rev-list', 'git log',
-       'git check-attr', 'git check-ignore', and 'git whatchanged' will
+       'git check-attr' and 'git check-ignore' will
        force a flush of the output stream after each record have been
        flushed. If this
        variable is set to "0", the output of these commands will be done
index f538a870c72dec8a022c23d5023cf5252e9925cf..058a3529809e41dfaf29dc510c2cb626dedb5402 100644 (file)
@@ -534,42 +534,9 @@ all, but just show the actual commit message.
 
 In fact, together with the 'git rev-list' program (which generates a
 list of revisions), 'git diff-tree' ends up being a veritable fount of
-changes. A trivial (but very useful) script called 'git whatchanged' is
-included with Git which does exactly this, and shows a log of recent
-activities.
-
-To see the whole history of our pitiful little git-tutorial project, you
-can do
-
-----------------
-$ git log
-----------------
-
-which shows just the log messages, or if we want to see the log together
-with the associated patches use the more complex (and much more
-powerful)
-
-----------------
-$ git whatchanged -p
-----------------
-
-and you will see exactly what has changed in the repository over its
-short history.
-
-[NOTE]
-When using the above two commands, the initial commit will be shown.
-If this is a problem because it is huge, you can hide it by setting
-the log.showroot configuration variable to false. Having this, you
-can still show it for each command just adding the `--root` option,
-which is a flag for 'git diff-tree' accepted by both commands.
-
-With that, you should now be having some inkling of what Git does, and
-can explore on your own.
-
-[NOTE]
-Most likely, you are not directly using the core
-Git Plumbing commands, but using Porcelain such as 'git add', `git-rm'
-and `git-commit'.
+changes.  You can emulate `git log`, `git log -p`, etc. with a trivial
+script that pipes the output of `git rev-list` to `git diff-tree --stdin`,
+which was exactly how early versions of `git log` were implemented.
 
 
 Tagging a version
index 0827f691396ba698d3976eba1eddedd9e7ff3e9e..bc069c23df85ae200d8b21fdf9a4662c72152377 100644 (file)
@@ -143,6 +143,10 @@ Supported commands: 'list', 'fetch'.
 +
 Supported commands: 'list', 'import'.
 
+'check-connectivity'::
+       Can guarantee that when a clone is requested, the received
+       pack is self contained and is connected.
+
 If a helper advertises 'connect', Git will use it if possible and
 fall back to another capability if the helper requests so when
 connecting (see the 'connect' command under COMMANDS).
@@ -270,6 +274,9 @@ Optionally may output a 'lock <file>' line indicating a file under
 GIT_DIR/objects/pack which is keeping a pack until refs can be
 suitably updated.
 +
+If option 'check-connectivity' is requested, the helper must output
+'connectivity-ok' if the clone is self-contained and connected.
++
 Supported if the helper has the "fetch" capability.
 
 'push' +<src>:<dst>::
@@ -416,6 +423,9 @@ set by Git if the remote helper has the 'option' capability.
        must not rely on this option being set before
        connect request occurs.
 
+'option check-connectivity' \{'true'|'false'\}::
+       Request the helper to check connectivity of a clone.
+
 SEE ALSO
 --------
 linkgit:git-remote[1]
index 5e499421a43526e133c7bd3be134da803b35c00d..eea0e306a83834e75f44c1b932e5a7747195f85c 100644 (file)
@@ -28,7 +28,7 @@ people using 80-column terminals.
        This is a shorthand for "--pretty=oneline --abbrev-commit"
        used together.
 
---encoding[=<encoding>]::
+--encoding=<encoding>::
        The commit objects record the encoding used for the log message
        in their encoding header; this option can be used to tell the
        command to re-code the commit log message in the encoding
index 27f8de3d8616d831e4a5b6d9ae7ab22e8ad12115..5bdfb4285247770722434541700b0f7547e3a113 100644 (file)
@@ -119,7 +119,7 @@ if it is part of the log message.
 --no-min-parents::
 --no-max-parents::
 
-       Show only commits which have at least (or at most) that many
+       Show only commits which have at least (or at most) that many parent
        commits. In particular, `--max-parents=1` is the same as `--no-merges`,
        `--min-parents=2` is the same as `--merges`.  `--max-parents=0`
        gives all root commits and `--min-parents=3` all octopus merges.
index 09896a37b1a7b735b0defc9d2c7eb2a14cc713ab..d477b3f6bcb2c410952b573421d28189d1d1a790 100644 (file)
@@ -58,9 +58,6 @@ the '$GIT_DIR/refs' directory or from the '$GIT_DIR/packed-refs' file.
 While the ref name encoding is unspecified, UTF-8 is preferred as
 some output processing may assume ref names in UTF-8.
 
-'@'::
-  '@' alone is a shortcut for 'HEAD'.
-
 '<refname>@\{<date>\}', e.g. 'master@\{yesterday\}', 'HEAD@\{5 minutes ago\}'::
   A ref followed by the suffix '@' with a date specification
   enclosed in a brace
diff --git a/Documentation/technical/http-protocol.txt b/Documentation/technical/http-protocol.txt
new file mode 100644 (file)
index 0000000..a1173ee
--- /dev/null
@@ -0,0 +1,503 @@
+HTTP transfer protocols
+=======================
+
+Git supports two HTTP based transfer protocols.  A "dumb" protocol
+which requires only a standard HTTP server on the server end of the
+connection, and a "smart" protocol which requires a Git aware CGI
+(or server module).  This document describes both protocols.
+
+As a design feature smart clients can automatically upgrade "dumb"
+protocol URLs to smart URLs.  This permits all users to have the
+same published URL, and the peers automatically select the most
+efficient transport available to them.
+
+
+URL Format
+----------
+
+URLs for Git repositories accessed by HTTP use the standard HTTP
+URL syntax documented by RFC 1738, so they are of the form:
+
+  http://<host>:<port>/<path>?<searchpart>
+
+Within this documentation the placeholder $GIT_URL will stand for
+the http:// repository URL entered by the end-user.
+
+Servers SHOULD handle all requests to locations matching $GIT_URL, as
+both the "smart" and "dumb" HTTP protocols used by Git operate
+by appending additional path components onto the end of the user
+supplied $GIT_URL string.
+
+An example of a dumb client requesting for a loose object:
+
+  $GIT_URL:     http://example.com:8080/git/repo.git
+  URL request:  http://example.com:8080/git/repo.git/objects/d0/49f6c27a2244e12041955e262a404c7faba355
+
+An example of a smart request to a catch-all gateway:
+
+  $GIT_URL:     http://example.com/daemon.cgi?svc=git&q=
+  URL request:  http://example.com/daemon.cgi?svc=git&q=/info/refs&service=git-receive-pack
+
+An example of a request to a submodule:
+
+  $GIT_URL:     http://example.com/git/repo.git/path/submodule.git
+  URL request:  http://example.com/git/repo.git/path/submodule.git/info/refs
+
+Clients MUST strip a trailing '/', if present, from the user supplied
+$GIT_URL string to prevent empty path tokens ('//') from appearing
+in any URL sent to a server.  Compatible clients MUST expand
+'$GIT_URL/info/refs' as 'foo/info/refs' and not 'foo//info/refs'.
+
+
+Authentication
+--------------
+
+Standard HTTP authentication is used if authentication is required
+to access a repository, and MAY be configured and enforced by the
+HTTP server software.
+
+Because Git repositories are accessed by standard path components
+server administrators MAY use directory based permissions within
+their HTTP server to control repository access.
+
+Clients SHOULD support Basic authentication as described by RFC 2616.
+Servers SHOULD support Basic authentication by relying upon the
+HTTP server placed in front of the Git server software.
+
+Servers SHOULD NOT require HTTP cookies for the purposes of
+authentication or access control.
+
+Clients and servers MAY support other common forms of HTTP based
+authentication, such as Digest authentication.
+
+
+SSL
+---
+
+Clients and servers SHOULD support SSL, particularly to protect
+passwords when relying on Basic HTTP authentication.
+
+
+Session State
+-------------
+
+The Git over HTTP protocol (much like HTTP itself) is stateless
+from the perspective of the HTTP server side.  All state MUST be
+retained and managed by the client process.  This permits simple
+round-robin load-balancing on the server side, without needing to
+worry about state management.
+
+Clients MUST NOT require state management on the server side in
+order to function correctly.
+
+Servers MUST NOT require HTTP cookies in order to function correctly.
+Clients MAY store and forward HTTP cookies during request processing
+as described by RFC 2616 (HTTP/1.1).  Servers SHOULD ignore any
+cookies sent by a client.
+
+
+General Request Processing
+--------------------------
+
+Except where noted, all standard HTTP behavior SHOULD be assumed
+by both client and server.  This includes (but is not necessarily
+limited to):
+
+If there is no repository at $GIT_URL, or the resource pointed to by a
+location matching $GIT_URL does not exist, the server MUST NOT respond
+with '200 OK' response.  A server SHOULD respond with
+'404 Not Found', '410 Gone', or any other suitable HTTP status code
+which does not imply the resource exists as requested.
+
+If there is a repository at $GIT_URL, but access is not currently
+permitted, the server MUST respond with the '403 Forbidden' HTTP
+status code.
+
+Servers SHOULD support both HTTP 1.0 and HTTP 1.1.
+Servers SHOULD support chunked encoding for both request and response
+bodies.
+
+Clients SHOULD support both HTTP 1.0 and HTTP 1.1.
+Clients SHOULD support chunked encoding for both request and response
+bodies.
+
+Servers MAY return ETag and/or Last-Modified headers.
+
+Clients MAY revalidate cached entities by including If-Modified-Since
+and/or If-None-Match request headers.
+
+Servers MAY return '304 Not Modified' if the relevant headers appear
+in the request and the entity has not changed.  Clients MUST treat
+'304 Not Modified' identical to '200 OK' by reusing the cached entity.
+
+Clients MAY reuse a cached entity without revalidation if the
+Cache-Control and/or Expires header permits caching.  Clients and
+servers MUST follow RFC 2616 for cache controls.
+
+
+Discovering References
+----------------------
+
+All HTTP clients MUST begin either a fetch or a push exchange by
+discovering the references available on the remote repository.
+
+Dumb Clients
+~~~~~~~~~~~~
+
+HTTP clients that only support the "dumb" protocol MUST discover
+references by making a request for the special info/refs file of
+the repository.
+
+Dumb HTTP clients MUST make a GET request to $GIT_URL/info/refs,
+without any search/query parameters.
+
+   C: GET $GIT_URL/info/refs HTTP/1.0
+
+   S: 200 OK
+   S:
+   S: 95dcfa3633004da0049d3d0fa03f80589cbcaf31 refs/heads/maint
+   S: d049f6c27a2244e12041955e262a404c7faba355 refs/heads/master
+   S: 2cb58b79488a98d2721cea644875a8dd0026b115 refs/tags/v1.0
+   S: a3c2e2402b99163d1d59756e5f207ae21cccba4c refs/tags/v1.0^{}
+
+The Content-Type of the returned info/refs entity SHOULD be
+"text/plain; charset=utf-8", but MAY be any content type.
+Clients MUST NOT attempt to validate the returned Content-Type.
+Dumb servers MUST NOT return a return type starting with
+"application/x-git-".
+
+Cache-Control headers MAY be returned to disable caching of the
+returned entity.
+
+When examining the response clients SHOULD only examine the HTTP
+status code.  Valid responses are '200 OK', or '304 Not Modified'.
+
+The returned content is a UNIX formatted text file describing
+each ref and its known value.  The file SHOULD be sorted by name
+according to the C locale ordering.  The file SHOULD NOT include
+the default ref named 'HEAD'.
+
+  info_refs   =  *( ref_record )
+  ref_record  =  any_ref / peeled_ref
+
+  any_ref     =  obj-id HTAB refname LF
+  peeled_ref  =  obj-id HTAB refname LF
+                obj-id HTAB refname "^{}" LF
+
+Smart Clients
+~~~~~~~~~~~~~
+
+HTTP clients that support the "smart" protocol (or both the
+"smart" and "dumb" protocols) MUST discover references by making
+a parameterized request for the info/refs file of the repository.
+
+The request MUST contain exactly one query parameter,
+'service=$servicename', where $servicename MUST be the service
+name the client wishes to contact to complete the operation.
+The request MUST NOT contain additional query parameters.
+
+   C: GET $GIT_URL/info/refs?service=git-upload-pack HTTP/1.0
+
+   dumb server reply:
+   S: 200 OK
+   S:
+   S: 95dcfa3633004da0049d3d0fa03f80589cbcaf31 refs/heads/maint
+   S: d049f6c27a2244e12041955e262a404c7faba355 refs/heads/master
+   S: 2cb58b79488a98d2721cea644875a8dd0026b115 refs/tags/v1.0
+   S: a3c2e2402b99163d1d59756e5f207ae21cccba4c refs/tags/v1.0^{}
+
+   smart server reply:
+   S: 200 OK
+   S: Content-Type: application/x-git-upload-pack-advertisement
+   S: Cache-Control: no-cache
+   S:
+   S: 001e# service=git-upload-pack\n
+   S: 004895dcfa3633004da0049d3d0fa03f80589cbcaf31 refs/heads/maint\0multi_ack\n
+   S: 0042d049f6c27a2244e12041955e262a404c7faba355 refs/heads/master\n
+   S: 003c2cb58b79488a98d2721cea644875a8dd0026b115 refs/tags/v1.0\n
+   S: 003fa3c2e2402b99163d1d59756e5f207ae21cccba4c refs/tags/v1.0^{}\n
+
+Dumb Server Response
+^^^^^^^^^^^^^^^^^^^^
+Dumb servers MUST respond with the dumb server reply format.
+
+See the prior section under dumb clients for a more detailed
+description of the dumb server response.
+
+Smart Server Response
+^^^^^^^^^^^^^^^^^^^^^
+If the server does not recognize the requested service name, or the
+requested service name has been disabled by the server administrator,
+the server MUST respond with the '403 Forbidden' HTTP status code.
+
+Otherwise, smart servers MUST respond with the smart server reply
+format for the requested service name.
+
+Cache-Control headers SHOULD be used to disable caching of the
+returned entity.
+
+The Content-Type MUST be 'application/x-$servicename-advertisement'.
+Clients SHOULD fall back to the dumb protocol if another content
+type is returned.  When falling back to the dumb protocol clients
+SHOULD NOT make an additional request to $GIT_URL/info/refs, but
+instead SHOULD use the response already in hand.  Clients MUST NOT
+continue if they do not support the dumb protocol.
+
+Clients MUST validate the status code is either '200 OK' or
+'304 Not Modified'.
+
+Clients MUST validate the first five bytes of the response entity
+matches the regex "^[0-9a-f]{4}#".  If this test fails, clients
+MUST NOT continue.
+
+Clients MUST parse the entire response as a sequence of pkt-line
+records.
+
+Clients MUST verify the first pkt-line is "# service=$servicename".
+Servers MUST set $servicename to be the request parameter value.
+Servers SHOULD include an LF at the end of this line.
+Clients MUST ignore an LF at the end of the line.
+
+Servers MUST terminate the response with the magic "0000" end
+pkt-line marker.
+
+The returned response is a pkt-line stream describing each ref and
+its known value.  The stream SHOULD be sorted by name according to
+the C locale ordering.  The stream SHOULD include the default ref
+named 'HEAD' as the first ref.  The stream MUST include capability
+declarations behind a NUL on the first ref.
+
+  smart_reply     =  PKT-LINE("# service=$servicename" LF)
+                    ref_list
+                    "0000"
+  ref_list        =  empty_list / non_empty_list
+
+  empty_list      =  PKT-LINE(zero-id SP "capabilities^{}" NUL cap-list LF)
+
+  non_empty_list  =  PKT-LINE(obj-id SP name NUL cap_list LF)
+                    *ref_record
+
+  cap-list        =  capability *(SP capability)
+  capability      =  1*(LC_ALPHA / DIGIT / "-" / "_")
+  LC_ALPHA        =  %x61-7A
+
+  ref_record      =  any_ref / peeled_ref
+  any_ref         =  PKT-LINE(obj-id SP name LF)
+  peeled_ref      =  PKT-LINE(obj-id SP name LF)
+                    PKT-LINE(obj-id SP name "^{}" LF
+
+Smart Service git-upload-pack
+------------------------------
+This service reads from the repository pointed to by $GIT_URL.
+
+Clients MUST first perform ref discovery with
+'$GIT_URL/info/refs?service=git-upload-pack'.
+
+   C: POST $GIT_URL/git-upload-pack HTTP/1.0
+   C: Content-Type: application/x-git-upload-pack-request
+   C:
+   C: 0032want 0a53e9ddeaddad63ad106860237bbf53411d11a7\n
+   C: 0032have 441b40d833fdfa93eb2908e52742248faf0ee993\n
+   C: 0000
+
+   S: 200 OK
+   S: Content-Type: application/x-git-upload-pack-result
+   S: Cache-Control: no-cache
+   S:
+   S: ....ACK %s, continue
+   S: ....NAK
+
+Clients MUST NOT reuse or revalidate a cached reponse.
+Servers MUST include sufficient Cache-Control headers
+to prevent caching of the response.
+
+Servers SHOULD support all capabilities defined here.
+
+Clients MUST send at least one 'want' command in the request body.
+Clients MUST NOT reference an id in a 'want' command which did not
+appear in the response obtained through ref discovery unless the
+server advertises capability "allow-tip-sha1-in-want".
+
+  compute_request   =  want_list
+                      have_list
+                      request_end
+  request_end       =  "0000" / "done"
+
+  want_list         =  PKT-LINE(want NUL cap_list LF)
+                      *(want_pkt)
+  want_pkt          =  PKT-LINE(want LF)
+  want              =  "want" SP id
+  cap_list          =  *(SP capability) SP
+
+  have_list         =  *PKT-LINE("have" SP id LF)
+
+TODO: Document this further.
+TODO: Don't use uppercase for variable names below.
+
+The Negotiation Algorithm
+~~~~~~~~~~~~~~~~~~~~~~~~~
+The computation to select the minimal pack proceeds as follows
+(c = client, s = server):
+
+ init step:
+ (c) Use ref discovery to obtain the advertised refs.
+ (c) Place any object seen into set ADVERTISED.
+
+ (c) Build an empty set, COMMON, to hold the objects that are later
+     determined to be on both ends.
+ (c) Build a set, WANT, of the objects from ADVERTISED the client
+     wants to fetch, based on what it saw during ref discovery.
+
+ (c) Start a queue, C_PENDING, ordered by commit time (popping newest
+     first).  Add all client refs.  When a commit is popped from
+     the queue its parents SHOULD be automatically inserted back.
+     Commits MUST only enter the queue once.
+
+ one compute step:
+ (c) Send one $GIT_URL/git-upload-pack request:
+
+   C: 0032want <WANT #1>...............................
+   C: 0032want <WANT #2>...............................
+   ....
+   C: 0032have <COMMON #1>.............................
+   C: 0032have <COMMON #2>.............................
+   ....
+   C: 0032have <HAVE #1>...............................
+   C: 0032have <HAVE #2>...............................
+   ....
+   C: 0000
+
+     The stream is organized into "commands", with each command
+     appearing by itself in a pkt-line.  Within a command line
+     the text leading up to the first space is the command name,
+     and the remainder of the line to the first LF is the value.
+     Command lines are terminated with an LF as the last byte of
+     the pkt-line value.
+
+     Commands MUST appear in the following order, if they appear
+     at all in the request stream:
+
+       * want
+       * have
+
+     The stream is terminated by a pkt-line flush ("0000").
+
+     A single "want" or "have" command MUST have one hex formatted
+     SHA-1 as its value.  Multiple SHA-1s MUST be sent by sending
+     multiple commands.
+
+     The HAVE list is created by popping the first 32 commits
+     from C_PENDING.  Less can be supplied if C_PENDING empties.
+
+     If the client has sent 256 HAVE commits and has not yet
+     received one of those back from S_COMMON, or the client has
+     emptied C_PENDING it SHOULD include a "done" command to let
+     the server know it won't proceed:
+
+   C: 0009done
+
+  (s) Parse the git-upload-pack request:
+
+      Verify all objects in WANT are directly reachable from refs.
+
+      The server MAY walk backwards through history or through
+      the reflog to permit slightly stale requests.
+
+      If no WANT objects are received, send an error:
+
+TODO: Define error if no want lines are requested.
+
+      If any WANT object is not reachable, send an error:
+
+TODO: Define error if an invalid want is requested.
+
+     Create an empty list, S_COMMON.
+
+     If 'have' was sent:
+
+     Loop through the objects in the order supplied by the client.
+     For each object, if the server has the object reachable from
+     a ref, add it to S_COMMON.  If a commit is added to S_COMMON,
+     do not add any ancestors, even if they also appear in HAVE.
+
+  (s) Send the git-upload-pack response:
+
+     If the server has found a closed set of objects to pack or the
+     request ends with "done", it replies with the pack.
+
+TODO: Document the pack based response
+   S: PACK...
+
+     The returned stream is the side-band-64k protocol supported
+     by the git-upload-pack service, and the pack is embedded into
+     stream 1.  Progress messages from the server side MAY appear
+     in stream 2.
+
+     Here a "closed set of objects" is defined to have at least
+     one path from every WANT to at least one COMMON object.
+
+     If the server needs more information, it replies with a
+     status continue response:
+
+TODO: Document the non-pack response
+
+  (c) Parse the upload-pack response:
+
+TODO: Document parsing response
+
+      Do another compute step.
+
+
+Smart Service git-receive-pack
+------------------------------
+This service reads from the repository pointed to by $GIT_URL.
+
+Clients MUST first perform ref discovery with
+'$GIT_URL/info/refs?service=git-receive-pack'.
+
+   C: POST $GIT_URL/git-receive-pack HTTP/1.0
+   C: Content-Type: application/x-git-receive-pack-request
+   C:
+   C: ....0a53e9ddeaddad63ad106860237bbf53411d11a7 441b40d833fdfa93eb2908e52742248faf0ee993 refs/heads/maint\0 report-status
+   C: 0000
+   C: PACK....
+
+   S: 200 OK
+   S: Content-Type: application/x-git-receive-pack-result
+   S: Cache-Control: no-cache
+   S:
+   S: ....
+
+Clients MUST NOT reuse or revalidate a cached reponse.
+Servers MUST include sufficient Cache-Control headers
+to prevent caching of the response.
+
+Servers SHOULD support all capabilities defined here.
+
+Clients MUST send at least one command in the request body.
+Within the command portion of the request body clients SHOULD send
+the id obtained through ref discovery as old_id.
+
+  update_request  =  command_list
+                    "PACK" <binary data>
+
+  command_list    =  PKT-LINE(command NUL cap_list LF)
+                    *(command_pkt)
+  command_pkt     =  PKT-LINE(command LF)
+  cap_list        =  *(SP capability) SP
+
+  command         =  create / delete / update
+  create          =  zero-id SP new_id SP name
+  delete          =  old_id SP zero-id SP name
+  update          =  old_id SP new_id SP name
+
+TODO: Document this further.
+
+
+References
+----------
+
+link:http://www.ietf.org/rfc/rfc1738.txt[RFC 1738: Uniform Resource Locators (URL)]
+link:http://www.ietf.org/rfc/rfc2616.txt[RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1]
+link:technical/pack-protocol.txt
+link:technical/protocol-capabilities.txt
index ede98a8c160d06cfa3068decfa765ae896792ef9..b444c18f176cb33a80a1378586d6fa54bccd112a 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=GIT-VERSION-FILE
-DEF_VER=v1.8.4-rc1
+DEF_VER=v1.8.4.GIT
 
 LF='
 '
index 3588ca1b6a575e8bb732dcc04b7c59dcb7f15cf4..7051956333422b5d355528568706e4a675d1a246 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1182,6 +1182,9 @@ ifdef NEEDS_SSL_WITH_CRYPTO
 else
        LIB_4_CRYPTO = $(OPENSSL_LINK) -lcrypto
 endif
+ifdef APPLE_COMMON_CRYPTO
+       LIB_4_CRYPTO += -framework Security -framework CoreFoundation
+endif
 endif
 ifdef NEEDS_LIBICONV
        ifdef ICONVDIR
index fce99fb79d16cbeb717ddbe36c7be231a00e4eba..61c3b54134d985cef6071014604d5b0499712df5 120000 (symlink)
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/1.8.4.txt
\ No newline at end of file
+Documentation/RelNotes/1.8.5.txt
\ No newline at end of file
index 50912c928f79cc0bcb4acf3ae50fd9fdc32193e8..ef32e4f62415956aa8e2366589d4cd6200d3bf37 100644 (file)
@@ -4363,23 +4363,23 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
                { OPTION_CALLBACK, 'p', NULL, NULL, N_("num"),
                        N_("remove <num> leading slashes from traditional diff paths"),
                        0, option_parse_p },
-               OPT_BOOLEAN(0, "no-add", &no_add,
+               OPT_BOOL(0, "no-add", &no_add,
                        N_("ignore additions made by the patch")),
-               OPT_BOOLEAN(0, "stat", &diffstat,
+               OPT_BOOL(0, "stat", &diffstat,
                        N_("instead of applying the patch, output diffstat for the input")),
                OPT_NOOP_NOARG(0, "allow-binary-replacement"),
                OPT_NOOP_NOARG(0, "binary"),
-               OPT_BOOLEAN(0, "numstat", &numstat,
+               OPT_BOOL(0, "numstat", &numstat,
                        N_("show number of added and deleted lines in decimal notation")),
-               OPT_BOOLEAN(0, "summary", &summary,
+               OPT_BOOL(0, "summary", &summary,
                        N_("instead of applying the patch, output a summary for the input")),
-               OPT_BOOLEAN(0, "check", &check,
+               OPT_BOOL(0, "check", &check,
                        N_("instead of applying the patch, see if the patch is applicable")),
-               OPT_BOOLEAN(0, "index", &check_index,
+               OPT_BOOL(0, "index", &check_index,
                        N_("make sure the patch is applicable to the current index")),
-               OPT_BOOLEAN(0, "cached", &cached,
+               OPT_BOOL(0, "cached", &cached,
                        N_("apply a patch without touching the working tree")),
-               OPT_BOOLEAN(0, "apply", &force_apply,
+               OPT_BOOL(0, "apply", &force_apply,
                        N_("also apply the patch (use with --stat/--summary/--check)")),
                OPT_BOOL('3', "3way", &threeway,
                         N_( "attempt three-way merge if a patch does not apply")),
@@ -4399,13 +4399,13 @@ int cmd_apply(int argc, const char **argv, const char *prefix_)
                { OPTION_CALLBACK, 0, "ignore-whitespace", NULL, NULL,
                        N_("ignore changes in whitespace when finding context"),
                        PARSE_OPT_NOARG, option_parse_space_change },
-               OPT_BOOLEAN('R', "reverse", &apply_in_reverse,
+               OPT_BOOL('R', "reverse", &apply_in_reverse,
                        N_("apply the patch in reverse")),
-               OPT_BOOLEAN(0, "unidiff-zero", &unidiff_zero,
+               OPT_BOOL(0, "unidiff-zero", &unidiff_zero,
                        N_("don't expect at least one line of context")),
-               OPT_BOOLEAN(0, "reject", &apply_with_reject,
+               OPT_BOOL(0, "reject", &apply_with_reject,
                        N_("leave the rejected hunks in corresponding *.rej files")),
-               OPT_BOOLEAN(0, "allow-overlap", &allow_overlap,
+               OPT_BOOL(0, "allow-overlap", &allow_overlap,
                        N_("allow overlapping hunks")),
                OPT__VERBOSE(&apply_verbosely, N_("be verbose")),
                OPT_BIT(0, "inaccurate-eof", &options,
index e3884e3bb61c7dfb0cd97ddba7bd0558b44c6b8f..3324229025300f7d7de600753c03af3ac22e2152 100644 (file)
@@ -13,10 +13,10 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
        int next_all = 0;
        int no_checkout = 0;
        struct option options[] = {
-               OPT_BOOLEAN(0, "next-all", &next_all,
-                           N_("perform 'git bisect next'")),
-               OPT_BOOLEAN(0, "no-checkout", &no_checkout,
-                           N_("update BISECT_HEAD instead of checking out the current commit")),
+               OPT_BOOL(0, "next-all", &next_all,
+                        N_("perform 'git bisect next'")),
+               OPT_BOOL(0, "no-checkout", &no_checkout,
+                        N_("update BISECT_HEAD instead of checking out the current commit")),
                OPT_END()
        };
 
index 1bf8056f6b2471d290f99a6615867646531f77b4..00927e0347ce884392bd51f8bc5d886248e3d6e4 100644 (file)
@@ -2251,10 +2251,10 @@ int cmd_blame(int argc, const char **argv, const char *prefix)
        static const char *revs_file = NULL;
        static const char *contents_from = NULL;
        static const struct option options[] = {
-               OPT_BOOLEAN(0, "incremental", &incremental, N_("Show blame entries as we find them, incrementally")),
-               OPT_BOOLEAN('b', NULL, &blank_boundary, N_("Show blank SHA-1 for boundary commits (Default: off)")),
-               OPT_BOOLEAN(0, "root", &show_root, N_("Do not treat root commits as boundaries (Default: off)")),
-               OPT_BOOLEAN(0, "show-stats", &show_stats, N_("Show work cost statistics")),
+               OPT_BOOL(0, "incremental", &incremental, N_("Show blame entries as we find them, incrementally")),
+               OPT_BOOL('b', NULL, &blank_boundary, N_("Show blank SHA-1 for boundary commits (Default: off)")),
+               OPT_BOOL(0, "root", &show_root, N_("Do not treat root commits as boundaries (Default: off)")),
+               OPT_BOOL(0, "show-stats", &show_stats, N_("Show work cost statistics")),
                OPT_BIT(0, "score-debug", &output_option, N_("Show output score for blame entries"), OUTPUT_SHOW_SCORE),
                OPT_BIT('f', "show-name", &output_option, N_("Show original filename (Default: auto)"), OUTPUT_SHOW_NAME),
                OPT_BIT('n', "show-number", &output_option, N_("Show original linenumber (Default: off)"), OUTPUT_SHOW_NUMBER),
index 083689063f66a614ad6f8ee4a84c79e214d1b6e0..0903763702a436dc8b3ffc89aa64b2598e257446 100644 (file)
@@ -797,7 +797,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                OPT_SET_INT( 0, "set-upstream",  &track, N_("change upstream info"),
                        BRANCH_TRACK_OVERRIDE),
                OPT_STRING('u', "set-upstream-to", &new_upstream, "upstream", "change the upstream info"),
-               OPT_BOOLEAN(0, "unset-upstream", &unset_upstream, "Unset the upstream info"),
+               OPT_BOOL(0, "unset-upstream", &unset_upstream, "Unset the upstream info"),
                OPT__COLOR(&branch_use_color, N_("use colored output")),
                OPT_SET_INT('r', "remotes",     &kinds, N_("act on remote-tracking branches"),
                        REF_REMOTE_BRANCH),
@@ -822,10 +822,10 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
                OPT_BIT('D', NULL, &delete, N_("delete branch (even if not merged)"), 2),
                OPT_BIT('m', "move", &rename, N_("move/rename a branch and its reflog"), 1),
                OPT_BIT('M', NULL, &rename, N_("move/rename a branch, even if target exists"), 2),
-               OPT_BOOLEAN(0, "list", &list, N_("list branch names")),
-               OPT_BOOLEAN('l', "create-reflog", &reflog, N_("create the branch's reflog")),
-               OPT_BOOLEAN(0, "edit-description", &edit_description,
-                           N_("edit the description for the branch")),
+               OPT_BOOL(0, "list", &list, N_("list branch names")),
+               OPT_BOOL('l', "create-reflog", &reflog, N_("create the branch's reflog")),
+               OPT_BOOL(0, "edit-description", &edit_description,
+                        N_("edit the description for the branch")),
                OPT__FORCE(&force_create, N_("force creation (when already exists)")),
                {
                        OPTION_CALLBACK, 0, "no-merged", &merge_filter_ref,
@@ -872,7 +872,8 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
        if (with_commit || merge_filter != NO_FILTER)
                list = 1;
 
-       if (!!delete + !!rename + !!force_create + !!list + !!new_upstream + !!unset_upstream > 1)
+       if (!!delete + !!rename + !!force_create + !!new_upstream +
+           list + unset_upstream > 1)
                usage_with_options(builtin_branch_usage, options);
 
        if (abbrev == -1)
index 425346048bbba66874eb857985bed9937c44e1d6..41afaa534b02d8f8089973f3949ba507bd3cf94b 100644 (file)
@@ -119,6 +119,7 @@ struct expand_data {
        enum object_type type;
        unsigned long size;
        unsigned long disk_size;
+       const char *rest;
 
        /*
         * If mark_query is true, we do not expand anything, but rather
@@ -126,6 +127,13 @@ struct expand_data {
         */
        int mark_query;
 
+       /*
+        * Whether to split the input on whitespace before feeding it to
+        * get_sha1; this is decided during the mark_query phase based on
+        * whether we have a %(rest) token in our format.
+        */
+       int split_on_whitespace;
+
        /*
         * After a mark_query run, this object_info is set up to be
         * passed to sha1_object_info_extended. It will point to the data
@@ -163,6 +171,11 @@ static void expand_atom(struct strbuf *sb, const char *atom, int len,
                        data->info.disk_sizep = &data->disk_size;
                else
                        strbuf_addf(sb, "%lu", data->disk_size);
+       } else if (is_atom("rest", atom, len)) {
+               if (data->mark_query)
+                       data->split_on_whitespace = 1;
+               else if (data->rest)
+                       strbuf_addstr(sb, data->rest);
        } else
                die("unknown format element: %.*s", len, atom);
 }
@@ -273,7 +286,23 @@ static int batch_objects(struct batch_options *opt)
        warn_on_object_refname_ambiguity = 0;
 
        while (strbuf_getline(&buf, stdin, '\n') != EOF) {
-               int error = batch_one_object(buf.buf, opt, &data);
+               int error;
+
+               if (data.split_on_whitespace) {
+                       /*
+                        * Split at first whitespace, tying off the beginning
+                        * of the string and saving the remainder (or NULL) in
+                        * data.rest.
+                        */
+                       char *p = strpbrk(buf.buf, " \t");
+                       if (p) {
+                               while (*p && strchr(" \t", *p))
+                                       *p++ = '\0';
+                       }
+                       data.rest = p;
+               }
+
+               error = batch_one_object(buf.buf, opt, &data);
                if (error)
                        return error;
        }
index 075d01d30c58d40abb48ff820ba6f8d310f785d0..e9af7b2bfb932d75cdface880be9814885068a50 100644 (file)
@@ -13,14 +13,14 @@ N_("git check-attr --stdin [-z] [-a | --all | attr...] < <list-of-paths>"),
 NULL
 };
 
-static int null_term_line;
+static int nul_term_line;
 
 static const struct option check_attr_options[] = {
-       OPT_BOOLEAN('a', "all", &all_attrs, N_("report all attributes set on file")),
-       OPT_BOOLEAN(0,  "cached", &cached_attrs, N_("use .gitattributes only from the index")),
-       OPT_BOOLEAN(0 , "stdin", &stdin_paths, N_("read file names from stdin")),
-       OPT_BOOLEAN('z', NULL, &null_term_line,
-               N_("input paths are terminated by a null character")),
+       OPT_BOOL('a', "all", &all_attrs, N_("report all attributes set on file")),
+       OPT_BOOL(0,  "cached", &cached_attrs, N_("use .gitattributes only from the index")),
+       OPT_BOOL(0 , "stdin", &stdin_paths, N_("read file names from stdin")),
+       OPT_BOOL('z', NULL, &nul_term_line,
+                N_("terminate input and output records by a NUL character")),
        OPT_END()
 };
 
@@ -38,8 +38,16 @@ static void output_attr(int cnt, struct git_attr_check *check,
                else if (ATTR_UNSET(value))
                        value = "unspecified";
 
-               quote_c_style(file, NULL, stdout, 0);
-               printf(": %s: %s\n", git_attr_name(check[j].attr), value);
+               if (nul_term_line) {
+                       printf("%s%c" /* path */
+                              "%s%c" /* attrname */
+                              "%s%c" /* attrvalue */,
+                              file, 0, git_attr_name(check[j].attr), 0, value, 0);
+               } else {
+                       quote_c_style(file, NULL, stdout, 0);
+                       printf(": %s: %s\n", git_attr_name(check[j].attr), value);
+               }
+
        }
 }
 
@@ -65,7 +73,7 @@ static void check_attr_stdin_paths(const char *prefix, int cnt,
        struct git_attr_check *check)
 {
        struct strbuf buf, nbuf;
-       int line_termination = null_term_line ? 0 : '\n';
+       int line_termination = nul_term_line ? 0 : '\n';
 
        strbuf_init(&buf, 0);
        strbuf_init(&nbuf, 0);
index 4a8fc707c747596e31dcc6f57abf5f965cdf612f..25aa2a5f4c7ff0d0394e4df8e5e761ae916055f6 100644 (file)
@@ -12,18 +12,18 @@ static const char * const check_ignore_usage[] = {
 NULL
 };
 
-static int null_term_line;
+static int nul_term_line;
 
 static const struct option check_ignore_options[] = {
        OPT__QUIET(&quiet, N_("suppress progress reporting")),
        OPT__VERBOSE(&verbose, N_("be verbose")),
        OPT_GROUP(""),
-       OPT_BOOLEAN(0, "stdin", &stdin_paths,
-                   N_("read file names from stdin")),
-       OPT_BOOLEAN('z', NULL, &null_term_line,
-                   N_("input paths are terminated by a null character")),
-       OPT_BOOLEAN('n', "non-matching", &show_non_matching,
-                   N_("show non-matching input paths")),
+       OPT_BOOL(0, "stdin", &stdin_paths,
+                N_("read file names from stdin")),
+       OPT_BOOL('z', NULL, &nul_term_line,
+                N_("terminate input and output records by a NUL character")),
+       OPT_BOOL('n', "non-matching", &show_non_matching,
+                N_("show non-matching input paths")),
        OPT_END()
 };
 
@@ -31,7 +31,7 @@ static void output_exclude(const char *path, struct exclude *exclude)
 {
        char *bang  = (exclude && exclude->flags & EXC_FLAG_NEGATIVE)  ? "!" : "";
        char *slash = (exclude && exclude->flags & EXC_FLAG_MUSTBEDIR) ? "/" : "";
-       if (!null_term_line) {
+       if (!nul_term_line) {
                if (!verbose) {
                        write_name_quoted(path, stdout, '\n');
                } else {
@@ -107,7 +107,7 @@ static int check_ignore_stdin_paths(struct dir_struct *dir, const char *prefix)
 {
        struct strbuf buf, nbuf;
        char *pathspec[2] = { NULL, NULL };
-       int line_termination = null_term_line ? 0 : '\n';
+       int line_termination = nul_term_line ? 0 : '\n';
        int num_ignored = 0;
 
        strbuf_init(&buf, 0);
@@ -142,7 +142,7 @@ int cmd_check_ignore(int argc, const char **argv, const char *prefix)
                if (argc > 0)
                        die(_("cannot specify pathnames with --stdin"));
        } else {
-               if (null_term_line)
+               if (nul_term_line)
                        die(_("-z only makes sense with --stdin"));
                if (argc == 0)
                        die(_("no path specified"));
index b1feda7d5ef34f45ed2de018a56149212b51ec0a..69e167b16c284534d84019ba0f781fe2c3a889dd 100644 (file)
@@ -183,12 +183,12 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
        int prefix_length;
        int force = 0, quiet = 0, not_new = 0;
        struct option builtin_checkout_index_options[] = {
-               OPT_BOOLEAN('a', "all", &all,
+               OPT_BOOL('a', "all", &all,
                        N_("check out all files in the index")),
                OPT__FORCE(&force, N_("force overwrite of existing files")),
                OPT__QUIET(&quiet,
                        N_("no warning for existing files and files not in index")),
-               OPT_BOOLEAN('n', "no-create", &not_new,
+               OPT_BOOL('n', "no-create", &not_new,
                        N_("don't checkout new files")),
                { OPTION_CALLBACK, 'u', "index", &newfd, NULL,
                        N_("update stat information in the index file"),
@@ -196,9 +196,9 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix)
                { OPTION_CALLBACK, 'z', NULL, NULL, NULL,
                        N_("paths are separated with NUL character"),
                        PARSE_OPT_NOARG, option_parse_z },
-               OPT_BOOLEAN(0, "stdin", &read_from_stdin,
+               OPT_BOOL(0, "stdin", &read_from_stdin,
                        N_("read list of paths from the standard input")),
-               OPT_BOOLEAN(0, "temp", &to_tempfile,
+               OPT_BOOL(0, "temp", &to_tempfile,
                        N_("write the content to temporary files")),
                OPT_CALLBACK(0, "prefix", NULL, N_("string"),
                        N_("when creating files, prepend <string>"),
index 7025938ae30f2ce3104b27f66bf6e1f294edb810..ed39cecf9a80e4e770684b7c5ceb2d117ffbb281 100644 (file)
@@ -228,8 +228,6 @@ static int checkout_paths(const struct checkout_opts *opts,
        int flag;
        struct commit *head;
        int errs = 0;
-       int stage = opts->writeout_stage;
-       int merge = opts->merge;
        int newfd;
        struct lock_file *lock_file;
 
@@ -327,8 +325,8 @@ static int checkout_paths(const struct checkout_opts *opts,
                                continue;
                        if (opts->force) {
                                warning(_("path '%s' is unmerged"), ce->name);
-                       } else if (stage) {
-                               errs |= check_stage(stage, ce, pos);
+                       } else if (opts->writeout_stage) {
+                               errs |= check_stage(opts->writeout_stage, ce, pos);
                        } else if (opts->merge) {
                                errs |= check_stages((1<<2) | (1<<3), ce, pos);
                        } else {
@@ -352,9 +350,9 @@ static int checkout_paths(const struct checkout_opts *opts,
                                errs |= checkout_entry(ce, &state, NULL);
                                continue;
                        }
-                       if (stage)
-                               errs |= checkout_stage(stage, ce, pos, &state);
-                       else if (merge)
+                       if (opts->writeout_stage)
+                               errs |= checkout_stage(opts->writeout_stage, ce, pos, &state);
+                       else if (opts->merge)
                                errs |= checkout_merged(pos, &state);
                        pos = skip_same_name(ce, pos) - 1;
                }
@@ -1056,8 +1054,8 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
                           N_("create and checkout a new branch")),
                OPT_STRING('B', NULL, &opts.new_branch_force, N_("branch"),
                           N_("create/reset and checkout a branch")),
-               OPT_BOOLEAN('l', NULL, &opts.new_branch_log, N_("create reflog for new branch")),
-               OPT_BOOLEAN(0, "detach", &opts.force_detach, N_("detach the HEAD at named commit")),
+               OPT_BOOL('l', NULL, &opts.new_branch_log, N_("create reflog for new branch")),
+               OPT_BOOL(0, "detach", &opts.force_detach, N_("detach the HEAD at named commit")),
                OPT_SET_INT('t', "track",  &opts.track, N_("set upstream info for new branch"),
                        BRANCH_TRACK_EXPLICIT),
                OPT_STRING(0, "orphan", &opts.new_orphan_branch, N_("new branch"), N_("new unparented branch")),
@@ -1066,16 +1064,15 @@ int cmd_checkout(int argc, const char **argv, const char *prefix)
                OPT_SET_INT('3', "theirs", &opts.writeout_stage, N_("checkout their version for unmerged files"),
                            3),
                OPT__FORCE(&opts.force, N_("force checkout (throw away local modifications)")),
-               OPT_BOOLEAN('m', "merge", &opts.merge, N_("perform a 3-way merge with the new branch")),
-               OPT_BOOLEAN(0, "overwrite-ignore", &opts.overwrite_ignore, N_("update ignored files (default)")),
+               OPT_BOOL('m', "merge", &opts.merge, N_("perform a 3-way merge with the new branch")),
+               OPT_BOOL(0, "overwrite-ignore", &opts.overwrite_ignore, N_("update ignored files (default)")),
                OPT_STRING(0, "conflict", &conflict_style, N_("style"),
                           N_("conflict style (merge or diff3)")),
-               OPT_BOOLEAN('p', "patch", &opts.patch_mode, N_("select hunks interactively")),
+               OPT_BOOL('p', "patch", &opts.patch_mode, N_("select hunks interactively")),
                OPT_BOOL(0, "ignore-skip-worktree-bits", &opts.ignore_skipworktree,
                         N_("do not limit pathspecs to sparse entries only")),
-               { OPTION_BOOLEAN, 0, "guess", &dwim_new_local_branch, NULL,
-                 N_("second guess 'git checkout no-such-branch'"),
-                 PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
+               OPT_HIDDEN_BOOL(0, "guess", &dwim_new_local_branch,
+                               N_("second guess 'git checkout no-such-branch'")),
                OPT_END(),
        };
 
index 3c85e152e140741855590f422c599407b6d6ae55..4b6fd42be7aeae55c71c7b79ee45fb73973ec0d5 100644 (file)
@@ -875,12 +875,12 @@ int cmd_clean(int argc, const char **argv, const char *prefix)
                OPT__DRY_RUN(&dry_run, N_("dry run")),
                OPT__FORCE(&force, N_("force")),
                OPT_BOOL('i', "interactive", &interactive, N_("interactive cleaning")),
-               OPT_BOOLEAN('d', NULL, &remove_directories,
+               OPT_BOOL('d', NULL, &remove_directories,
                                N_("remove whole directories")),
                { OPTION_CALLBACK, 'e', "exclude", &exclude_list, N_("pattern"),
                  N_("add <pattern> to ignore rules"), PARSE_OPT_NONEG, exclude_cb },
-               OPT_BOOLEAN('x', NULL, &ignored, N_("remove ignored files, too")),
-               OPT_BOOLEAN('X', NULL, &ignored_only,
+               OPT_BOOL('x', NULL, &ignored, N_("remove ignored files, too")),
+               OPT_BOOL('X', NULL, &ignored_only,
                                N_("remove only ignored files")),
                OPT_END()
        };
index 430307b298b4f9ea03ff4caea283b133fde0077e..ca3eb68d72b0ab9ee683eff3206d28012f27c4fc 100644 (file)
@@ -62,23 +62,22 @@ static struct option builtin_clone_options[] = {
        OPT__VERBOSITY(&option_verbosity),
        OPT_BOOL(0, "progress", &option_progress,
                 N_("force progress reporting")),
-       OPT_BOOLEAN('n', "no-checkout", &option_no_checkout,
-                   N_("don't create a checkout")),
-       OPT_BOOLEAN(0, "bare", &option_bare, N_("create a bare repository")),
-       { OPTION_BOOLEAN, 0, "naked", &option_bare, NULL,
-               N_("create a bare repository"),
-               PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
-       OPT_BOOLEAN(0, "mirror", &option_mirror,
-                   N_("create a mirror repository (implies bare)")),
+       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")),
+       OPT_HIDDEN_BOOL(0, "naked", &option_bare,
+                       N_("create a bare repository")),
+       OPT_BOOL(0, "mirror", &option_mirror,
+                N_("create a mirror repository (implies bare)")),
        OPT_BOOL('l', "local", &option_local,
                N_("to clone from a local repository")),
-       OPT_BOOLEAN(0, "no-hardlinks", &option_no_hardlinks,
+       OPT_BOOL(0, "no-hardlinks", &option_no_hardlinks,
                    N_("don't use local hardlinks, always copy")),
-       OPT_BOOLEAN('s', "shared", &option_shared,
+       OPT_BOOL('s', "shared", &option_shared,
                    N_("setup as shared repository")),
-       OPT_BOOLEAN(0, "recursive", &option_recursive,
+       OPT_BOOL(0, "recursive", &option_recursive,
                    N_("initialize submodules in the clone")),
-       OPT_BOOLEAN(0, "recurse-submodules", &option_recursive,
+       OPT_BOOL(0, "recurse-submodules", &option_recursive,
                    N_("initialize submodules in the clone")),
        OPT_STRING(0, "template", &option_template, N_("template-directory"),
                   N_("directory from which templates will be used")),
index 10acc53f8012f53b6a15a3d006b622bda3409b17..60812b5b4b0a7215c1d5c441799b9d0857c51dce 100644 (file)
@@ -1091,7 +1091,7 @@ static int parse_and_validate_options(int argc, const char *argv[],
        if (patch_interactive)
                interactive = 1;
 
-       if (!!also + !!only + !!all + !!interactive > 1)
+       if (also + only + all + interactive > 1)
                die(_("Only one of --include/--only/--all/--interactive/--patch can be used."));
        if (argc == 0 && (also || (only && !amend)))
                die(_("No paths with --include/--only does not make sense."));
@@ -1228,14 +1228,14 @@ int cmd_status(int argc, const char **argv, const char *prefix)
                OPT_SET_INT(0, "long", &status_format,
                            N_("show status in long format (default)"),
                            STATUS_FORMAT_LONG),
-               OPT_BOOLEAN('z', "null", &s.null_termination,
-                           N_("terminate entries with NUL")),
+               OPT_BOOL('z', "null", &s.null_termination,
+                        N_("terminate entries with NUL")),
                { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg,
                  N_("mode"),
                  N_("show untracked files, optional modes: all, normal, no. (Default: all)"),
                  PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
-               OPT_BOOLEAN(0, "ignored", &show_ignored_in_status,
-                           N_("show ignored files")),
+               OPT_BOOL(0, "ignored", &show_ignored_in_status,
+                        N_("show ignored files")),
                { OPTION_STRING, 0, "ignore-submodules", &ignore_submodule_arg, N_("when"),
                  N_("ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)"),
                  PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
@@ -1434,24 +1434,24 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                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")),
                OPT_STRING(0, "squash", &squash_message, N_("commit"), N_("use autosquash formatted message to squash specified commit")),
-               OPT_BOOLEAN(0, "reset-author", &renew_authorship, N_("the commit is authored by me now (used with -C/-c/--amend)")),
-               OPT_BOOLEAN('s', "signoff", &signoff, N_("add Signed-off-by:")),
+               OPT_BOOL(0, "reset-author", &renew_authorship, N_("the commit is authored by me now (used with -C/-c/--amend)")),
+               OPT_BOOL('s', "signoff", &signoff, N_("add Signed-off-by:")),
                OPT_FILENAME('t', "template", &template_file, N_("use specified template file")),
                OPT_BOOL('e', "edit", &edit_flag, N_("force edit of commit")),
                OPT_STRING(0, "cleanup", &cleanup_arg, N_("default"), N_("how to strip spaces and #comments from message")),
-               OPT_BOOLEAN(0, "status", &include_status, N_("include status in commit message template")),
+               OPT_BOOL(0, "status", &include_status, N_("include status in commit message template")),
                { OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key id"),
                  N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
                /* end commit message options */
 
                OPT_GROUP(N_("Commit contents options")),
-               OPT_BOOLEAN('a', "all", &all, N_("commit all changed files")),
-               OPT_BOOLEAN('i', "include", &also, N_("add specified files to index for commit")),
-               OPT_BOOLEAN(0, "interactive", &interactive, N_("interactively add files")),
-               OPT_BOOLEAN('p', "patch", &patch_interactive, N_("interactively add changes")),
-               OPT_BOOLEAN('o', "only", &only, N_("commit only specified files")),
-               OPT_BOOLEAN('n', "no-verify", &no_verify, N_("bypass pre-commit hook")),
-               OPT_BOOLEAN(0, "dry-run", &dry_run, N_("show what would be committed")),
+               OPT_BOOL('a', "all", &all, N_("commit all changed files")),
+               OPT_BOOL('i', "include", &also, N_("add specified files to index for commit")),
+               OPT_BOOL(0, "interactive", &interactive, N_("interactively add files")),
+               OPT_BOOL('p', "patch", &patch_interactive, N_("interactively add changes")),
+               OPT_BOOL('o', "only", &only, N_("commit only specified files")),
+               OPT_BOOL('n', "no-verify", &no_verify, N_("bypass pre-commit hook")),
+               OPT_BOOL(0, "dry-run", &dry_run, N_("show what would be committed")),
                OPT_SET_INT(0, "short", &status_format, N_("show status concisely"),
                            STATUS_FORMAT_SHORT),
                OPT_BOOL(0, "branch", &s.show_branch, N_("show branch information")),
@@ -1460,19 +1460,17 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
                OPT_SET_INT(0, "long", &status_format,
                            N_("show status in long format (default)"),
                            STATUS_FORMAT_LONG),
-               OPT_BOOLEAN('z', "null", &s.null_termination,
-                           N_("terminate entries with NUL")),
-               OPT_BOOLEAN(0, "amend", &amend, N_("amend previous commit")),
-               OPT_BOOLEAN(0, "no-post-rewrite", &no_post_rewrite, N_("bypass post-rewrite hook")),
+               OPT_BOOL('z', "null", &s.null_termination,
+                        N_("terminate entries with NUL")),
+               OPT_BOOL(0, "amend", &amend, N_("amend previous commit")),
+               OPT_BOOL(0, "no-post-rewrite", &no_post_rewrite, N_("bypass post-rewrite hook")),
                { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, N_("mode"), N_("show untracked files, optional modes: all, normal, no. (Default: all)"), PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
                /* end commit contents options */
 
-               { OPTION_BOOLEAN, 0, "allow-empty", &allow_empty, NULL,
-                 N_("ok to record an empty change"),
-                 PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
-               { OPTION_BOOLEAN, 0, "allow-empty-message", &allow_empty_message, NULL,
-                 N_("ok to record a change with an empty message"),
-                 PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
+               OPT_HIDDEN_BOOL(0, "allow-empty", &allow_empty,
+                               N_("ok to record an empty change")),
+               OPT_HIDDEN_BOOL(0, "allow-empty-message", &allow_empty_message,
+                               N_("ok to record a change with an empty message")),
 
                OPT_END()
        };
index 4010c4320a585d84bdb0914d8a9bbc27d38b7f18..4ab9e9a550ddf06f3822cea78689a60fd802f8d2 100644 (file)
@@ -50,9 +50,9 @@ static int respect_includes = -1;
 
 static struct option builtin_config_options[] = {
        OPT_GROUP(N_("Config file location")),
-       OPT_BOOLEAN(0, "global", &use_global_config, N_("use global config file")),
-       OPT_BOOLEAN(0, "system", &use_system_config, N_("use system config file")),
-       OPT_BOOLEAN(0, "local", &use_local_config, N_("use repository config file")),
+       OPT_BOOL(0, "global", &use_global_config, N_("use global config file")),
+       OPT_BOOL(0, "system", &use_system_config, N_("use system config file")),
+       OPT_BOOL(0, "local", &use_local_config, N_("use repository config file")),
        OPT_STRING('f', "file", &given_config_file, N_("file"), N_("use given config file")),
        OPT_STRING(0, "blob", &given_config_blob, N_("blob-id"), N_("read config from given blob object")),
        OPT_GROUP(N_("Action")),
@@ -75,7 +75,7 @@ static struct option builtin_config_options[] = {
        OPT_BIT(0, "bool-or-int", &types, N_("value is --bool or --int"), TYPE_BOOL_OR_INT),
        OPT_BIT(0, "path", &types, N_("value is a path (file or directory name)"), TYPE_PATH),
        OPT_GROUP(N_("Other")),
-       OPT_BOOLEAN('z', "null", &end_null, N_("terminate values with NUL byte")),
+       OPT_BOOL('z', "null", &end_null, N_("terminate values with NUL byte")),
        OPT_BOOL(0, "includes", &respect_includes, N_("respect include directives on lookup")),
        OPT_END(),
 };
index 7d73722f59b10b5fe302498bb83c9ab3313b89b0..c94e5c30d0851080c49df2edc6d66a739085cf22 100644 (file)
@@ -406,12 +406,12 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
 {
        int contains = 0;
        struct option options[] = {
-               OPT_BOOLEAN(0, "contains",   &contains, N_("find the tag that comes after the commit")),
-               OPT_BOOLEAN(0, "debug",      &debug, N_("debug search strategy on stderr")),
-               OPT_BOOLEAN(0, "all",        &all, N_("use any ref")),
-               OPT_BOOLEAN(0, "tags",       &tags, N_("use any tag, even unannotated")),
-               OPT_BOOLEAN(0, "long",       &longformat, N_("always use long format")),
-               OPT_BOOLEAN(0, "first-parent", &first_parent, N_("only follow first parent")),
+               OPT_BOOL(0, "contains",   &contains, N_("find the tag that comes after the commit")),
+               OPT_BOOL(0, "debug",      &debug, N_("debug search strategy on stderr")),
+               OPT_BOOL(0, "all",        &all, N_("use any ref")),
+               OPT_BOOL(0, "tags",       &tags, N_("use any tag, even unannotated")),
+               OPT_BOOL(0, "long",       &longformat, N_("always use long format")),
+               OPT_BOOL(0, "first-parent", &first_parent, N_("only follow first parent")),
                OPT__ABBREV(&abbrev),
                OPT_SET_INT(0, "exact-match", &max_candidates,
                            N_("only output exact matches"), 0),
@@ -419,11 +419,11 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
                            N_("consider <n> most recent tags (default: 10)")),
                OPT_STRING(0, "match",       &pattern, N_("pattern"),
                           N_("only consider tags matching <pattern>")),
-               OPT_BOOLEAN(0, "always",     &always,
-                          N_("show abbreviated commit object as fallback")),
+               OPT_BOOL(0, "always",        &always,
+                       N_("show abbreviated commit object as fallback")),
                {OPTION_STRING, 0, "dirty",  &dirty, N_("mark"),
-                          N_("append <mark> on dirty working tree (default: \"-dirty\")"),
-                PARSE_OPT_OPTARG, NULL, (intptr_t) "-dirty"},
+                       N_("append <mark> on dirty working tree (default: \"-dirty\")"),
+                       PARSE_OPT_OPTARG, NULL, (intptr_t) "-dirty"},
                OPT_END(),
        };
 
index 8e19058744756e9978eac6244156ed1c27f1e20e..b1b9b5e52aa57b62d5edb5c55f818411e64d9c90 100644 (file)
@@ -674,11 +674,11 @@ int cmd_fast_export(int argc, const char **argv, const char *prefix)
                             N_("Dump marks to this file")),
                OPT_STRING(0, "import-marks", &import_filename, N_("file"),
                             N_("Import marks from this file")),
-               OPT_BOOLEAN(0, "fake-missing-tagger", &fake_missing_tagger,
-                            N_("Fake a tagger when tags lack one")),
-               OPT_BOOLEAN(0, "full-tree", &full_tree,
-                            N_("Output full tree for each commit")),
-               OPT_BOOLEAN(0, "use-done-feature", &use_done_feature,
+               OPT_BOOL(0, "fake-missing-tagger", &fake_missing_tagger,
+                        N_("Fake a tagger when tags lack one")),
+               OPT_BOOL(0, "full-tree", &full_tree,
+                        N_("Output full tree for each commit")),
+               OPT_BOOL(0, "use-done-feature", &use_done_feature,
                             N_("Use the done feature to terminate the stream")),
                OPT_BOOL(0, "no-data", &no_data, N_("Skip output of blob data")),
                OPT_END()
index aba44655524ff722d90de09760945f5f30088752..c8e858232a8e7a3536ef4d296efdc618e034c36e 100644 (file)
@@ -1,6 +1,8 @@
 #include "builtin.h"
 #include "pkt-line.h"
 #include "fetch-pack.h"
+#include "remote.h"
+#include "connect.h"
 
 static const char fetch_pack_usage[] =
 "git fetch-pack [--all] [--stdin] [--quiet|-q] [--keep|-k] [--thin] "
@@ -100,6 +102,10 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
                        pack_lockfile_ptr = &pack_lockfile;
                        continue;
                }
+               if (!strcmp("--check-self-contained-and-connected", arg)) {
+                       args.check_self_contained_and_connected = 1;
+                       continue;
+               }
                usage(fetch_pack_usage);
        }
 
@@ -152,6 +158,11 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix)
                printf("lock %s\n", pack_lockfile);
                fflush(stdout);
        }
+       if (args.check_self_contained_and_connected &&
+           args.self_contained_and_connected) {
+               printf("connectivity-ok\n");
+               fflush(stdout);
+       }
        close(fd[0]);
        close(fd[1]);
        if (finish_connect(conn))
index d784b2e6947f1b5ace0016d92258e29377e9d1a7..593653955201995227c062d3878aafc09b424940 100644 (file)
@@ -30,7 +30,11 @@ enum {
        TAGS_SET = 2
 };
 
-static int all, append, dry_run, force, keep, multiple, prune, update_head_ok, verbosity;
+static int fetch_prune_config = -1; /* unspecified */
+static int prune = -1; /* unspecified */
+#define PRUNE_BY_DEFAULT 0 /* do we prune by default? */
+
+static int all, append, dry_run, force, keep, multiple, update_head_ok, verbosity;
 static int progress = -1, recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
 static int tags = TAGS_DEFAULT, unshallow;
 static const char *depth;
@@ -54,30 +58,39 @@ static int option_parse_recurse_submodules(const struct option *opt,
        return 0;
 }
 
+static int git_fetch_config(const char *k, const char *v, void *cb)
+{
+       if (!strcmp(k, "fetch.prune")) {
+               fetch_prune_config = git_config_bool(k, v);
+               return 0;
+       }
+       return 0;
+}
+
 static struct option builtin_fetch_options[] = {
        OPT__VERBOSITY(&verbosity),
-       OPT_BOOLEAN(0, "all", &all,
-                   N_("fetch from all remotes")),
-       OPT_BOOLEAN('a', "append", &append,
-                   N_("append to .git/FETCH_HEAD instead of overwriting")),
+       OPT_BOOL(0, "all", &all,
+                N_("fetch from all remotes")),
+       OPT_BOOL('a', "append", &append,
+                N_("append to .git/FETCH_HEAD instead of overwriting")),
        OPT_STRING(0, "upload-pack", &upload_pack, N_("path"),
                   N_("path to upload pack on remote end")),
        OPT__FORCE(&force, N_("force overwrite of local branch")),
-       OPT_BOOLEAN('m', "multiple", &multiple,
-                   N_("fetch from multiple remotes")),
+       OPT_BOOL('m', "multiple", &multiple,
+                N_("fetch from multiple remotes")),
        OPT_SET_INT('t', "tags", &tags,
                    N_("fetch all tags and associated objects"), TAGS_SET),
        OPT_SET_INT('n', NULL, &tags,
                    N_("do not fetch all tags (--no-tags)"), TAGS_UNSET),
-       OPT_BOOLEAN('p', "prune", &prune,
-                   N_("prune remote-tracking branches no longer on remote")),
+       OPT_BOOL('p', "prune", &prune,
+                N_("prune remote-tracking branches no longer on remote")),
        { OPTION_CALLBACK, 0, "recurse-submodules", NULL, N_("on-demand"),
                    N_("control recursive fetching of submodules"),
                    PARSE_OPT_OPTARG, option_parse_recurse_submodules },
-       OPT_BOOLEAN(0, "dry-run", &dry_run,
-                   N_("dry run")),
-       OPT_BOOLEAN('k', "keep", &keep, N_("keep downloaded pack")),
-       OPT_BOOLEAN('u', "update-head-ok", &update_head_ok,
+       OPT_BOOL(0, "dry-run", &dry_run,
+                N_("dry run")),
+       OPT_BOOL('k', "keep", &keep, N_("keep downloaded pack")),
+       OPT_BOOL('u', "update-head-ok", &update_head_ok,
                    N_("allow updating of HEAD ref")),
        OPT_BOOL(0, "progress", &progress, N_("force progress reporting")),
        OPT_STRING(0, "depth", &depth, N_("depth"),
@@ -771,7 +784,10 @@ static int do_fetch(struct transport *transport,
                goto cleanup;
        }
        if (prune) {
-               /* If --tags was specified, pretend the user gave us the canonical tags refspec */
+               /*
+                * If --tags was specified, pretend that the user gave us
+                * the canonical tags refspec
+                */
                if (tags == TAGS_SET) {
                        const char *tags_str = "refs/tags/*:refs/tags/*";
                        struct refspec *tags_refspec, *refspec;
@@ -882,7 +898,7 @@ static void add_options_to_argv(struct argv_array *argv)
 {
        if (dry_run)
                argv_array_push(argv, "--dry-run");
-       if (prune)
+       if (prune > 0)
                argv_array_push(argv, "--prune");
        if (update_head_ok)
                argv_array_push(argv, "--update-head-ok");
@@ -950,6 +966,17 @@ static int fetch_one(struct remote *remote, int argc, const char **argv)
                    "remote name from which new revisions should be fetched."));
 
        transport = transport_get(remote, NULL);
+
+       if (prune < 0) {
+               /* no command line request */
+               if (0 <= transport->remote->prune)
+                       prune = transport->remote->prune;
+               else if (0 <= fetch_prune_config)
+                       prune = fetch_prune_config;
+               else
+                       prune = PRUNE_BY_DEFAULT;
+       }
+
        transport_set_verbosity(transport, verbosity, progress);
        if (upload_pack)
                set_option(TRANS_OPT_UPLOADPACK, upload_pack);
@@ -1007,6 +1034,8 @@ int cmd_fetch(int argc, const char **argv, const char *prefix)
        for (i = 1; i < argc; i++)
                strbuf_addf(&default_rla, " %s", argv[i]);
 
+       git_config(git_fetch_config, NULL);
+
        argc = parse_options(argc, argv, prefix,
                             builtin_fetch_options, builtin_fetch_usage, 0);
 
index 7f059c31dfbd11f77c891134ccc34cdc1f65bcb8..1d4083c2ddef07c6488d36720e6a0c48b04c6585 100644 (file)
@@ -867,24 +867,29 @@ static void sort_refs(struct ref_sort *sort, struct refinfo **refs, int num_refs
 static void print_value(struct refinfo *ref, int atom, int quote_style)
 {
        struct atom_value *v;
+       struct strbuf sb = STRBUF_INIT;
        get_value(ref, atom, &v);
        switch (quote_style) {
        case QUOTE_NONE:
                fputs(v->s, stdout);
                break;
        case QUOTE_SHELL:
-               sq_quote_print(stdout, v->s);
+               sq_quote_buf(&sb, v->s);
                break;
        case QUOTE_PERL:
-               perl_quote_print(stdout, v->s);
+               perl_quote_buf(&sb, v->s);
                break;
        case QUOTE_PYTHON:
-               python_quote_print(stdout, v->s);
+               python_quote_buf(&sb, v->s);
                break;
        case QUOTE_TCL:
-               tcl_quote_print(stdout, v->s);
+               tcl_quote_buf(&sb, v->s);
                break;
        }
+       if (quote_style != QUOTE_NONE) {
+               fputs(sb.buf, stdout);
+               strbuf_release(&sb);
+       }
 }
 
 static int hex1(char ch)
index 9909b6d519f0a7d3d3b53313e7886c9482d98ba5..39fa5e86d4d54e2f9c40d61ae78778078c56f5a8 100644 (file)
@@ -611,15 +611,15 @@ static char const * const fsck_usage[] = {
 
 static struct option fsck_opts[] = {
        OPT__VERBOSE(&verbose, N_("be verbose")),
-       OPT_BOOLEAN(0, "unreachable", &show_unreachable, N_("show unreachable objects")),
+       OPT_BOOL(0, "unreachable", &show_unreachable, N_("show unreachable objects")),
        OPT_BOOL(0, "dangling", &show_dangling, N_("show dangling objects")),
-       OPT_BOOLEAN(0, "tags", &show_tags, N_("report tags")),
-       OPT_BOOLEAN(0, "root", &show_root, N_("report root nodes")),
-       OPT_BOOLEAN(0, "cache", &keep_cache_objects, N_("make index objects head nodes")),
-       OPT_BOOLEAN(0, "reflogs", &include_reflogs, N_("make reflogs head nodes (default)")),
-       OPT_BOOLEAN(0, "full", &check_full, N_("also consider packs and alternate objects")),
-       OPT_BOOLEAN(0, "strict", &check_strict, N_("enable more strict checking")),
-       OPT_BOOLEAN(0, "lost-found", &write_lost_and_found,
+       OPT_BOOL(0, "tags", &show_tags, N_("report tags")),
+       OPT_BOOL(0, "root", &show_root, N_("report root nodes")),
+       OPT_BOOL(0, "cache", &keep_cache_objects, N_("make index objects head nodes")),
+       OPT_BOOL(0, "reflogs", &include_reflogs, N_("make reflogs head nodes (default)")),
+       OPT_BOOL(0, "full", &check_full, N_("also consider packs and alternate objects")),
+       OPT_BOOL(0, "strict", &check_strict, N_("enable more strict checking")),
+       OPT_BOOL(0, "lost-found", &write_lost_and_found,
                                N_("write dangling objects in .git/lost-found")),
        OPT_BOOL(0, "progress", &show_progress, N_("show progress")),
        OPT_END(),
index 6be6c8d65b26c9149aac2b6c1de6e3217c6ceea7..891a2c2ecb046dc29b2d9ce8b9d2982084bf9b19 100644 (file)
@@ -167,19 +167,78 @@ static int need_to_gc(void)
        return 1;
 }
 
+/* return NULL on success, else hostname running the gc */
+static const char *lock_repo_for_gc(int force, pid_t* ret_pid)
+{
+       static struct lock_file lock;
+       static char locking_host[128];
+       char my_host[128];
+       struct strbuf sb = STRBUF_INIT;
+       struct stat st;
+       uintmax_t pid;
+       FILE *fp;
+       int fd, should_exit;
+
+       if (gethostname(my_host, sizeof(my_host)))
+               strcpy(my_host, "unknown");
+
+       fd = hold_lock_file_for_update(&lock, git_path("gc.pid"),
+                                      LOCK_DIE_ON_ERROR);
+       if (!force) {
+               fp = fopen(git_path("gc.pid"), "r");
+               memset(locking_host, 0, sizeof(locking_host));
+               should_exit =
+                       fp != NULL &&
+                       !fstat(fileno(fp), &st) &&
+                       /*
+                        * 12 hour limit is very generous as gc should
+                        * never take that long. On the other hand we
+                        * don't really need a strict limit here,
+                        * running gc --auto one day late is not a big
+                        * problem. --force can be used in manual gc
+                        * after the user verifies that no gc is
+                        * running.
+                        */
+                       time(NULL) - st.st_mtime <= 12 * 3600 &&
+                       fscanf(fp, "%"PRIuMAX" %127c", &pid, locking_host) == 2 &&
+                       /* be gentle to concurrent "gc" on remote hosts */
+                       (strcmp(locking_host, my_host) || !kill(pid, 0));
+               if (fp != NULL)
+                       fclose(fp);
+               if (should_exit) {
+                       if (fd >= 0)
+                               rollback_lock_file(&lock);
+                       *ret_pid = pid;
+                       return locking_host;
+               }
+       }
+
+       strbuf_addf(&sb, "%"PRIuMAX" %s",
+                   (uintmax_t) getpid(), my_host);
+       write_in_full(fd, sb.buf, sb.len);
+       strbuf_release(&sb);
+       commit_lock_file(&lock);
+
+       return NULL;
+}
+
 int cmd_gc(int argc, const char **argv, const char *prefix)
 {
        int aggressive = 0;
        int auto_gc = 0;
        int quiet = 0;
+       int force = 0;
+       const char *name;
+       pid_t pid;
 
        struct option builtin_gc_options[] = {
                OPT__QUIET(&quiet, N_("suppress progress reporting")),
                { OPTION_STRING, 0, "prune", &prune_expire, N_("date"),
                        N_("prune unreferenced objects"),
                        PARSE_OPT_OPTARG, NULL, (intptr_t)prune_expire },
-               OPT_BOOLEAN(0, "aggressive", &aggressive, N_("be more thorough (increased runtime)")),
-               OPT_BOOLEAN(0, "auto", &auto_gc, N_("enable auto-gc mode")),
+               OPT_BOOL(0, "aggressive", &aggressive, N_("be more thorough (increased runtime)")),
+               OPT_BOOL(0, "auto", &auto_gc, N_("enable auto-gc mode")),
+               OPT_BOOL(0, "force", &force, N_("force running gc even if there may be another gc running")),
                OPT_END()
        };
 
@@ -225,6 +284,14 @@ int cmd_gc(int argc, const char **argv, const char *prefix)
        } else
                add_repack_all_option();
 
+       name = lock_repo_for_gc(force, &pid);
+       if (name) {
+               if (auto_gc)
+                       return 0; /* be quiet on --auto */
+               die(_("gc is already running on machine '%s' pid %"PRIuMAX" (use --force if not)"),
+                   name, (uintmax_t)pid);
+       }
+
        if (pack_refs && run_command_v_opt(pack_refs_cmd.argv, RUN_GIT_CMD))
                return error(FAILED_RUN, pack_refs_cmd.argv[0]);
 
index d3b3b1db1121b37d5a8d0e440e03273526003774..7877e7755c9674cddf58284ea77d594c81b9982b 100644 (file)
@@ -638,20 +638,20 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
        int pattern_type_arg = GREP_PATTERN_TYPE_UNSPECIFIED;
 
        struct option options[] = {
-               OPT_BOOLEAN(0, "cached", &cached,
+               OPT_BOOL(0, "cached", &cached,
                        N_("search in index instead of in the work tree")),
                OPT_NEGBIT(0, "no-index", &use_index,
                         N_("find in contents not managed by git"), 1),
-               OPT_BOOLEAN(0, "untracked", &untracked,
+               OPT_BOOL(0, "untracked", &untracked,
                        N_("search in both tracked and untracked files")),
                OPT_SET_INT(0, "exclude-standard", &opt_exclude,
                            N_("search also in ignored files"), 1),
                OPT_GROUP(""),
-               OPT_BOOLEAN('v', "invert-match", &opt.invert,
+               OPT_BOOL('v', "invert-match", &opt.invert,
                        N_("show non-matching lines")),
-               OPT_BOOLEAN('i', "ignore-case", &opt.ignore_case,
+               OPT_BOOL('i', "ignore-case", &opt.ignore_case,
                        N_("case insensitive matching")),
-               OPT_BOOLEAN('w', "word-regexp", &opt.word_regexp,
+               OPT_BOOL('w', "word-regexp", &opt.word_regexp,
                        N_("match patterns only at word boundaries")),
                OPT_SET_INT('a', "text", &opt.binary,
                        N_("process binary files as text"), GREP_BINARY_TEXT),
@@ -675,26 +675,26 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                            N_("use Perl-compatible regular expressions"),
                            GREP_PATTERN_TYPE_PCRE),
                OPT_GROUP(""),
-               OPT_BOOLEAN('n', "line-number", &opt.linenum, N_("show line numbers")),
+               OPT_BOOL('n', "line-number", &opt.linenum, N_("show line numbers")),
                OPT_NEGBIT('h', NULL, &opt.pathname, N_("don't show filenames"), 1),
                OPT_BIT('H', NULL, &opt.pathname, N_("show filenames"), 1),
                OPT_NEGBIT(0, "full-name", &opt.relative,
                        N_("show filenames relative to top directory"), 1),
-               OPT_BOOLEAN('l', "files-with-matches", &opt.name_only,
+               OPT_BOOL('l', "files-with-matches", &opt.name_only,
                        N_("show only filenames instead of matching lines")),
-               OPT_BOOLEAN(0, "name-only", &opt.name_only,
+               OPT_BOOL(0, "name-only", &opt.name_only,
                        N_("synonym for --files-with-matches")),
-               OPT_BOOLEAN('L', "files-without-match",
+               OPT_BOOL('L', "files-without-match",
                        &opt.unmatch_name_only,
                        N_("show only the names of files without match")),
-               OPT_BOOLEAN('z', "null", &opt.null_following_name,
+               OPT_BOOL('z', "null", &opt.null_following_name,
                        N_("print NUL after filenames")),
-               OPT_BOOLEAN('c', "count", &opt.count,
+               OPT_BOOL('c', "count", &opt.count,
                        N_("show the number of matches instead of matching lines")),
                OPT__COLOR(&opt.color, N_("highlight matches")),
-               OPT_BOOLEAN(0, "break", &opt.file_break,
+               OPT_BOOL(0, "break", &opt.file_break,
                        N_("print empty line between matches from different files")),
-               OPT_BOOLEAN(0, "heading", &opt.heading,
+               OPT_BOOL(0, "heading", &opt.heading,
                        N_("show filename only once above matches from same file")),
                OPT_GROUP(""),
                OPT_CALLBACK('C', "context", &opt, N_("n"),
@@ -706,9 +706,9 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                        N_("show <n> context lines after matches")),
                OPT_NUMBER_CALLBACK(&opt, N_("shortcut for -C NUM"),
                        context_callback),
-               OPT_BOOLEAN('p', "show-function", &opt.funcname,
+               OPT_BOOL('p', "show-function", &opt.funcname,
                        N_("show a line with the function name before matches")),
-               OPT_BOOLEAN('W', "function-context", &opt.funcbody,
+               OPT_BOOL('W', "function-context", &opt.funcbody,
                        N_("show the surrounding function")),
                OPT_GROUP(""),
                OPT_CALLBACK('f', NULL, &opt, N_("file"),
@@ -718,7 +718,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                { OPTION_CALLBACK, 0, "and", &opt, NULL,
                  N_("combine patterns specified with -e"),
                  PARSE_OPT_NOARG | PARSE_OPT_NONEG, and_callback },
-               OPT_BOOLEAN(0, "or", &dummy, ""),
+               OPT_BOOL(0, "or", &dummy, ""),
                { OPTION_CALLBACK, 0, "not", &opt, NULL, "",
                  PARSE_OPT_NOARG | PARSE_OPT_NONEG, not_callback },
                { OPTION_CALLBACK, '(', NULL, &opt, NULL, "",
@@ -729,7 +729,7 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                  close_callback },
                OPT__QUIET(&opt.status_only,
                           N_("indicate hit with exit status without output")),
-               OPT_BOOLEAN(0, "all-match", &opt.all_match,
+               OPT_BOOL(0, "all-match", &opt.all_match,
                        N_("show only matches from files that match all patterns")),
                { OPTION_SET_INT, 0, "debug", &opt.debug, NULL,
                  N_("show parse tree for grep expression"),
@@ -738,8 +738,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                { OPTION_STRING, 'O', "open-files-in-pager", &show_in_pager,
                        N_("pager"), N_("show matching files in the pager"),
                        PARSE_OPT_OPTARG, NULL, (intptr_t)default_pager },
-               OPT_BOOLEAN(0, "ext-grep", &external_grep_allowed__ignored,
-                           N_("allow calling of grep(1) (ignored by this build)")),
+               OPT_BOOL(0, "ext-grep", &external_grep_allowed__ignored,
+                        N_("allow calling of grep(1) (ignored by this build)")),
                { OPTION_CALLBACK, 0, "help-all", &options, NULL, N_("show usage"),
                  PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, help_callback },
                OPT_END()
index 8d184f1a99120b1ebccac4f5e1d4fdb0a692b3c9..d7fcf4c13c7e0f0855fba51c6b58d2b06c99984e 100644 (file)
@@ -70,10 +70,10 @@ static const char *vpath;
 
 static const struct option hash_object_options[] = {
        OPT_STRING('t', NULL, &type, N_("type"), N_("object type")),
-       OPT_BOOLEAN('w', NULL, &write_object, N_("write the object into the object database")),
-       OPT_BOOLEAN( 0 , "stdin", &hashstdin, N_("read the object from stdin")),
-       OPT_BOOLEAN( 0 , "stdin-paths", &stdin_paths, N_("read file names from stdin")),
-       OPT_BOOLEAN( 0 , "no-filters", &no_filters, N_("store file as is without filters")),
+       OPT_BOOL('w', NULL, &write_object, N_("write the object into the object database")),
+       OPT_COUNTUP( 0 , "stdin", &hashstdin, N_("read the object from stdin")),
+       OPT_BOOL( 0 , "stdin-paths", &stdin_paths, N_("read file names from stdin")),
+       OPT_BOOL( 0 , "no-filters", &no_filters, N_("store file as is without filters")),
        OPT_STRING( 0 , "path", &vpath, N_("file"), N_("process file as it were from this path")),
        OPT_END()
 };
index 2625f9881ad836d1a3e303f4c159d6b76a3ae04f..ed4dec406e76fdda71e2882ae0b02f79c9d57c81 100644 (file)
@@ -121,7 +121,7 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
        static struct line_opt_callback_data line_cb = {NULL, NULL, STRING_LIST_INIT_DUP};
 
        const struct option builtin_log_options[] = {
-               OPT_BOOL(0, "quiet", &quiet, N_("suppress diff output")),
+               OPT__QUIET(&quiet, N_("suppress diff output")),
                OPT_BOOL(0, "source", &source, N_("show source")),
                OPT_BOOL(0, "use-mailmap", &mailmap, N_("Use mail map file")),
                { OPTION_CALLBACK, 0, "decorate", NULL, NULL, N_("decorate options"),
@@ -1179,13 +1179,13 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                { OPTION_CALLBACK, 'k', "keep-subject", &rev, NULL,
                            N_("don't strip/add [PATCH]"),
                            PARSE_OPT_NOARG | PARSE_OPT_NONEG, keep_callback },
-               OPT_BOOLEAN(0, "no-binary", &no_binary_diff,
-                           N_("don't output binary diffs")),
-               OPT_BOOLEAN(0, "ignore-if-in-upstream", &ignore_if_in_upstream,
-                           N_("don't include a patch matching a commit upstream")),
-               { OPTION_BOOLEAN, 'p', "no-stat", &use_patch_format, NULL,
+               OPT_BOOL(0, "no-binary", &no_binary_diff,
+                        N_("don't output binary diffs")),
+               OPT_BOOL(0, "ignore-if-in-upstream", &ignore_if_in_upstream,
+                        N_("don't include a patch matching a commit upstream")),
+               { OPTION_SET_INT, 'p', "no-stat", &use_patch_format, NULL,
                  N_("show patch format instead of default (patch + stat)"),
-                 PARSE_OPT_NONEG | PARSE_OPT_NOARG },
+                 PARSE_OPT_NONEG | PARSE_OPT_NOARG, NULL, 1},
                OPT_GROUP(N_("Messaging")),
                { OPTION_CALLBACK, 0, "add-header", NULL, N_("header"),
                            N_("add email header"), 0, header_callback },
@@ -1210,8 +1210,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
                            PARSE_OPT_OPTARG, thread_callback },
                OPT_STRING(0, "signature", &signature, N_("signature"),
                            N_("add a signature")),
-               OPT_BOOLEAN(0, "quiet", &quiet,
-                           N_("don't print the patch filenames")),
+               OPT__QUIET(&quiet, N_("don't print the patch filenames")),
                OPT_END()
        };
 
index 5cf3e313700e4cbcd26ae1a9f3f99f2819e40702..963ccc974245bbb68d0fefd4ec6e97d2ffaaae54 100644 (file)
@@ -461,24 +461,24 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
                { OPTION_CALLBACK, 'z', NULL, NULL, NULL,
                        N_("paths are separated with NUL character"),
                        PARSE_OPT_NOARG, option_parse_z },
-               OPT_BOOLEAN('t', NULL, &show_tag,
+               OPT_BOOL('t', NULL, &show_tag,
                        N_("identify the file status with tags")),
-               OPT_BOOLEAN('v', NULL, &show_valid_bit,
+               OPT_BOOL('v', NULL, &show_valid_bit,
                        N_("use lowercase letters for 'assume unchanged' files")),
-               OPT_BOOLEAN('c', "cached", &show_cached,
+               OPT_BOOL('c', "cached", &show_cached,
                        N_("show cached files in the output (default)")),
-               OPT_BOOLEAN('d', "deleted", &show_deleted,
+               OPT_BOOL('d', "deleted", &show_deleted,
                        N_("show deleted files in the output")),
-               OPT_BOOLEAN('m', "modified", &show_modified,
+               OPT_BOOL('m', "modified", &show_modified,
                        N_("show modified files in the output")),
-               OPT_BOOLEAN('o', "others", &show_others,
+               OPT_BOOL('o', "others", &show_others,
                        N_("show other files in the output")),
                OPT_BIT('i', "ignored", &dir.flags,
                        N_("show ignored files in the output"),
                        DIR_SHOW_IGNORED),
-               OPT_BOOLEAN('s', "stage", &show_stage,
+               OPT_BOOL('s', "stage", &show_stage,
                        N_("show staged contents' object name in the output")),
-               OPT_BOOLEAN('k', "killed", &show_killed,
+               OPT_BOOL('k', "killed", &show_killed,
                        N_("show files on the filesystem that need to be removed")),
                OPT_BIT(0, "directory", &dir.flags,
                        N_("show 'other' directories' name only"),
@@ -486,9 +486,9 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
                OPT_NEGBIT(0, "empty-directory", &dir.flags,
                        N_("don't show empty directories"),
                        DIR_HIDE_EMPTY_DIRECTORIES),
-               OPT_BOOLEAN('u', "unmerged", &show_unmerged,
+               OPT_BOOL('u', "unmerged", &show_unmerged,
                        N_("show unmerged files in the output")),
-               OPT_BOOLEAN(0, "resolve-undo", &show_resolve_undo,
+               OPT_BOOL(0, "resolve-undo", &show_resolve_undo,
                            N_("show resolve-undo information")),
                { OPTION_CALLBACK, 'x', "exclude", &exclude_list, N_("pattern"),
                        N_("skip files matching pattern"),
@@ -504,12 +504,12 @@ int cmd_ls_files(int argc, const char **argv, const char *cmd_prefix)
                { OPTION_SET_INT, 0, "full-name", &prefix_len, NULL,
                        N_("make the output relative to the project top directory"),
                        PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL },
-               OPT_BOOLEAN(0, "error-unmatch", &error_unmatch,
+               OPT_BOOL(0, "error-unmatch", &error_unmatch,
                        N_("if any <file> is not in the index, treat this as an error")),
                OPT_STRING(0, "with-tree", &with_tree, N_("tree-ish"),
                        N_("pretend that paths removed since <tree-ish> are still present")),
                OPT__ABBREV(&abbrev),
-               OPT_BOOLEAN(0, "debug", &debug_mode, N_("show debugging data")),
+               OPT_BOOL(0, "debug", &debug_mode, N_("show debugging data")),
                OPT_END()
        };
 
index fb76e38d849fc6f7b9cc1a534f62efb605a3655c..de88563edfdae562321bad7a91e8c5fe286e8922 100644 (file)
@@ -138,9 +138,9 @@ int cmd_ls_tree(int argc, const char **argv, const char *prefix)
                        LS_NAME_ONLY),
                OPT_SET_INT(0, "full-name", &chomp_prefix,
                            N_("use full path names"), 0),
-               OPT_BOOLEAN(0, "full-tree", &full_tree,
-                           N_("list entire tree; not just current directory "
-                              "(implies --full-name)")),
+               OPT_BOOL(0, "full-tree", &full_tree,
+                        N_("list entire tree; not just current directory "
+                           "(implies --full-name)")),
                OPT__ABBREV(&abbrev),
                OPT_END()
        };
index 0c4cd2f9f792cdf47cecf3401eb2bf7c676f7f6e..e88eb93f143ef5883b3e5f8f069fd13f70ff7abf 100644 (file)
@@ -95,11 +95,11 @@ int cmd_merge_base(int argc, const char **argv, const char *prefix)
        int is_ancestor = 0;
 
        struct option options[] = {
-               OPT_BOOLEAN('a', "all", &show_all, N_("output all common ancestors")),
-               OPT_BOOLEAN(0, "octopus", &octopus, N_("find ancestors for a single n-way merge")),
-               OPT_BOOLEAN(0, "independent", &reduce, N_("list revs not reachable from others")),
-               OPT_BOOLEAN(0, "is-ancestor", &is_ancestor,
-                           N_("is the first one ancestor of the other?")),
+               OPT_BOOL('a', "all", &show_all, N_("output all common ancestors")),
+               OPT_BOOL(0, "octopus", &octopus, N_("find ancestors for a single n-way merge")),
+               OPT_BOOL(0, "independent", &reduce, N_("list revs not reachable from others")),
+               OPT_BOOL(0, "is-ancestor", &is_ancestor,
+                        N_("is the first one ancestor of the other?")),
                OPT_END()
        };
 
index c0570f24072a8e29a13e00a2f4fe1b5054ebac7c..844f84f40bf0f8b9d95f4e9f0496c010386a9fb8 100644 (file)
@@ -30,7 +30,7 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix)
        int quiet = 0;
        int prefixlen = 0;
        struct option options[] = {
-               OPT_BOOLEAN('p', "stdout", &to_stdout, N_("send results to standard output")),
+               OPT_BOOL('p', "stdout", &to_stdout, N_("send results to standard output")),
                OPT_SET_INT(0, "diff3", &xmp.style, N_("use a diff3 based merge"), XDL_MERGE_DIFF3),
                OPT_SET_INT(0, "ours", &xmp.favor, N_("for conflicts, use our version"),
                            XDL_MERGE_FAVOR_OURS),
index 34a6166b520c8ede9973fbf497b21ac6ecb761ad..a8cf4a248492fc793c433e61e025fb7f3b3eacfe 100644 (file)
@@ -197,15 +197,15 @@ static struct option builtin_merge_options[] = {
        { OPTION_CALLBACK, 'n', NULL, NULL, NULL,
                N_("do not show a diffstat at the end of the merge"),
                PARSE_OPT_NOARG, option_parse_n },
-       OPT_BOOLEAN(0, "stat", &show_diffstat,
+       OPT_BOOL(0, "stat", &show_diffstat,
                N_("show a diffstat at the end of the merge")),
-       OPT_BOOLEAN(0, "summary", &show_diffstat, N_("(synonym to --stat)")),
+       OPT_BOOL(0, "summary", &show_diffstat, N_("(synonym to --stat)")),
        { OPTION_INTEGER, 0, "log", &shortlog_len, N_("n"),
          N_("add (at most <n>) entries from shortlog to merge commit message"),
          PARSE_OPT_OPTARG, NULL, DEFAULT_MERGE_LOG_LEN },
-       OPT_BOOLEAN(0, "squash", &squash,
+       OPT_BOOL(0, "squash", &squash,
                N_("create a single commit instead of doing a merge")),
-       OPT_BOOLEAN(0, "commit", &option_commit,
+       OPT_BOOL(0, "commit", &option_commit,
                N_("perform a commit if the merge succeeds (default)")),
        OPT_BOOL('e', "edit", &option_edit,
                N_("edit message before committing")),
@@ -224,12 +224,12 @@ static struct option builtin_merge_options[] = {
                N_("merge commit message (for a non-fast-forward merge)"),
                option_parse_message),
        OPT__VERBOSITY(&verbosity),
-       OPT_BOOLEAN(0, "abort", &abort_current_merge,
+       OPT_BOOL(0, "abort", &abort_current_merge,
                N_("abort the current in-progress merge")),
        OPT_SET_INT(0, "progress", &show_progress, N_("force progress reporting"), 1),
        { OPTION_STRING, 'S', "gpg-sign", &sign_commit, N_("key id"),
          N_("GPG sign commit"), PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
-       OPT_BOOLEAN(0, "overwrite-ignore", &overwrite_ignore, N_("update ignored files (default)")),
+       OPT_BOOL(0, "overwrite-ignore", &overwrite_ignore, N_("update ignored files (default)")),
        OPT_END()
 };
 
index 034fec92a11d79f28d80171ca86394817084ee09..be6fa77d0481c60b82a22ca01e9b8714d9849e71 100644 (file)
@@ -62,7 +62,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
                OPT__VERBOSE(&verbose, N_("be verbose")),
                OPT__DRY_RUN(&show_only, N_("dry run")),
                OPT__FORCE(&force, N_("force move/rename even if target exists")),
-               OPT_BOOLEAN('k', NULL, &ignore_errors, N_("skip move/rename errors")),
+               OPT_BOOL('k', NULL, &ignore_errors, N_("skip move/rename errors")),
                OPT_END(),
        };
        const char **source, **destination, **dest_path;
index 0aaa19e4abeb462b2f1d05d5e03aa29bee810db8..20fcf8c696700993617649da77e5bbf6b416498a 100644 (file)
@@ -310,15 +310,15 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
        int all = 0, transform_stdin = 0, allow_undefined = 1, always = 0, peel_tag = 0;
        struct name_ref_data data = { 0, 0, NULL };
        struct option opts[] = {
-               OPT_BOOLEAN(0, "name-only", &data.name_only, N_("print only names (no SHA-1)")),
-               OPT_BOOLEAN(0, "tags", &data.tags_only, N_("only use tags to name the commits")),
+               OPT_BOOL(0, "name-only", &data.name_only, N_("print only names (no SHA-1)")),
+               OPT_BOOL(0, "tags", &data.tags_only, N_("only use tags to name the commits")),
                OPT_STRING(0, "refs", &data.ref_filter, N_("pattern"),
                                   N_("only use refs matching <pattern>")),
                OPT_GROUP(""),
-               OPT_BOOLEAN(0, "all", &all, N_("list all commits reachable from all refs")),
-               OPT_BOOLEAN(0, "stdin", &transform_stdin, N_("read from stdin")),
-               OPT_BOOLEAN(0, "undefined", &allow_undefined, N_("allow to print `undefined` names")),
-               OPT_BOOLEAN(0, "always",     &always,
+               OPT_BOOL(0, "all", &all, N_("list all commits reachable from all refs")),
+               OPT_BOOL(0, "stdin", &transform_stdin, N_("read from stdin")),
+               OPT_BOOL(0, "undefined", &allow_undefined, N_("allow to print `undefined` names (default)")),
+               OPT_BOOL(0, "always",     &always,
                           N_("show abbreviated commit object as fallback")),
                {
                        /* A Hidden OPT_BOOL */
@@ -331,7 +331,7 @@ int cmd_name_rev(int argc, const char **argv, const char *prefix)
 
        git_config(git_default_config, NULL);
        argc = parse_options(argc, argv, prefix, opts, name_rev_usage, 0);
-       if (!!all + !!transform_stdin + !!argc > 1) {
+       if (all + transform_stdin + !!argc > 1) {
                error("Specify either a list, or --all, not both!");
                usage_with_options(name_rev_usage, opts);
        }
index e4100c49820306b881a20db4bb3af7c13f12c019..d459e23c4225ae0f8084cfd756563c2b7ab85a60 100644 (file)
@@ -483,7 +483,7 @@ static int copy(int argc, const char **argv, const char *prefix)
        const char *rewrite_cmd = NULL;
        struct option options[] = {
                OPT__FORCE(&force, N_("replace existing notes")),
-               OPT_BOOLEAN(0, "stdin", &from_stdin, N_("read objects from stdin")),
+               OPT_BOOL(0, "stdin", &from_stdin, N_("read objects from stdin")),
                OPT_STRING(0, "for-rewrite", &rewrite_cmd, N_("command"),
                           N_("load rewriting config for <command> (implies "
                              "--stdin)")),
@@ -739,13 +739,13 @@ static int merge(int argc, const char **argv, const char *prefix)
                           N_("resolve notes conflicts using the given strategy "
                              "(manual/ours/theirs/union/cat_sort_uniq)")),
                OPT_GROUP(N_("Committing unmerged notes")),
-               { OPTION_BOOLEAN, 0, "commit", &do_commit, NULL,
+               { OPTION_SET_INT, 0, "commit", &do_commit, NULL,
                        N_("finalize notes merge by committing unmerged notes"),
-                       PARSE_OPT_NOARG | PARSE_OPT_NONEG },
+                       PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1},
                OPT_GROUP(N_("Aborting notes merge resolution")),
-               { OPTION_BOOLEAN, 0, "abort", &do_abort, NULL,
+               { OPTION_SET_INT, 0, "abort", &do_abort, NULL,
                        N_("abort notes merge"),
-                       PARSE_OPT_NOARG | PARSE_OPT_NONEG },
+                       PARSE_OPT_NOARG | PARSE_OPT_NONEG, NULL, 1},
                OPT_END()
        };
 
@@ -853,7 +853,7 @@ static int remove_cmd(int argc, const char **argv, const char *prefix)
                OPT_BIT(0, "ignore-missing", &flag,
                        N_("attempt to remove non-existent note is not an error"),
                        IGNORE_MISSING),
-               OPT_BOOLEAN(0, "stdin", &from_stdin,
+               OPT_BOOL(0, "stdin", &from_stdin,
                            N_("read object names from the standard input")),
                OPT_END()
        };
index f069462cb03bbae46dae8d6b97420b3726690c47..4eb0521c815870abb670e8ddb035caa9c6507e67 100644 (file)
@@ -1809,7 +1809,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
 static void try_to_free_from_threads(size_t size)
 {
        read_lock();
-       release_pack_memory(size, -1);
+       release_pack_memory(size);
        read_unlock();
 }
 
index 04f0eaf179044dce1e87137978bcbecca18f3527..50bbfd62b135b6f4454c3cdd4e74cf227c24a1a5 100644 (file)
@@ -21,6 +21,8 @@ static const char *receivepack;
 static int verbosity;
 static int progress = -1;
 
+static struct push_cas_option cas;
+
 static const char **refspec;
 static int refspec_nr;
 static int refspec_alloc;
@@ -316,6 +318,13 @@ static int push_with_options(struct transport *transport, int flags)
        if (thin)
                transport_set_option(transport, TRANS_OPT_THIN, "yes");
 
+       if (!is_empty_cas(&cas)) {
+               if (!transport->smart_options)
+                       die("underlying transport does not support --%s option",
+                           CAS_OPT_NAME);
+               transport->smart_options->cas = &cas;
+       }
+
        if (verbosity > 0)
                fprintf(stderr, _("Pushing to %s\n"), transport->url);
        err = transport_push(transport, refspec_nr, refspec, flags,
@@ -446,15 +455,19 @@ int cmd_push(int argc, const char **argv, const char *prefix)
                OPT_BIT( 0 , "all", &flags, N_("push all refs"), TRANSPORT_PUSH_ALL),
                OPT_BIT( 0 , "mirror", &flags, N_("mirror all refs"),
                            (TRANSPORT_PUSH_MIRROR|TRANSPORT_PUSH_FORCE)),
-               OPT_BOOLEAN( 0, "delete", &deleterefs, N_("delete refs")),
-               OPT_BOOLEAN( 0 , "tags", &tags, N_("push tags (can't be used with --all or --mirror)")),
+               OPT_BOOL( 0, "delete", &deleterefs, N_("delete refs")),
+               OPT_BOOL( 0 , "tags", &tags, N_("push tags (can't be used with --all or --mirror)")),
                OPT_BIT('n' , "dry-run", &flags, N_("dry run"), TRANSPORT_PUSH_DRY_RUN),
                OPT_BIT( 0,  "porcelain", &flags, N_("machine-readable output"), TRANSPORT_PUSH_PORCELAIN),
                OPT_BIT('f', "force", &flags, N_("force updates"), TRANSPORT_PUSH_FORCE),
+               { OPTION_CALLBACK,
+                 0, CAS_OPT_NAME, &cas, N_("refname>:<expect"),
+                 N_("require old value of ref to be at this value"),
+                 PARSE_OPT_OPTARG, parseopt_push_cas_option },
                { OPTION_CALLBACK, 0, "recurse-submodules", &flags, N_("check"),
                        N_("control recursive pushing of submodules"),
                        PARSE_OPT_OPTARG, option_parse_recurse_submodules },
-               OPT_BOOLEAN( 0 , "thin", &thin, N_("use thin pack")),
+               OPT_BOOL( 0 , "thin", &thin, N_("use thin pack")),
                OPT_STRING( 0 , "receive-pack", &receivepack, "receive-pack", N_("receive pack program")),
                OPT_STRING( 0 , "exec", &receivepack, "receive-pack", N_("receive pack program")),
                OPT_BIT('u', "set-upstream", &flags, N_("set upstream for git pull/status"),
index e3eb5fc0588a79b2b6c29bccdaf71ba49dc14c1f..7434d9b4a2d62e619b15fc6aa238e8caa62277cd 100644 (file)
@@ -8,6 +8,7 @@
 #include "commit.h"
 #include "object.h"
 #include "remote.h"
+#include "connect.h"
 #include "transport.h"
 #include "string-list.h"
 #include "sha1-array.h"
index 5e54d367b82cd91dbba70e2570dc620a3a13cd21..eaac3e20124c48456faab48a6529ed281075ee25 100644 (file)
@@ -160,7 +160,7 @@ static int add(int argc, const char **argv)
        int i;
 
        struct option options[] = {
-               OPT_BOOLEAN('f', "fetch", &fetch, N_("fetch the remote branches")),
+               OPT_BOOL('f', "fetch", &fetch, N_("fetch the remote branches")),
                OPT_SET_INT(0, "tags", &fetch_tags,
                            N_("import all tags and associated objects when fetching"),
                            TAGS_SET),
@@ -1088,7 +1088,7 @@ static int show(int argc, const char **argv)
 {
        int no_query = 0, result = 0, query_flag = 0;
        struct option options[] = {
-               OPT_BOOLEAN('n', NULL, &no_query, N_("do not query remotes")),
+               OPT_BOOL('n', NULL, &no_query, N_("do not query remotes")),
                OPT_END()
        };
        struct ref_states states;
@@ -1195,10 +1195,10 @@ static int set_head(int argc, const char **argv)
        char *head_name = NULL;
 
        struct option options[] = {
-               OPT_BOOLEAN('a', "auto", &opt_a,
-                           N_("set refs/remotes/<name>/HEAD according to remote")),
-               OPT_BOOLEAN('d', "delete", &opt_d,
-                           N_("delete refs/remotes/<name>/HEAD")),
+               OPT_BOOL('a', "auto", &opt_a,
+                        N_("set refs/remotes/<name>/HEAD according to remote")),
+               OPT_BOOL('d', "delete", &opt_d,
+                        N_("delete refs/remotes/<name>/HEAD")),
                OPT_END()
        };
        argc = parse_options(argc, argv, NULL, options, builtin_remote_sethead_usage,
@@ -1317,8 +1317,8 @@ static int update(int argc, const char **argv)
 {
        int i, prune = 0;
        struct option options[] = {
-               OPT_BOOLEAN('p', "prune", &prune,
-                           N_("prune remotes after fetching")),
+               OPT_BOOL('p', "prune", &prune,
+                        N_("prune remotes after fetching")),
                OPT_END()
        };
        const char **fetch_argv;
@@ -1404,7 +1404,7 @@ static int set_branches(int argc, const char **argv)
 {
        int add_mode = 0;
        struct option options[] = {
-               OPT_BOOLEAN('\0', "add", &add_mode, N_("add branch")),
+               OPT_BOOL('\0', "add", &add_mode, N_("add branch")),
                OPT_END()
        };
 
@@ -1432,11 +1432,11 @@ static int set_url(int argc, const char **argv)
        int urlset_nr;
        struct strbuf name_buf = STRBUF_INIT;
        struct option options[] = {
-               OPT_BOOLEAN('\0', "push", &push_mode,
-                           N_("manipulate push URLs")),
-               OPT_BOOLEAN('\0', "add", &add_mode,
-                           N_("add URL")),
-               OPT_BOOLEAN('\0', "delete", &delete_mode,
+               OPT_BOOL('\0', "push", &push_mode,
+                        N_("manipulate push URLs")),
+               OPT_BOOL('\0', "add", &add_mode,
+                        N_("add URL")),
+               OPT_BOOL('\0', "delete", &delete_mode,
                            N_("delete URLs")),
                OPT_END()
        };
index 59d31152d0068dd4a542d2c8e076c629d508500f..11b0a55ae7f6e3d1a04eeb4026b151144d0315ba 100644 (file)
@@ -118,9 +118,9 @@ int cmd_replace(int argc, const char **argv, const char *prefix)
 {
        int list = 0, delete = 0, force = 0;
        struct option options[] = {
-               OPT_BOOLEAN('l', NULL, &list, N_("list replace refs")),
-               OPT_BOOLEAN('d', NULL, &delete, N_("delete replace refs")),
-               OPT_BOOLEAN('f', NULL, &force, N_("replace the ref if it exists")),
+               OPT_BOOL('l', NULL, &list, N_("list replace refs")),
+               OPT_BOOL('d', NULL, &delete, N_("delete replace refs")),
+               OPT_BOOL('f', NULL, &force, N_("replace the ref if it exists")),
                OPT_END()
        };
 
index afa6e020e83ebac739db474c278e44bc22079848..090581564b2a71d8360c1bc112ba39ceaa96825c 100644 (file)
@@ -258,7 +258,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
                                N_("reset HEAD, index and working tree"), MERGE),
                OPT_SET_INT(0, "keep", &reset_type,
                                N_("reset HEAD but keep local changes"), KEEP),
-               OPT_BOOLEAN('p', "patch", &patch_mode, N_("select hunks interactively")),
+               OPT_BOOL('p', "patch", &patch_mode, N_("select hunks interactively")),
                OPT_END()
        };
 
index de894c75773c78afb2c0f1ea4ea5aff8ec7de6bc..c76b89dc5bcccb42f7c2613072b1093a58c7d21c 100644 (file)
@@ -346,9 +346,9 @@ static int cmd_parseopt(int argc, const char **argv, const char *prefix)
                NULL
        };
        static struct option parseopt_opts[] = {
-               OPT_BOOLEAN(0, "keep-dashdash", &keep_dashdash,
+               OPT_BOOL(0, "keep-dashdash", &keep_dashdash,
                                        N_("keep the `--` passed as an arg")),
-               OPT_BOOLEAN(0, "stop-at-non-option", &stop_at_non_option,
+               OPT_BOOL(0, "stop-at-non-option", &stop_at_non_option,
                                        N_("stop parsing after the "
                                           "first non-option argument")),
                OPT_END(),
@@ -486,21 +486,6 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
        if (argc > 1 && !strcmp("--sq-quote", argv[1]))
                return cmd_sq_quote(argc - 2, argv + 2);
 
-       if (argc == 2 && !strcmp("--local-env-vars", argv[1])) {
-               int i;
-               for (i = 0; local_repo_env[i]; i++)
-                       printf("%s\n", local_repo_env[i]);
-               return 0;
-       }
-
-       if (argc > 2 && !strcmp(argv[1], "--resolve-git-dir")) {
-               const char *gitdir = resolve_gitdir(argv[2]);
-               if (!gitdir)
-                       die("not a gitdir '%s'", argv[2]);
-               puts(gitdir);
-               return 0;
-       }
-
        if (argc > 1 && !strcmp("-h", argv[1]))
                usage(builtin_rev_parse_usage);
 
@@ -661,6 +646,12 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
                                for_each_remote_ref(show_reference, NULL);
                                continue;
                        }
+                       if (!strcmp(arg, "--local-env-vars")) {
+                               int i;
+                               for (i = 0; local_repo_env[i]; i++)
+                                       printf("%s\n", local_repo_env[i]);
+                               continue;
+                       }
                        if (!strcmp(arg, "--show-toplevel")) {
                                const char *work_tree = get_git_work_tree();
                                if (work_tree)
@@ -711,6 +702,13 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
                                printf("%s%s.git\n", cwd, len && cwd[len-1] != '/' ? "/" : "");
                                continue;
                        }
+                       if (!strcmp(arg, "--resolve-git-dir")) {
+                               const char *gitdir = resolve_gitdir(argv[i+1]);
+                               if (!gitdir)
+                                       die("not a gitdir '%s'", argv[i+1]);
+                               puts(gitdir);
+                               continue;
+                       }
                        if (!strcmp(arg, "--is-inside-git-dir")) {
                                printf("%s\n", is_inside_git_dir() ? "true"
                                                : "false");
index 1d2648b756907f467edbe1e206535009df4c65e8..8e87acd12e622957df6bc0a93903898361149f91 100644 (file)
@@ -71,44 +71,19 @@ static void verify_opt_compatible(const char *me, const char *base_opt, ...)
                die(_("%s: %s cannot be used with %s"), me, this_opt, base_opt);
 }
 
-LAST_ARG_MUST_BE_NULL
-static void verify_opt_mutually_compatible(const char *me, ...)
-{
-       const char *opt1, *opt2 = NULL;
-       va_list ap;
-
-       va_start(ap, me);
-       while ((opt1 = va_arg(ap, const char *))) {
-               if (va_arg(ap, int))
-                       break;
-       }
-       if (opt1) {
-               while ((opt2 = va_arg(ap, const char *))) {
-                       if (va_arg(ap, int))
-                               break;
-               }
-       }
-       va_end(ap);
-
-       if (opt1 && opt2)
-               die(_("%s: %s cannot be used with %s"), me, opt1, opt2);
-}
-
 static void parse_args(int argc, const char **argv, struct replay_opts *opts)
 {
        const char * const * usage_str = revert_or_cherry_pick_usage(opts);
        const char *me = action_name(opts);
-       int remove_state = 0;
-       int contin = 0;
-       int rollback = 0;
+       int cmd = 0;
        struct option options[] = {
-               OPT_BOOLEAN(0, "quit", &remove_state, N_("end revert or cherry-pick sequence")),
-               OPT_BOOLEAN(0, "continue", &contin, N_("resume revert or cherry-pick sequence")),
-               OPT_BOOLEAN(0, "abort", &rollback, N_("cancel revert or cherry-pick sequence")),
-               OPT_BOOLEAN('n', "no-commit", &opts->no_commit, N_("don't automatically commit")),
-               OPT_BOOLEAN('e', "edit", &opts->edit, N_("edit the commit message")),
+               OPT_CMDMODE(0, "quit", &cmd, N_("end revert or cherry-pick sequence"), 'q'),
+               OPT_CMDMODE(0, "continue", &cmd, N_("resume revert or cherry-pick sequence"), 'c'),
+               OPT_CMDMODE(0, "abort", &cmd, N_("cancel revert or cherry-pick sequence"), 'a'),
+               OPT_BOOL('n', "no-commit", &opts->no_commit, N_("don't automatically commit")),
+               OPT_BOOL('e', "edit", &opts->edit, N_("edit the commit message")),
                OPT_NOOP_NOARG('r', NULL),
-               OPT_BOOLEAN('s', "signoff", &opts->signoff, N_("add Signed-off-by:")),
+               OPT_BOOL('s', "signoff", &opts->signoff, N_("add Signed-off-by:")),
                OPT_INTEGER('m', "mainline", &opts->mainline, N_("parent number")),
                OPT_RERERE_AUTOUPDATE(&opts->allow_rerere_auto),
                OPT_STRING(0, "strategy", &opts->strategy, N_("strategy"), N_("merge strategy")),
@@ -124,11 +99,11 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
 
        if (opts->action == REPLAY_PICK) {
                struct option cp_extra[] = {
-                       OPT_BOOLEAN('x', NULL, &opts->record_origin, N_("append commit name")),
-                       OPT_BOOLEAN(0, "ff", &opts->allow_ff, N_("allow fast-forward")),
-                       OPT_BOOLEAN(0, "allow-empty", &opts->allow_empty, N_("preserve initially empty commits")),
-                       OPT_BOOLEAN(0, "allow-empty-message", &opts->allow_empty_message, N_("allow commits with empty messages")),
-                       OPT_BOOLEAN(0, "keep-redundant-commits", &opts->keep_redundant_commits, N_("keep redundant, empty commits")),
+                       OPT_BOOL('x', NULL, &opts->record_origin, N_("append commit name")),
+                       OPT_BOOL(0, "ff", &opts->allow_ff, N_("allow fast-forward")),
+                       OPT_BOOL(0, "allow-empty", &opts->allow_empty, N_("preserve initially empty commits")),
+                       OPT_BOOL(0, "allow-empty-message", &opts->allow_empty_message, N_("allow commits with empty messages")),
+                       OPT_BOOL(0, "keep-redundant-commits", &opts->keep_redundant_commits, N_("keep redundant, empty commits")),
                        OPT_END(),
                };
                if (parse_options_concat(options, ARRAY_SIZE(options), cp_extra))
@@ -139,23 +114,16 @@ static void parse_args(int argc, const char **argv, struct replay_opts *opts)
                        PARSE_OPT_KEEP_ARGV0 |
                        PARSE_OPT_KEEP_UNKNOWN);
 
-       /* Check for incompatible subcommands */
-       verify_opt_mutually_compatible(me,
-                               "--quit", remove_state,
-                               "--continue", contin,
-                               "--abort", rollback,
-                               NULL);
-
        /* implies allow_empty */
        if (opts->keep_redundant_commits)
                opts->allow_empty = 1;
 
        /* Set the subcommand */
-       if (remove_state)
+       if (cmd == 'q')
                opts->subcommand = REPLAY_REMOVE_STATE;
-       else if (contin)
+       else if (cmd == 'c')
                opts->subcommand = REPLAY_CONTINUE;
-       else if (rollback)
+       else if (cmd == 'a')
                opts->subcommand = REPLAY_ROLLBACK;
        else
                opts->subcommand = REPLAY_NONE;
index 0df0b4d942c09769ff42539f6aaf83dcc31e20fb..18bf2189992439caafb66b103df9fbe3e76c4e37 100644 (file)
@@ -267,18 +267,18 @@ static int ignore_unmatch = 0;
 static struct option builtin_rm_options[] = {
        OPT__DRY_RUN(&show_only, N_("dry run")),
        OPT__QUIET(&quiet, N_("do not list removed files")),
-       OPT_BOOLEAN( 0 , "cached",         &index_only, N_("only remove from the index")),
+       OPT_BOOL( 0 , "cached",         &index_only, N_("only remove from the index")),
        OPT__FORCE(&force, N_("override the up-to-date check")),
-       OPT_BOOLEAN('r', NULL,             &recursive,  N_("allow recursive removal")),
-       OPT_BOOLEAN( 0 , "ignore-unmatch", &ignore_unmatch,
+       OPT_BOOL('r', NULL,             &recursive,  N_("allow recursive removal")),
+       OPT_BOOL( 0 , "ignore-unmatch", &ignore_unmatch,
                                N_("exit with a zero status even if nothing matched")),
        OPT_END(),
 };
 
 int cmd_rm(int argc, const char **argv, const char *prefix)
 {
-       int i, newfd;
-       const char **pathspec;
+       int i, newfd, seen_any;
+       const char **pathspec, *match;
        char *seen;
 
        git_config(git_default_config, NULL);
@@ -314,7 +314,6 @@ int cmd_rm(int argc, const char **argv, const char *prefix)
        pathspec = get_pathspec(prefix, argv);
        refresh_index(&the_index, REFRESH_QUIET, pathspec, NULL, NULL);
 
-       seen = NULL;
        for (i = 0; pathspec[i] ; i++)
                /* nothing */;
        seen = xcalloc(i, 1);
@@ -328,27 +327,24 @@ int cmd_rm(int argc, const char **argv, const char *prefix)
                list.entry[list.nr++].is_submodule = S_ISGITLINK(ce->ce_mode);
        }
 
-       if (pathspec) {
-               const char *match;
-               int seen_any = 0;
-               for (i = 0; (match = pathspec[i]) != NULL ; i++) {
-                       if (!seen[i]) {
-                               if (!ignore_unmatch) {
-                                       die(_("pathspec '%s' did not match any files"),
-                                           match);
-                               }
-                       }
-                       else {
-                               seen_any = 1;
+
+       seen_any = 0;
+       for (i = 0; (match = pathspec[i]) != NULL ; i++) {
+               if (!seen[i]) {
+                       if (!ignore_unmatch) {
+                               die(_("pathspec '%s' did not match any files"),
+                                   match);
                        }
-                       if (!recursive && seen[i] == MATCHED_RECURSIVELY)
-                               die(_("not removing '%s' recursively without -r"),
-                                   *match ? match : ".");
                }
-
-               if (! seen_any)
-                       exit(0);
+               else {
+                       seen_any = 1;
+               }
+               if (!recursive && seen[i] == MATCHED_RECURSIVELY)
+                       die(_("not removing '%s' recursively without -r"),
+                           *match ? match : ".");
        }
+       if (!seen_any)
+               exit(0);
 
        /*
         * If not forced, the file, the index and the HEAD (if exists)
index 152c4ea092a44ff9e70e293ddeecb4ad7105e25d..4482f16efb66c7fc06c7446a2e992840cc83f798 100644 (file)
@@ -5,6 +5,7 @@
 #include "sideband.h"
 #include "run-command.h"
 #include "remote.h"
+#include "connect.h"
 #include "send-pack.h"
 #include "quote.h"
 #include "transport.h"
@@ -54,6 +55,11 @@ static void print_helper_status(struct ref *ref)
                        msg = "needs force";
                        break;
 
+               case REF_STATUS_REJECT_STALE:
+                       res = "error";
+                       msg = "stale info";
+                       break;
+
                case REF_STATUS_REJECT_ALREADY_EXISTS:
                        res = "error";
                        msg = "already exists";
@@ -102,6 +108,7 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
        int flags;
        unsigned int reject_reasons;
        int progress = -1;
+       struct push_cas_option cas = {0};
 
        argv++;
        for (i = 1; i < argc; i++, argv++) {
@@ -164,6 +171,22 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
                                helper_status = 1;
                                continue;
                        }
+                       if (!strcmp(arg, "--" CAS_OPT_NAME)) {
+                               if (parse_push_cas_option(&cas, NULL, 0) < 0)
+                                       exit(1);
+                               continue;
+                       }
+                       if (!strcmp(arg, "--no-" CAS_OPT_NAME)) {
+                               if (parse_push_cas_option(&cas, NULL, 1) < 0)
+                                       exit(1);
+                               continue;
+                       }
+                       if (!prefixcmp(arg, "--" CAS_OPT_NAME "=")) {
+                               if (parse_push_cas_option(&cas,
+                                                         strchr(arg, '=') + 1, 0) < 0)
+                                       exit(1);
+                               continue;
+                       }
                        usage(send_pack_usage);
                }
                if (!dest) {
@@ -224,6 +247,9 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)
        if (match_push_refs(local_refs, &remote_refs, nr_refspecs, refspecs, flags))
                return -1;
 
+       if (!is_empty_cas(&cas))
+               apply_push_cas(&cas, remote, remote_refs);
+
        set_ref_status_for_push(remote_refs, args.send_mirror,
                args.force_update);
 
index 1434f8fee487751abe069250c611bdaed2fa5857..ae73d17b6cbc22f3a7eb30aff5a14cda27c5876c 100644 (file)
@@ -224,12 +224,12 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
        int nongit = !startup_info->have_repository;
 
        static const struct option options[] = {
-               OPT_BOOLEAN('n', "numbered", &log.sort_by_number,
-                           N_("sort output according to the number of commits per author")),
-               OPT_BOOLEAN('s', "summary", &log.summary,
-                           N_("Suppress commit descriptions, only provides commit count")),
-               OPT_BOOLEAN('e', "email", &log.email,
-                           N_("Show the email address of each author")),
+               OPT_BOOL('n', "numbered", &log.sort_by_number,
+                        N_("sort output according to the number of commits per author")),
+               OPT_BOOL('s', "summary", &log.summary,
+                        N_("Suppress commit descriptions, only provides commit count")),
+               OPT_BOOL('e', "email", &log.email,
+                        N_("Show the email address of each author")),
                { OPTION_CALLBACK, 'w', NULL, &log, N_("w[,i1[,i2]]"),
                        N_("Linewrap output"), PARSE_OPT_OPTARG, &parse_wrap_args },
                OPT_END(),
index 9788eb115beb2ab5663bd1d318ce411099589321..001f29ca1b9ef8bfe2a06cda4d98c704584812fe 100644 (file)
@@ -646,30 +646,30 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
        int dense = 1;
        const char *reflog_base = NULL;
        struct option builtin_show_branch_options[] = {
-               OPT_BOOLEAN('a', "all", &all_heads,
-                           N_("show remote-tracking and local branches")),
-               OPT_BOOLEAN('r', "remotes", &all_remotes,
-                           N_("show remote-tracking branches")),
+               OPT_BOOL('a', "all", &all_heads,
+                        N_("show remote-tracking and local branches")),
+               OPT_BOOL('r', "remotes", &all_remotes,
+                        N_("show remote-tracking branches")),
                OPT__COLOR(&showbranch_use_color,
                            N_("color '*!+-' corresponding to the branch")),
                { OPTION_INTEGER, 0, "more", &extra, N_("n"),
                            N_("show <n> more commits after the common ancestor"),
                            PARSE_OPT_OPTARG, NULL, (intptr_t)1 },
                OPT_SET_INT(0, "list", &extra, N_("synonym to more=-1"), -1),
-               OPT_BOOLEAN(0, "no-name", &no_name, N_("suppress naming strings")),
-               OPT_BOOLEAN(0, "current", &with_current_branch,
-                           N_("include the current branch")),
-               OPT_BOOLEAN(0, "sha1-name", &sha1_name,
-                           N_("name commits with their object names")),
-               OPT_BOOLEAN(0, "merge-base", &merge_base,
-                           N_("show possible merge bases")),
-               OPT_BOOLEAN(0, "independent", &independent,
+               OPT_BOOL(0, "no-name", &no_name, N_("suppress naming strings")),
+               OPT_BOOL(0, "current", &with_current_branch,
+                        N_("include the current branch")),
+               OPT_BOOL(0, "sha1-name", &sha1_name,
+                        N_("name commits with their object names")),
+               OPT_BOOL(0, "merge-base", &merge_base,
+                        N_("show possible merge bases")),
+               OPT_BOOL(0, "independent", &independent,
                            N_("show refs unreachable from any other ref")),
                OPT_SET_INT(0, "topo-order", &sort_order,
                            N_("show commits in topological order"),
                            REV_SORT_IN_GRAPH_ORDER),
-               OPT_BOOLEAN(0, "topics", &topics,
-                           N_("show only commits not on the first branch")),
+               OPT_BOOL(0, "topics", &topics,
+                        N_("show only commits not on the first branch")),
                OPT_SET_INT(0, "sparse", &dense,
                            N_("show merges reachable from only one tip"), 0),
                OPT_SET_INT(0, "date-order", &sort_order,
index 87806ad5b088f5c905757a4fab3c3499ec20a308..9f3f5e370bfb123df5c662bead122b29622fc1dd 100644 (file)
@@ -165,16 +165,15 @@ static int help_callback(const struct option *opt, const char *arg, int unset)
 }
 
 static const struct option show_ref_options[] = {
-       OPT_BOOLEAN(0, "tags", &tags_only, N_("only show tags (can be combined with heads)")),
-       OPT_BOOLEAN(0, "heads", &heads_only, N_("only show heads (can be combined with tags)")),
-       OPT_BOOLEAN(0, "verify", &verify, N_("stricter reference checking, "
+       OPT_BOOL(0, "tags", &tags_only, N_("only show tags (can be combined with heads)")),
+       OPT_BOOL(0, "heads", &heads_only, N_("only show heads (can be combined with tags)")),
+       OPT_BOOL(0, "verify", &verify, N_("stricter reference checking, "
                    "requires exact ref path")),
-       { OPTION_BOOLEAN, 'h', NULL, &show_head, NULL,
-         N_("show the HEAD reference, even if it would be filtered out"),
-         PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
-       OPT_BOOLEAN(0, "head", &show_head,
+       OPT_HIDDEN_BOOL('h', NULL, &show_head,
+                       N_("show the HEAD reference, even if it would be filtered out")),
+       OPT_BOOL(0, "head", &show_head,
          N_("show the HEAD reference, even if it would be filtered out")),
-       OPT_BOOLEAN('d', "dereference", &deref_tags,
+       OPT_BOOL('d', "dereference", &deref_tags,
                    N_("dereference tags into object IDs")),
        { OPTION_CALLBACK, 's', "hash", &abbrev, N_("n"),
          N_("only show SHA1 hash using <n> digits"),
index af3af3f64935c3f92ed3f85acd44ed2ca2a35b3f..b577af562a4a554f43c64256e112fcbc423edd3d 100644 (file)
@@ -436,26 +436,26 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
        struct ref_lock *lock;
        struct create_tag_options opt;
        char *cleanup_arg = NULL;
-       int annotate = 0, force = 0, lines = -1, list = 0,
-               delete = 0, verify = 0;
+       int annotate = 0, force = 0, lines = -1;
+       int cmdmode = 0;
        const char *msgfile = NULL, *keyid = NULL;
        struct msg_arg msg = { 0, STRBUF_INIT };
        struct commit_list *with_commit = NULL;
        struct option options[] = {
-               OPT_BOOLEAN('l', "list", &list, N_("list tag names")),
+               OPT_CMDMODE('l', "list", &cmdmode, N_("list tag names"), 'l'),
                { OPTION_INTEGER, 'n', NULL, &lines, N_("n"),
                                N_("print <n> lines of each tag message"),
                                PARSE_OPT_OPTARG, NULL, 1 },
-               OPT_BOOLEAN('d', "delete", &delete, N_("delete tags")),
-               OPT_BOOLEAN('v', "verify", &verify, N_("verify tags")),
+               OPT_CMDMODE('d', "delete", &cmdmode, N_("delete tags"), 'd'),
+               OPT_CMDMODE('v', "verify", &cmdmode, N_("verify tags"), 'v'),
 
                OPT_GROUP(N_("Tag creation options")),
-               OPT_BOOLEAN('a', "annotate", &annotate,
+               OPT_BOOL('a', "annotate", &annotate,
                                        N_("annotated tag, needs a message")),
                OPT_CALLBACK('m', "message", &msg, N_("message"),
                             N_("tag message"), parse_msg_arg),
                OPT_FILENAME('F', "file", &msgfile, N_("read message from file")),
-               OPT_BOOLEAN('s', "sign", &opt.sign, N_("annotated and GPG-signed tag")),
+               OPT_BOOL('s', "sign", &opt.sign, N_("annotated and GPG-signed tag")),
                OPT_STRING(0, "cleanup", &cleanup_arg, N_("mode"),
                        N_("how to strip spaces and #comments from message")),
                OPT_STRING('u', "local-user", &keyid, N_("key id"),
@@ -489,22 +489,19 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
        }
        if (opt.sign)
                annotate = 1;
-       if (argc == 0 && !(delete || verify))
-               list = 1;
+       if (argc == 0 && !cmdmode)
+               cmdmode = 'l';
 
-       if ((annotate || msg.given || msgfile || force) &&
-           (list || delete || verify))
+       if ((annotate || msg.given || msgfile || force) && (cmdmode != 0))
                usage_with_options(git_tag_usage, options);
 
-       if (list + delete + verify > 1)
-               usage_with_options(git_tag_usage, options);
        finalize_colopts(&colopts, -1);
-       if (list && lines != -1) {
+       if (cmdmode == 'l' && lines != -1) {
                if (explicitly_enable_column(colopts))
                        die(_("--column and -n are incompatible"));
                colopts = 0;
        }
-       if (list) {
+       if (cmdmode == 'l') {
                int ret;
                if (column_active(colopts)) {
                        struct column_options copts;
@@ -523,9 +520,9 @@ int cmd_tag(int argc, const char **argv, const char *prefix)
                die(_("--contains option is only allowed with -l."));
        if (points_at.nr)
                die(_("--points-at option is only allowed with -l."));
-       if (delete)
+       if (cmdmode == 'd')
                return for_each_tag_name(argv, delete_tag);
-       if (verify)
+       if (cmdmode == 'v')
                return for_each_tag_name(argv, verify_tag);
 
        if (msg.given || msgfile) {
index 3f1e7012db1af7d3695e6517956721a313229d65..ba3ffe69a95088d8f5e9978a754cb1f0ee364ba7 100644 (file)
@@ -26,8 +26,8 @@ int cmd_tar_tree(int argc, const char **argv, const char *prefix)
         * $0 tree-ish basedir ==>
         *      git archive --format-tar --prefix=basedir tree-ish
         */
-       int i;
        const char **nargv = xcalloc(sizeof(*nargv), argc + 3);
+       struct strbuf sb = STRBUF_INIT;
        char *basedir_arg;
        int nargc = 0;
 
@@ -65,11 +65,10 @@ int cmd_tar_tree(int argc, const char **argv, const char *prefix)
        fprintf(stderr,
                "*** \"git tar-tree\" is now deprecated.\n"
                "*** Running \"git archive\" instead.\n***");
-       for (i = 0; i < nargc; i++) {
-               fputc(' ', stderr);
-               sq_quote_print(stderr, nargv[i]);
-       }
-       fputc('\n', stderr);
+       sq_quote_argv(&sb, nargv, 0);
+       strbuf_addch(&sb, '\n');
+       fputs(sb.buf, stderr);
+       strbuf_release(&sb);
        return cmd_archive(nargc, nargv, prefix);
 }
 
index 51d26848598d7f18749f1f2859d7a74558d60b69..7484d36a65ba1f722f2dda33473bf509f30727c9 100644 (file)
@@ -16,8 +16,8 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix)
        int delete = 0, no_deref = 0, flags = 0;
        struct option options[] = {
                OPT_STRING( 'm', NULL, &msg, N_("reason"), N_("reason of the update")),
-               OPT_BOOLEAN('d', NULL, &delete, N_("delete the reference")),
-               OPT_BOOLEAN( 0 , "no-deref", &no_deref,
+               OPT_BOOL('d', NULL, &delete, N_("delete the reference")),
+               OPT_BOOL( 0 , "no-deref", &no_deref,
                                        N_("update <refname> not the one it points to")),
                OPT_END(),
        };
diff --git a/cache.h b/cache.h
index 85b544f38d934fe68d1e155c86337f1400eea14d..558ccb91f675e87b079e54bc688706ce8b19fa44 100644 (file)
--- a/cache.h
+++ b/cache.h
@@ -1038,68 +1038,6 @@ struct pack_entry {
        struct packed_git *p;
 };
 
-struct ref {
-       struct ref *next;
-       unsigned char old_sha1[20];
-       unsigned char new_sha1[20];
-       char *symref;
-       unsigned int
-               force:1,
-               forced_update:1,
-               deletion:1,
-               matched:1;
-
-       /*
-        * Order is important here, as we write to FETCH_HEAD
-        * in numeric order. And the default NOT_FOR_MERGE
-        * should be 0, so that xcalloc'd structures get it
-        * by default.
-        */
-       enum {
-               FETCH_HEAD_MERGE = -1,
-               FETCH_HEAD_NOT_FOR_MERGE = 0,
-               FETCH_HEAD_IGNORE = 1
-       } fetch_head_status;
-
-       enum {
-               REF_STATUS_NONE = 0,
-               REF_STATUS_OK,
-               REF_STATUS_REJECT_NONFASTFORWARD,
-               REF_STATUS_REJECT_ALREADY_EXISTS,
-               REF_STATUS_REJECT_NODELETE,
-               REF_STATUS_REJECT_FETCH_FIRST,
-               REF_STATUS_REJECT_NEEDS_FORCE,
-               REF_STATUS_UPTODATE,
-               REF_STATUS_REMOTE_REJECT,
-               REF_STATUS_EXPECTING_REPORT
-       } status;
-       char *remote_status;
-       struct ref *peer_ref; /* when renaming */
-       char name[FLEX_ARRAY]; /* more */
-};
-
-#define REF_NORMAL     (1u << 0)
-#define REF_HEADS      (1u << 1)
-#define REF_TAGS       (1u << 2)
-
-extern struct ref *find_ref_by_name(const struct ref *list, const char *name);
-
-#define CONNECT_VERBOSE       (1u << 0)
-extern struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags);
-extern int finish_connect(struct child_process *conn);
-extern int git_connection_is_socket(struct child_process *conn);
-struct extra_have_objects {
-       int nr, alloc;
-       unsigned char (*array)[20];
-};
-extern struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
-                                    struct ref **list, unsigned int flags,
-                                    struct extra_have_objects *);
-extern int server_supports(const char *feature);
-extern int parse_feature_request(const char *features, const char *feature);
-extern const char *server_feature_value(const char *feature, int *len_ret);
-extern const char *parse_feature_value(const char *feature_list, const char *feature, int *len_ret);
-
 extern struct packed_git *parse_pack_index(unsigned char *sha1, const char *idx_path);
 
 /* A hook for count-objects to report invalid files in pack directory */
index 88525b37cf461ee922b81fd6848be5efc8e34542..4fc16ad4f35c558daf5bf96865801828d10b4b9b 100644 (file)
@@ -10,6 +10,7 @@
 #include "refs.h"
 #include "userdiff.h"
 #include "sha1-array.h"
+#include "revision.h"
 
 static struct combine_diff_path *intersect_paths(struct combine_diff_path *curr, int n, int num_parent)
 {
@@ -1383,7 +1384,7 @@ void diff_tree_combined(const unsigned char *sha1,
 void diff_tree_combined_merge(const struct commit *commit, int dense,
                              struct rev_info *rev)
 {
-       struct commit_list *parent = commit->parents;
+       struct commit_list *parent = get_saved_parents(rev, commit);
        struct sha1_array parents = SHA1_ARRAY_INIT;
 
        while (parent) {
index a575564a15c1c340b36d10c90da8fa343692264d..de16a3c0a2d6693173678247ba0755e4d7483a1c 100644 (file)
--- a/commit.c
+++ b/commit.c
@@ -377,6 +377,22 @@ unsigned commit_list_count(const struct commit_list *l)
        return c;
 }
 
+struct commit_list *copy_commit_list(struct commit_list *list)
+{
+       struct commit_list *head = NULL;
+       struct commit_list **pp = &head;
+       while (list) {
+               struct commit_list *new;
+               new = xmalloc(sizeof(struct commit_list));
+               new->item = list->item;
+               new->next = NULL;
+               *pp = new;
+               pp = &new->next;
+               list = list->next;
+       }
+       return head;
+}
+
 void free_commit_list(struct commit_list *list)
 {
        while (list) {
index d912a9d4ac3fe36b2e69d48b1725f01bdf289b26..f9504f70cc5b57de590099024556b9d2b6b2cdce 100644 (file)
--- a/commit.h
+++ b/commit.h
@@ -62,6 +62,9 @@ struct commit_list *commit_list_insert_by_date(struct commit *item,
                                    struct commit_list **list);
 void commit_list_sort_by_date(struct commit_list **list);
 
+/* Shallow copy of the input list */
+struct commit_list *copy_commit_list(struct commit_list *list);
+
 void free_commit_list(struct commit_list *list);
 
 /* Commit formats */
diff --git a/compat/apple-common-crypto.h b/compat/apple-common-crypto.h
new file mode 100644 (file)
index 0000000..c8b9b0e
--- /dev/null
@@ -0,0 +1,86 @@
+/* suppress inclusion of conflicting openssl functions */
+#define OPENSSL_NO_MD5
+#define HEADER_HMAC_H
+#define HEADER_SHA_H
+#include <CommonCrypto/CommonHMAC.h>
+#define HMAC_CTX CCHmacContext
+#define HMAC_Init(hmac, key, len, algo) CCHmacInit(hmac, algo, key, len)
+#define HMAC_Update CCHmacUpdate
+#define HMAC_Final(hmac, hash, ptr) CCHmacFinal(hmac, hash)
+#define HMAC_CTX_cleanup(ignore)
+#define EVP_md5(...) kCCHmacAlgMD5
+#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
+#define APPLE_LION_OR_NEWER
+#include <Security/Security.h>
+/* Apple's TYPE_BOOL conflicts with config.c */
+#undef TYPE_BOOL
+#endif
+
+#ifdef APPLE_LION_OR_NEWER
+#define git_CC_error_check(pattern, err) \
+       do { \
+               if (err) { \
+                       die(pattern, (long)CFErrorGetCode(err)); \
+               } \
+       } while(0)
+
+#define EVP_EncodeBlock git_CC_EVP_EncodeBlock
+static inline int git_CC_EVP_EncodeBlock(unsigned char *out,
+               const unsigned char *in, int inlen)
+{
+       CFErrorRef err;
+       SecTransformRef encoder;
+       CFDataRef input, output;
+       CFIndex length;
+
+       encoder = SecEncodeTransformCreate(kSecBase64Encoding, &err);
+       git_CC_error_check("SecEncodeTransformCreate failed: %ld", err);
+
+       input = CFDataCreate(kCFAllocatorDefault, in, inlen);
+       SecTransformSetAttribute(encoder, kSecTransformInputAttributeName,
+                       input, &err);
+       git_CC_error_check("SecTransformSetAttribute failed: %ld", err);
+
+       output = SecTransformExecute(encoder, &err);
+       git_CC_error_check("SecTransformExecute failed: %ld", err);
+
+       length = CFDataGetLength(output);
+       CFDataGetBytes(output, CFRangeMake(0, length), out);
+
+       CFRelease(output);
+       CFRelease(input);
+       CFRelease(encoder);
+
+       return (int)strlen((const char *)out);
+}
+
+#define EVP_DecodeBlock git_CC_EVP_DecodeBlock
+static int inline git_CC_EVP_DecodeBlock(unsigned char *out,
+               const unsigned char *in, int inlen)
+{
+       CFErrorRef err;
+       SecTransformRef decoder;
+       CFDataRef input, output;
+       CFIndex length;
+
+       decoder = SecDecodeTransformCreate(kSecBase64Encoding, &err);
+       git_CC_error_check("SecEncodeTransformCreate failed: %ld", err);
+
+       input = CFDataCreate(kCFAllocatorDefault, in, inlen);
+       SecTransformSetAttribute(decoder, kSecTransformInputAttributeName,
+                       input, &err);
+       git_CC_error_check("SecTransformSetAttribute failed: %ld", err);
+
+       output = SecTransformExecute(decoder, &err);
+       git_CC_error_check("SecTransformExecute failed: %ld", err);
+
+       length = CFDataGetLength(output);
+       CFDataGetBytes(output, CFRangeMake(0, length), out);
+
+       CFRelease(output);
+       CFRelease(input);
+       CFRelease(decoder);
+
+       return (int)strlen((const char *)out);
+}
+#endif /* APPLE_LION_OR_NEWER */
index bb92c436f70790ba907991f3307aa0fe4afdf0f5..22ee9ef1cfb388fdcb7a2686653a6b10359bca59 100644 (file)
@@ -1086,6 +1086,12 @@ int mingw_kill(pid_t pid, int sig)
                errno = err_win_to_posix(GetLastError());
                CloseHandle(h);
                return -1;
+       } else if (pid > 0 && sig == 0) {
+               HANDLE h = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, pid);
+               if (h) {
+                       CloseHandle(h);
+                       return 0;
+               }
        }
 
        errno = EINVAL;
index e13a7b65e7615da7d788fddd001716a17baef5db..9f9bf0cc9a1405e938fddbedc44468782ad61021 100644 (file)
--- a/config.c
+++ b/config.c
@@ -27,9 +27,9 @@ struct config_source {
        struct strbuf value;
        struct strbuf var;
 
-       int (*fgetc)(struct config_source *c);
-       int (*ungetc)(int c, struct config_source *conf);
-       long (*ftell)(struct config_source *c);
+       int (*do_fgetc)(struct config_source *c);
+       int (*do_ungetc)(int c, struct config_source *conf);
+       long (*do_ftell)(struct config_source *c);
 };
 
 static struct config_source *cf;
@@ -217,13 +217,13 @@ int git_config_from_parameters(config_fn_t fn, void *data)
 
 static int get_next_char(void)
 {
-       int c = cf->fgetc(cf);
+       int c = cf->do_fgetc(cf);
 
        if (c == '\r') {
                /* DOS like systems */
-               c = cf->fgetc(cf);
+               c = cf->do_fgetc(cf);
                if (c != '\n') {
-                       cf->ungetc(c, cf);
+                       cf->do_ungetc(c, cf);
                        c = '\r';
                }
        }
@@ -992,9 +992,9 @@ int git_config_from_file(config_fn_t fn, const char *filename, void *data)
                top.u.file = f;
                top.name = filename;
                top.die_on_error = 1;
-               top.fgetc = config_file_fgetc;
-               top.ungetc = config_file_ungetc;
-               top.ftell = config_file_ftell;
+               top.do_fgetc = config_file_fgetc;
+               top.do_ungetc = config_file_ungetc;
+               top.do_ftell = config_file_ftell;
 
                ret = do_config_from(&top, fn, data);
 
@@ -1013,9 +1013,9 @@ int git_config_from_buf(config_fn_t fn, const char *name, const char *buf,
        top.u.buf.pos = 0;
        top.name = name;
        top.die_on_error = 0;
-       top.fgetc = config_buf_fgetc;
-       top.ungetc = config_buf_ungetc;
-       top.ftell = config_buf_ftell;
+       top.do_fgetc = config_buf_fgetc;
+       top.do_ungetc = config_buf_ungetc;
+       top.do_ftell = config_buf_ftell;
 
        return do_config_from(&top, fn, data);
 }
@@ -1196,7 +1196,7 @@ static int store_aux(const char *key, const char *value, void *cb)
                                return 1;
                        }
 
-                       store.offset[store.seen] = cf->ftell(cf);
+                       store.offset[store.seen] = cf->do_ftell(cf);
                        store.seen++;
                }
                break;
@@ -1223,19 +1223,19 @@ static int store_aux(const char *key, const char *value, void *cb)
                 * Do not increment matches: this is no match, but we
                 * just made sure we are in the desired section.
                 */
-               store.offset[store.seen] = cf->ftell(cf);
+               store.offset[store.seen] = cf->do_ftell(cf);
                /* fallthru */
        case SECTION_END_SEEN:
        case START:
                if (matches(key, value)) {
-                       store.offset[store.seen] = cf->ftell(cf);
+                       store.offset[store.seen] = cf->do_ftell(cf);
                        store.state = KEY_SEEN;
                        store.seen++;
                } else {
                        if (strrchr(key, '.') - key == store.baselen &&
                              !strncmp(key, store.key, store.baselen)) {
                                        store.state = SECTION_SEEN;
-                                       store.offset[store.seen] = cf->ftell(cf);
+                                       store.offset[store.seen] = cf->do_ftell(cf);
                        }
                }
        }
index a0783d4867c5e6a9496e11ed043f666a402c5db9..a80ebd316c34bb0f0cf3d5a04c33123bb2847421 100644 (file)
--- a/connect.c
+++ b/connect.c
@@ -5,6 +5,7 @@
 #include "refs.h"
 #include "run-command.h"
 #include "remote.h"
+#include "connect.h"
 #include "url.h"
 
 static char *server_capabilities;
diff --git a/connect.h b/connect.h
new file mode 100644 (file)
index 0000000..9dff25c
--- /dev/null
+++ b/connect.h
@@ -0,0 +1,13 @@
+#ifndef CONNECT_H
+#define CONNECT_H
+
+#define CONNECT_VERBOSE       (1u << 0)
+extern struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags);
+extern int finish_connect(struct child_process *conn);
+extern int git_connection_is_socket(struct child_process *conn);
+extern int server_supports(const char *feature);
+extern int parse_feature_request(const char *features, const char *feature);
+extern const char *server_feature_value(const char *feature, int *len_ret);
+extern const char *parse_feature_value(const char *feature_list, const char *feature, int *len_ret);
+
+#endif
index 5da920ecd9ec1b64760db863d266fdc9c47502de..e1b73130723a57e7f641236331699e67bb0d4d82 100644 (file)
@@ -2580,7 +2580,7 @@ if [[ -n ${ZSH_VERSION-} ]]; then
                                --*=*|*.) ;;
                                *) c="$c " ;;
                                esac
-                               array[$#array+1]="$c"
+                               array[${#array[@]}+1]="$c"
                        done
                        compset -P '*[=:]'
                        compadd -Q -S '' -p "${2-}" -a -- array && _ret=0
index a81ef5a482d48b114a81e242109e2f0dec0839ed..d6c61b2bdecc5ca89e21ece5df7c2e4bbec9373c 100644 (file)
 # the colored output of "git status -sb" and are available only when
 # using __git_ps1 for PROMPT_COMMAND or precmd.
 
+# check whether printf supports -v
+__git_printf_supports_v=
+printf -v __git_printf_supports_v -- '%s' yes >/dev/null 2>&1
+
 # stores the divergence from upstream in $p
 # used by GIT_PS1_SHOWUPSTREAM
 __git_ps1_show_upstream ()
@@ -433,7 +437,7 @@ __git_ps1 ()
        local gitstring="$c${b##refs/heads/}${f:+$z$f}$r$p"
 
        if [ $pcmode = yes ]; then
-               if [[ -n ${ZSH_VERSION-} ]]; then
+               if [ "${__git_printf_supports_v-}" != yes ]; then
                        gitstring=$(printf -- "$printf_format" "$gitstring")
                else
                        printf -v gitstring -- "$printf_format" "$gitstring"
diff --git a/contrib/examples/git-log.sh b/contrib/examples/git-log.sh
new file mode 100755 (executable)
index 0000000..c2ea71c
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# Copyright (c) 2005 Linus Torvalds
+#
+
+USAGE='[--max-count=<n>] [<since>..<limit>] [--pretty=<format>] [git-rev-list options]'
+SUBDIRECTORY_OK='Yes'
+. git-sh-setup
+
+revs=$(git-rev-parse --revs-only --no-flags --default HEAD "$@") || exit
+[ "$revs" ] || {
+       die "No HEAD ref"
+}
+git-rev-list --pretty $(git-rev-parse --default HEAD "$@") |
+LESS=-S ${PAGER:-less}
diff --git a/contrib/examples/git-whatchanged.sh b/contrib/examples/git-whatchanged.sh
new file mode 100755 (executable)
index 0000000..1fb9feb
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+USAGE='[-p] [--max-count=<n>] [<since>..<limit>] [--pretty=<format>] [-m] [git-diff-tree options] [git-rev-list options]'
+SUBDIRECTORY_OK='Yes'
+. git-sh-setup
+
+diff_tree_flags=$(git-rev-parse --sq --no-revs --flags "$@") || exit
+case "$0" in
+*whatchanged)
+       count=
+       test -z "$diff_tree_flags" &&
+               diff_tree_flags=$(git-repo-config --get whatchanged.difftree)
+       diff_tree_default_flags='-c -M --abbrev' ;;
+*show)
+       count=-n1
+       test -z "$diff_tree_flags" &&
+               diff_tree_flags=$(git-repo-config --get show.difftree)
+       diff_tree_default_flags='--cc --always' ;;
+esac
+test -z "$diff_tree_flags" &&
+       diff_tree_flags="$diff_tree_default_flags"
+
+rev_list_args=$(git-rev-parse --sq --default HEAD --revs-only "$@") &&
+diff_tree_args=$(git-rev-parse --sq --no-revs --no-flags "$@") &&
+
+eval "git-rev-list $count $rev_list_args" |
+eval "git-diff-tree --stdin --pretty -r $diff_tree_flags $diff_tree_args" |
+LESS="$LESS -S" ${PAGER:-less}
index b9196555e56ba9d0e522cfe8d2964662248a0b78..ae545b013dc818472ebecd86c61b2f1cda0279e9 100644 (file)
@@ -1 +1,2 @@
 git-remote-mediawiki
+git-mw
index c3a3cac77b875b2cb925971e2baca141f9c4f163..1e0044b69fc5c87ec03833b6fb1bf434a9e0acc0 100755 (executable)
@@ -674,7 +674,7 @@ def parse_reset(parser):
     parsed_refs[ref] = mark_to_rev(from_mark)
 
 def do_export(parser):
-    global parsed_refs, dirname
+    global parsed_refs, dirname, transports
 
     parser.next()
 
@@ -699,7 +699,8 @@ def do_export(parser):
             branch.generate_revision_history(revid, marks.get_tip(name))
 
             if name in peers:
-                peer = bzrlib.branch.Branch.open(peers[name])
+                peer = bzrlib.branch.Branch.open(peers[name],
+                                                 possible_transports=transports)
                 try:
                     peer.bzrdir.push_branch(branch, revision_id=revid)
                 except bzrlib.errors.DivergedBranches:
@@ -769,25 +770,28 @@ def do_list(parser):
     print
 
 def clone(path, remote_branch):
+    global transports
     try:
-        bdir = bzrlib.bzrdir.BzrDir.create(path)
+        bdir = bzrlib.bzrdir.BzrDir.create(path, possible_transports=transports)
     except bzrlib.errors.AlreadyControlDirError:
-        bdir = bzrlib.bzrdir.BzrDir.open(path)
+        bdir = bzrlib.bzrdir.BzrDir.open(path, possible_transports=transports)
     repo = bdir.find_repository()
     repo.fetch(remote_branch.repository)
     return remote_branch.sprout(bdir, repository=repo)
 
 def get_remote_branch(name):
-    global dirname, branches
+    global dirname, branches, transports
 
-    remote_branch = bzrlib.branch.Branch.open(branches[name])
+    remote_branch = bzrlib.branch.Branch.open(branches[name],
+                                              possible_transports=transports)
     if isinstance(remote_branch.user_transport, bzrlib.transport.local.LocalTransport):
         return remote_branch
 
     branch_path = os.path.join(dirname, 'clone', name)
 
     try:
-        branch = bzrlib.branch.Branch.open(branch_path)
+        branch = bzrlib.branch.Branch.open(branch_path,
+                                           possible_transports=transports)
     except bzrlib.errors.NotBranchError:
         # clone
         branch = clone(branch_path, remote_branch)
@@ -821,17 +825,19 @@ def find_branches(repo):
             yield name, branch.base
 
 def get_repo(url, alias):
-    global dirname, peer, branches
+    global dirname, peer, branches, transports
 
     normal_url = bzrlib.urlutils.normalize_url(url)
-    origin = bzrlib.bzrdir.BzrDir.open(url)
+    origin = bzrlib.bzrdir.BzrDir.open(url, possible_transports=transports)
     is_local = isinstance(origin.transport, bzrlib.transport.local.LocalTransport)
 
     shared_path = os.path.join(gitdir, 'bzr')
     try:
-        shared_dir = bzrlib.bzrdir.BzrDir.open(shared_path)
+        shared_dir = bzrlib.bzrdir.BzrDir.open(shared_path,
+                                               possible_transports=transports)
     except bzrlib.errors.NotBranchError:
-        shared_dir = bzrlib.bzrdir.BzrDir.create(shared_path)
+        shared_dir = bzrlib.bzrdir.BzrDir.create(shared_path,
+                                                 possible_transports=transports)
     try:
         shared_repo = shared_dir.open_repository()
     except bzrlib.errors.NoRepositoryPresent:
@@ -844,7 +850,8 @@ def get_repo(url, alias):
         else:
             # check and remove old organization
             try:
-                bdir = bzrlib.bzrdir.BzrDir.open(clone_path)
+                bdir = bzrlib.bzrdir.BzrDir.open(clone_path,
+                                                 possible_transports=transports)
                 bdir.destroy_repository()
             except bzrlib.errors.NotBranchError:
                 pass
@@ -897,6 +904,7 @@ def main(args):
     global files_cache
     global is_tmp
     global branches, peers
+    global transports
 
     alias = args[1]
     url = args[2]
@@ -909,6 +917,7 @@ def main(args):
     marks = None
     branches = {}
     peers = {}
+    transports = []
 
     if alias[5:] == url:
         is_tmp = True
index 0194c67fb1db1dc6fdd4bd90b67d04cfb7a34e1d..c27603965ab6970dd71003603d6a77e637a22ab5 100755 (executable)
@@ -391,11 +391,24 @@ def get_repo(url, alias):
             os.makedirs(dirname)
     else:
         shared_path = os.path.join(gitdir, 'hg')
-        if not os.path.exists(shared_path):
-            try:
-                hg.clone(myui, {}, url, shared_path, update=False, pull=True)
-            except:
-                die('Repository error')
+
+        # check and upgrade old organization
+        hg_path = os.path.join(shared_path, '.hg')
+        if os.path.exists(shared_path) and not os.path.exists(hg_path):
+            repos = os.listdir(shared_path)
+            for x in repos:
+                local_hg = os.path.join(shared_path, x, 'clone', '.hg')
+                if not os.path.exists(local_hg):
+                    continue
+                if not os.path.exists(hg_path):
+                    shutil.move(local_hg, hg_path)
+                shutil.rmtree(os.path.join(shared_path, x, 'clone'))
+
+        # setup shared repo (if not there)
+        try:
+            hg.peer(myui, {}, shared_path, create=True)
+        except error.RepoError:
+            pass
 
         if not os.path.exists(dirname):
             os.makedirs(dirname)
@@ -1124,7 +1137,7 @@ def do_option(parser):
 
 def fix_path(alias, repo, orig_url):
     url = urlparse.urlparse(orig_url, 'file')
-    if url.scheme != 'file' or os.path.isabs(url.path):
+    if url.scheme != 'file' or os.path.isabs(os.path.expanduser(url.path)):
         return
     abs_url = urlparse.urljoin("%s/" % os.getcwd(), orig_url)
     cmd = ['git', 'config', 'remote.%s.url' % alias, "hg::%s" % abs_url]
index 93385e12baa0d90ae475bd02500edf5ddcce320c..3797ce6041981d1facda44d3a95d4448dbb8a091 100644 (file)
@@ -155,7 +155,7 @@ struct delta_index * create_delta_index(const void *buf, unsigned long bufsize)
                entries = 0xfffffffeU / RABIN_WINDOW;
        }
        hsize = entries / 4;
-       for (i = 4; (1u << i) < hsize && i < 31; i++);
+       for (i = 4; (1u << i) < hsize; i++);
        hsize = 1 << i;
        hmask = hsize - 1;
 
index b6f4b21637fe66a614a0dd6581f90fc12e80a6f8..f1a9053168dbf0f3b5db2b2e51525828408f88ac 100644 (file)
@@ -87,10 +87,12 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
 {
        int entries, i;
        int diff_unmerged_stage = revs->max_count;
-       int silent_on_removed = option & DIFF_SILENT_ON_REMOVED;
        unsigned ce_option = ((option & DIFF_RACY_IS_MODIFIED)
                              ? CE_MATCH_RACY_IS_DIRTY : 0);
 
+       if (option & DIFF_SILENT_ON_REMOVED)
+               handle_deprecated_show_diff_q(&revs->diffopt);
+
        diff_set_mnemonic_prefix(&revs->diffopt, "i/", "w/");
 
        if (diff_unmerged_stage < 0)
@@ -137,8 +139,6 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
                                        perror(ce->name);
                                        continue;
                                }
-                               if (silent_on_removed)
-                                       continue;
                                wt_mode = 0;
                        }
                        dpath->mode = wt_mode;
@@ -204,8 +204,6 @@ int run_diff_files(struct rev_info *revs, unsigned int option)
                                perror(ce->name);
                                continue;
                        }
-                       if (silent_on_removed)
-                               continue;
                        diff_addremove(&revs->diffopt, '-', ce->ce_mode,
                                       ce->sha1, !is_null_sha1(ce->sha1),
                                       ce->name, 0);
index e66fdf33da9e3dd3da561aadffec938e6bc2ad49..e301aafff9ff230313425eea5987b18056b72c98 100644 (file)
@@ -187,7 +187,7 @@ void diff_no_index(struct rev_info *revs,
 {
        int i, prefixlen;
        int no_index = 0;
-       unsigned options = 0;
+       unsigned deprecated_show_diff_q_option_used = 0;
        const char *paths[2];
 
        /* Were we asked to do --no-index explicitly? */
@@ -225,7 +225,7 @@ void diff_no_index(struct rev_info *revs,
                if (!strcmp(argv[i], "--no-index"))
                        i++;
                else if (!strcmp(argv[i], "-q")) {
-                       options |= DIFF_SILENT_ON_REMOVED;
+                       deprecated_show_diff_q_option_used = 1;
                        i++;
                }
                else if (!strcmp(argv[i], "--"))
@@ -260,6 +260,9 @@ void diff_no_index(struct rev_info *revs,
        revs->max_count = -2;
        diff_setup_done(&revs->diffopt);
 
+       if (deprecated_show_diff_q_option_used)
+               handle_deprecated_show_diff_q(&revs->diffopt);
+
        setup_diff_pager(&revs->diffopt);
        DIFF_OPT_SET(&revs->diffopt, EXIT_WITH_STATUS);
 
diff --git a/diff.c b/diff.c
index 266112ca6104450497fb9be504c2404cced595f0..a04a34d0487f231481a7c9c475ac4a3e92b5ed2d 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -669,7 +669,7 @@ static void emit_rewrite_diff(const char *name_a,
        memset(&ecbdata, 0, sizeof(ecbdata));
        ecbdata.color_diff = want_color(o->use_color);
        ecbdata.found_changesp = &o->found_changes;
-       ecbdata.ws_rule = whitespace_rule(name_b ? name_b : name_a);
+       ecbdata.ws_rule = whitespace_rule(name_b);
        ecbdata.opt = o;
        if (ecbdata.ws_rule & WS_BLANK_AT_EOF) {
                mmfile_t mf1, mf2;
@@ -2252,7 +2252,7 @@ static void builtin_diff(const char *name_a,
                        (!two->mode || S_ISGITLINK(two->mode))) {
                const char *del = diff_get_color_opt(o, DIFF_FILE_OLD);
                const char *add = diff_get_color_opt(o, DIFF_FILE_NEW);
-               show_submodule_summary(o->file, one ? one->path : two->path,
+               show_submodule_summary(o->file, one->path ? one->path : two->path,
                                line_prefix,
                                one->sha1, two->sha1, two->dirty_submodule,
                                meta, del, add, reset);
@@ -2372,7 +2372,7 @@ static void builtin_diff(const char *name_a,
                ecbdata.label_path = lbl;
                ecbdata.color_diff = want_color(o->use_color);
                ecbdata.found_changesp = &o->found_changes;
-               ecbdata.ws_rule = whitespace_rule(name_b ? name_b : name_a);
+               ecbdata.ws_rule = whitespace_rule(name_b);
                if (ecbdata.ws_rule & WS_BLANK_AT_EOF)
                        check_blank_at_eof(&mf1, &mf2, &ecbdata);
                ecbdata.opt = o;
@@ -3503,6 +3503,88 @@ static int parse_submodule_opt(struct diff_options *options, const char *value)
        return 1;
 }
 
+static const char diff_status_letters[] = {
+       DIFF_STATUS_ADDED,
+       DIFF_STATUS_COPIED,
+       DIFF_STATUS_DELETED,
+       DIFF_STATUS_MODIFIED,
+       DIFF_STATUS_RENAMED,
+       DIFF_STATUS_TYPE_CHANGED,
+       DIFF_STATUS_UNKNOWN,
+       DIFF_STATUS_UNMERGED,
+       DIFF_STATUS_FILTER_AON,
+       DIFF_STATUS_FILTER_BROKEN,
+       '\0',
+};
+
+static unsigned int filter_bit['Z' + 1];
+
+static void prepare_filter_bits(void)
+{
+       int i;
+
+       if (!filter_bit[DIFF_STATUS_ADDED]) {
+               for (i = 0; diff_status_letters[i]; i++)
+                       filter_bit[(int) diff_status_letters[i]] = (1 << i);
+       }
+}
+
+static unsigned filter_bit_tst(char status, const struct diff_options *opt)
+{
+       return opt->filter & filter_bit[(int) status];
+}
+
+static int parse_diff_filter_opt(const char *optarg, struct diff_options *opt)
+{
+       int i, optch;
+
+       prepare_filter_bits();
+
+       /*
+        * If there is a negation e.g. 'd' in the input, and we haven't
+        * initialized the filter field with another --diff-filter, start
+        * from full set of bits, except for AON.
+        */
+       if (!opt->filter) {
+               for (i = 0; (optch = optarg[i]) != '\0'; i++) {
+                       if (optch < 'a' || 'z' < optch)
+                               continue;
+                       opt->filter = (1 << (ARRAY_SIZE(diff_status_letters) - 1)) - 1;
+                       opt->filter &= ~filter_bit[DIFF_STATUS_FILTER_AON];
+                       break;
+               }
+       }
+
+       for (i = 0; (optch = optarg[i]) != '\0'; i++) {
+               unsigned int bit;
+               int negate;
+
+               if ('a' <= optch && optch <= 'z') {
+                       negate = 1;
+                       optch = toupper(optch);
+               } else {
+                       negate = 0;
+               }
+
+               bit = (0 <= optch && optch <= 'Z') ? filter_bit[optch] : 0;
+               if (!bit)
+                       return optarg[i];
+               if (negate)
+                       opt->filter &= ~bit;
+               else
+                       opt->filter |= bit;
+       }
+       return 0;
+}
+
+/* Used only by "diff-files" and "diff --no-index" */
+void handle_deprecated_show_diff_q(struct diff_options *opt)
+{
+       warning("'diff -q' and 'diff-files -q' are deprecated.");
+       warning("Use 'diff --diff-filter=d' instead to ignore deleted filepairs.");
+       parse_diff_filter_opt("d", opt);
+}
+
 static void enable_patch_output(int *fmt) {
        *fmt &= ~DIFF_FORMAT_NO_OUTPUT;
        *fmt |= DIFF_FORMAT_PATCH;
@@ -3732,7 +3814,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
                return argcount;
        }
        else if ((argcount = parse_long_opt("diff-filter", av, &optarg))) {
-               options->filter = optarg;
+               int offending = parse_diff_filter_opt(optarg, options);
+               if (offending)
+                       die("unknown change class '%c' in --diff-filter=%s",
+                           offending, optarg);
                return argcount;
        }
        else if (!strcmp(arg, "--abbrev"))
@@ -4524,27 +4609,32 @@ void diff_flush(struct diff_options *options)
        }
 }
 
-static void diffcore_apply_filter(const char *filter)
+static int match_filter(const struct diff_options *options, const struct diff_filepair *p)
+{
+       return (((p->status == DIFF_STATUS_MODIFIED) &&
+                ((p->score &&
+                  filter_bit_tst(DIFF_STATUS_FILTER_BROKEN, options)) ||
+                 (!p->score &&
+                  filter_bit_tst(DIFF_STATUS_MODIFIED, options)))) ||
+               ((p->status != DIFF_STATUS_MODIFIED) &&
+                filter_bit_tst(p->status, options)));
+}
+
+static void diffcore_apply_filter(struct diff_options *options)
 {
        int i;
        struct diff_queue_struct *q = &diff_queued_diff;
        struct diff_queue_struct outq;
+
        DIFF_QUEUE_CLEAR(&outq);
 
-       if (!filter)
+       if (!options->filter)
                return;
 
-       if (strchr(filter, DIFF_STATUS_FILTER_AON)) {
+       if (filter_bit_tst(DIFF_STATUS_FILTER_AON, options)) {
                int found;
                for (i = found = 0; !found && i < q->nr; i++) {
-                       struct diff_filepair *p = q->queue[i];
-                       if (((p->status == DIFF_STATUS_MODIFIED) &&
-                            ((p->score &&
-                              strchr(filter, DIFF_STATUS_FILTER_BROKEN)) ||
-                             (!p->score &&
-                              strchr(filter, DIFF_STATUS_MODIFIED)))) ||
-                           ((p->status != DIFF_STATUS_MODIFIED) &&
-                            strchr(filter, p->status)))
+                       if (match_filter(options, q->queue[i]))
                                found++;
                }
                if (found)
@@ -4562,14 +4652,7 @@ static void diffcore_apply_filter(const char *filter)
                /* Only the matching ones */
                for (i = 0; i < q->nr; i++) {
                        struct diff_filepair *p = q->queue[i];
-
-                       if (((p->status == DIFF_STATUS_MODIFIED) &&
-                            ((p->score &&
-                              strchr(filter, DIFF_STATUS_FILTER_BROKEN)) ||
-                             (!p->score &&
-                              strchr(filter, DIFF_STATUS_MODIFIED)))) ||
-                           ((p->status != DIFF_STATUS_MODIFIED) &&
-                            strchr(filter, p->status)))
+                       if (match_filter(options, p))
                                diff_q(&outq, p);
                        else
                                diff_free_filepair(p);
@@ -4676,7 +4759,7 @@ void diffcore_std(struct diff_options *options)
        if (!options->found_follow)
                /* See try_to_follow_renames() in tree-diff.c */
                diff_resolve_rename_copy();
-       diffcore_apply_filter(options->filter);
+       diffcore_apply_filter(options);
 
        if (diff_queued_diff.nr && !DIFF_OPT_TST(options, DIFF_FROM_CONTENTS))
                DIFF_OPT_SET(options, HAS_CHANGES);
diff --git a/diff.h b/diff.h
index 78b4091dd5b59fe4442262cd79cf71f8a4a2b98f..5237d63a71efd2c04354850fb976b254e432a587 100644 (file)
--- a/diff.h
+++ b/diff.h
@@ -103,12 +103,15 @@ enum diff_words_type {
 };
 
 struct diff_options {
-       const char *filter;
        const char *orderfile;
        const char *pickaxe;
        const char *single_follow;
        const char *a_prefix, *b_prefix;
        unsigned flags;
+
+       /* diff-filter bits */
+       unsigned int filter;
+
        int use_color;
        int context;
        int interhunkcontext;
@@ -338,6 +341,8 @@ extern int parse_rename_score(const char **cp_p);
 
 extern long parse_algorithm_value(const char *value);
 
+extern void handle_deprecated_show_diff_q(struct diff_options *);
+
 extern int print_stat_summary(FILE *fp, int files,
                              int insertions, int deletions);
 extern void setup_diff_pager(struct diff_options *);
index 27bdecdaf3d99d3179737e07be971d2458408660..0abbd8dc3a0ec91acd0c143b6d9b5ad41ac90417 100644 (file)
--- a/editor.c
+++ b/editor.c
@@ -37,7 +37,7 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en
                return error("Terminal is dumb, but EDITOR unset");
 
        if (strcmp(editor, ":")) {
-               const char *args[] = { editor, path, NULL };
+               const char *args[] = { editor, real_path(path), NULL };
                struct child_process p;
                int ret, sig;
 
index 23f625f561dfd664a460827d507e7c0b720e9849..21db3fc46d58231fd1345d65ae6cf1104901e55e 100644 (file)
@@ -1568,7 +1568,8 @@ static int tree_content_set(
 static int tree_content_remove(
        struct tree_entry *root,
        const char *p,
-       struct tree_entry *backup_leaf)
+       struct tree_entry *backup_leaf,
+       int allow_root)
 {
        struct tree_content *t;
        const char *slash1;
@@ -1583,6 +1584,12 @@ static int tree_content_remove(
 
        if (!root->tree)
                load_tree(root);
+
+       if (!*p && allow_root) {
+               e = root;
+               goto del_entry;
+       }
+
        t = root->tree;
        for (i = 0; i < t->entry_count; i++) {
                e = t->entries[i];
@@ -1599,7 +1606,7 @@ static int tree_content_remove(
                                goto del_entry;
                        if (!e->tree)
                                load_tree(e);
-                       if (tree_content_remove(e, slash1 + 1, backup_leaf)) {
+                       if (tree_content_remove(e, slash1 + 1, backup_leaf, 0)) {
                                for (n = 0; n < e->tree->entry_count; n++) {
                                        if (e->tree->entries[n]->versions[1].mode) {
                                                hashclr(root->versions[1].sha1);
@@ -1629,7 +1636,8 @@ static int tree_content_remove(
 static int tree_content_get(
        struct tree_entry *root,
        const char *p,
-       struct tree_entry *leaf)
+       struct tree_entry *leaf,
+       int allow_root)
 {
        struct tree_content *t;
        const char *slash1;
@@ -1641,31 +1649,39 @@ static int tree_content_get(
                n = slash1 - p;
        else
                n = strlen(p);
-       if (!n)
+       if (!n && !allow_root)
                die("Empty path component found in input");
 
        if (!root->tree)
                load_tree(root);
+
+       if (!n) {
+               e = root;
+               goto found_entry;
+       }
+
        t = root->tree;
        for (i = 0; i < t->entry_count; i++) {
                e = t->entries[i];
                if (e->name->str_len == n && !strncmp_icase(p, e->name->str_dat, n)) {
-                       if (!slash1) {
-                               memcpy(leaf, e, sizeof(*leaf));
-                               if (e->tree && is_null_sha1(e->versions[1].sha1))
-                                       leaf->tree = dup_tree_content(e->tree);
-                               else
-                                       leaf->tree = NULL;
-                               return 1;
-                       }
+                       if (!slash1)
+                               goto found_entry;
                        if (!S_ISDIR(e->versions[1].mode))
                                return 0;
                        if (!e->tree)
                                load_tree(e);
-                       return tree_content_get(e, slash1 + 1, leaf);
+                       return tree_content_get(e, slash1 + 1, leaf, 0);
                }
        }
        return 0;
+
+found_entry:
+       memcpy(leaf, e, sizeof(*leaf));
+       if (e->tree && is_null_sha1(e->versions[1].sha1))
+               leaf->tree = dup_tree_content(e->tree);
+       else
+               leaf->tree = NULL;
+       return 1;
 }
 
 static int update_branch(struct branch *b)
@@ -2179,7 +2195,7 @@ static uintmax_t do_change_note_fanout(
                        }
 
                        /* Rename fullpath to realpath */
-                       if (!tree_content_remove(orig_root, fullpath, &leaf))
+                       if (!tree_content_remove(orig_root, fullpath, &leaf, 0))
                                die("Failed to remove path %s", fullpath);
                        tree_content_set(orig_root, realpath,
                                leaf.versions[1].sha1,
@@ -2314,7 +2330,7 @@ static void file_change_m(struct branch *b)
 
        /* Git does not track empty, non-toplevel directories. */
        if (S_ISDIR(mode) && !memcmp(sha1, EMPTY_TREE_SHA1_BIN, 20) && *p) {
-               tree_content_remove(&b->branch_tree, p, NULL);
+               tree_content_remove(&b->branch_tree, p, NULL, 0);
                return;
        }
 
@@ -2375,7 +2391,7 @@ static void file_change_d(struct branch *b)
                        die("Garbage after path in: %s", command_buf.buf);
                p = uq.buf;
        }
-       tree_content_remove(&b->branch_tree, p, NULL);
+       tree_content_remove(&b->branch_tree, p, NULL, 1);
 }
 
 static void file_change_cr(struct branch *b, int rename)
@@ -2413,9 +2429,9 @@ static void file_change_cr(struct branch *b, int rename)
 
        memset(&leaf, 0, sizeof(leaf));
        if (rename)
-               tree_content_remove(&b->branch_tree, s, &leaf);
+               tree_content_remove(&b->branch_tree, s, &leaf, 1);
        else
-               tree_content_get(&b->branch_tree, s, &leaf);
+               tree_content_get(&b->branch_tree, s, &leaf, 1);
        if (!leaf.versions[1].mode)
                die("Path %s not in branch", s);
        if (!*d) {      /* C "path/to/subdir" "" */
@@ -2521,7 +2537,7 @@ static void note_change_n(struct branch *b, unsigned char *old_fanout)
        }
 
        construct_path_with_fanout(sha1_to_hex(commit_sha1), *old_fanout, path);
-       if (tree_content_remove(&b->branch_tree, path, NULL))
+       if (tree_content_remove(&b->branch_tree, path, NULL, 0))
                b->num_notes--;
 
        if (is_null_sha1(sha1))
@@ -3051,6 +3067,8 @@ static void parse_ls(struct branch *b)
                struct object_entry *e = parse_treeish_dataref(&p);
                root = new_tree_entry();
                hashcpy(root->versions[1].sha1, e->idx.sha1);
+               if (!is_null_sha1(root->versions[1].sha1))
+                       root->versions[1].mode = S_IFDIR;
                load_tree(root);
                if (*p++ != ' ')
                        die("Missing space after tree-ish: %s", command_buf.buf);
@@ -3065,7 +3083,7 @@ static void parse_ls(struct branch *b)
                        die("Garbage after path in: %s", command_buf.buf);
                p = uq.buf;
        }
-       tree_content_get(root, p, &leaf);
+       tree_content_get(root, p, &leaf, 1);
        /*
         * A directory in preparation would have a sha1 of zero
         * until it is saved.  Save, for simplicity.
index 6684348c0ec9ea742eb98666b56a0bfcef316560..094267fd80cdb09feec75c89aa2f4931f11e583d 100644 (file)
@@ -9,6 +9,7 @@
 #include "fetch-pack.h"
 #include "remote.h"
 #include "run-command.h"
+#include "connect.h"
 #include "transport.h"
 #include "version.h"
 #include "prio-queue.h"
@@ -897,6 +898,8 @@ static struct ref *do_fetch_pack(struct fetch_pack_args *args,
                packet_flush(fd[1]);
        if (args->depth > 0)
                setup_alternate_shallow();
+       else
+               alternate_shallow_file = NULL;
        if (get_pack(args, fd, pack_lockfile))
                die("git fetch-pack: fetch failed.");
 
@@ -987,7 +990,7 @@ struct ref *fetch_pack(struct fetch_pack_args *args,
        }
        ref_cpy = do_fetch_pack(args, fd, ref, sought, nr_sought, pack_lockfile);
 
-       if (alternate_shallow_file) {
+       if (args->depth > 0 && alternate_shallow_file) {
                if (*alternate_shallow_file == '\0') { /* --unshallow */
                        unlink_or_warn(git_path("shallow"));
                        rollback_lock_file(&shallow_lock);
index 40f08bab24df917986de73c8d7f4d9d36fe658da..461cbf39b2affa71e27dd1a95c24d6c65a938d62 100644 (file)
@@ -2,6 +2,7 @@
 #define FETCH_PACK_H
 
 #include "string-list.h"
+#include "run-command.h"
 
 struct fetch_pack_args {
        const char *uploadpack;
index 115cb1da42cc314f75a5b032d90798e5a2ce68c5..8752317fe9a52e0e3ba941c63484b00968b2b695 100644 (file)
@@ -330,6 +330,16 @@ extern NORETURN void die_errno(const char *err, ...) __attribute__((format (prin
 extern int error(const char *err, ...) __attribute__((format (printf, 1, 2)));
 extern void warning(const char *err, ...) __attribute__((format (printf, 1, 2)));
 
+#ifndef NO_OPENSSL
+#ifdef APPLE_COMMON_CRYPTO
+#include "compat/apple-common-crypto.h"
+#else
+#include <openssl/evp.h>
+#include <openssl/hmac.h>
+#endif /* APPLE_COMMON_CRYPTO */
+#include <openssl/x509v3.h>
+#endif /* NO_OPENSSL */
+
 /*
  * Let callers be aware of the constant return value; this can help
  * gcc with -Wuninitialized analysis. We restrict this trick to gcc, though,
@@ -514,7 +524,7 @@ int inet_pton(int af, const char *src, void *dst);
 const char *inet_ntop(int af, const void *src, char *dst, size_t size);
 #endif
 
-extern void release_pack_memory(size_t, int);
+extern void release_pack_memory(size_t);
 
 typedef void (*try_to_free_t)(size_t);
 extern try_to_free_t set_try_to_free_routine(try_to_free_t);
index 31e71ff8b248339749bbcd045acdf602a1a21463..a53a6dc406c26daaf263944d38b53b27db271072 100755 (executable)
--- a/git-p4.py
+++ b/git-p4.py
@@ -2180,9 +2180,13 @@ def streamOneP4File(self, file, contents):
             git_mode = "100755"
         if type_base == "symlink":
             git_mode = "120000"
-            # p4 print on a symlink contains "target\n"; remove the newline
+            # p4 print on a symlink sometimes contains "target\n";
+            # if it does, remove the newline
             data = ''.join(contents)
-            contents = [data[:-1]]
+            if data[-1] == '\n':
+                contents = [data[:-1]]
+            else:
+                contents = [data]
 
         if type_base == "utf16":
             # p4 delivers different text in the python output to -G
index 7a964ad2ff70a8746c52ab30d945ebff95246edd..e15be516369e5e5a9096bb957966938e134e616c 100644 (file)
@@ -53,7 +53,7 @@ die () {
 die_with_status () {
        status=$1
        shift
-       echo >&2 "$*"
+       printf >&2 '%s\n' "$*"
        exit "$status"
 }
 
index 85c9e2c0817c171d67f7458a0764df8d31fb10ad..1e541a21257c70fa67c0fee552ccb05fc5b6a280 100755 (executable)
@@ -195,7 +195,6 @@ save_stash () {
        keep_index=
        patch_mode=
        untracked=
-       force=
        while test $# != 0
        do
                case "$1" in
@@ -216,9 +215,6 @@ save_stash () {
                -u|--include-untracked)
                        untracked=untracked
                        ;;
-               -f|--force)
-                       force=t
-                       ;;
                -a|--all)
                        untracked=all
                        ;;
@@ -262,14 +258,6 @@ save_stash () {
                say "$(gettext "No local changes to save")"
                exit 0
        fi
-       if test -z "$untracked$force" &&
-          test -n "$(git ls-files --killed | head -n 1)"
-       then
-               say "$(gettext "The following untracked files would NOT be saved but need to be removed by stash save:")"
-               test -n "$GIT_QUIET" || git ls-files --killed | sed 's/^/\t/'
-               say "$(gettext "Aborting. Consider using either the --force or --include-untracked option.")" >&2
-               exit 1
-       fi
        test -f "$GIT_DIR/logs/$ref_stash" ||
                clear_stash || die "$(gettext "Cannot initialize stash")"
 
diff --git a/http.c b/http.c
index 2d086aedfac9a8ea384c53f3b1963149b880ed31..2fbf986231d0e23b1d2c15c8d9121f1129139097 100644 (file)
--- a/http.c
+++ b/http.c
@@ -45,6 +45,7 @@ static long curl_low_speed_time = -1;
 static int curl_ftp_no_epsv;
 static const char *curl_http_proxy;
 static const char *curl_cookie_file;
+static int curl_save_cookies;
 static struct credential http_auth = CREDENTIAL_INIT;
 static int http_proactive_auth;
 static const char *user_agent;
@@ -200,6 +201,10 @@ static int http_options(const char *var, const char *value, void *cb)
 
        if (!strcmp("http.cookiefile", var))
                return git_config_string(&curl_cookie_file, var, value);
+       if (!strcmp("http.savecookies", var)) {
+               curl_save_cookies = git_config_bool(var, value);
+               return 0;
+       }
 
        if (!strcmp("http.postbuffer", var)) {
                http_post_buffer = git_config_int(var, value);
@@ -513,6 +518,8 @@ struct active_request_slot *get_active_slot(void)
        slot->callback_data = NULL;
        slot->callback_func = NULL;
        curl_easy_setopt(slot->curl, CURLOPT_COOKIEFILE, curl_cookie_file);
+       if (curl_save_cookies)
+               curl_easy_setopt(slot->curl, CURLOPT_COOKIEJAR, curl_cookie_file);
        curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, pragma_header);
        curl_easy_setopt(slot->curl, CURLOPT_ERRORBUFFER, curl_errorstr);
        curl_easy_setopt(slot->curl, CURLOPT_CUSTOMREQUEST, NULL);
index d6b65e204c6009e5c30f358810198319b70eda25..6f5cc4f782ea82fc14ee596c7bac96e2b6f907e7 100644 (file)
 #include "prompt.h"
 #ifdef NO_OPENSSL
 typedef void *SSL;
-#else
-#ifdef APPLE_COMMON_CRYPTO
-#include <CommonCrypto/CommonHMAC.h>
-#define HMAC_CTX CCHmacContext
-#define HMAC_Init(hmac, key, len, algo) CCHmacInit(hmac, algo, key, len)
-#define HMAC_Update CCHmacUpdate
-#define HMAC_Final(hmac, hash, ptr) CCHmacFinal(hmac, hash)
-#define HMAC_CTX_cleanup(ignore)
-#define EVP_md5() kCCHmacAlgMD5
-#else
-#include <openssl/evp.h>
-#include <openssl/hmac.h>
-#endif
-#include <openssl/x509v3.h>
 #endif
 
 static const char imap_send_usage[] = "git imap-send < <mbox>";
index a49d8e895d3ad24f00e8504ec3eccfbddead6b4c..8534d91826f3cf05f810a28728ee8bd51649d819 100644 (file)
@@ -738,7 +738,7 @@ static int log_tree_diff(struct rev_info *opt, struct commit *commit, struct log
        sha1 = commit->tree->object.sha1;
 
        /* Root commit? */
-       parents = commit->parents;
+       parents = get_saved_parents(opt, commit);
        if (!parents) {
                if (opt->show_root_diff) {
                        diff_root_tree_sha1(sha1, "", &opt->diffopt);
index c2cbca25cc6bb010996063c88c9af3e7b38aad5a..62e9b1cc6831768315dd74eac30348668de22da3 100644 (file)
@@ -43,8 +43,42 @@ static void fix_filename(const char *prefix, const char **file)
        *file = xstrdup(prefix_filename(prefix, strlen(prefix), *file));
 }
 
+static int opt_command_mode_error(const struct option *opt,
+                                 const struct option *all_opts,
+                                 int flags)
+{
+       const struct option *that;
+       struct strbuf message = STRBUF_INIT;
+       struct strbuf that_name = STRBUF_INIT;
+
+       /*
+        * Find the other option that was used to set the variable
+        * already, and report that this is not compatible with it.
+        */
+       for (that = all_opts; that->type != OPTION_END; that++) {
+               if (that == opt ||
+                   that->type != OPTION_CMDMODE ||
+                   that->value != opt->value ||
+                   that->defval != *(int *)opt->value)
+                       continue;
+
+               if (that->long_name)
+                       strbuf_addf(&that_name, "--%s", that->long_name);
+               else
+                       strbuf_addf(&that_name, "-%c", that->short_name);
+               strbuf_addf(&message, ": incompatible with %s", that_name.buf);
+               strbuf_release(&that_name);
+               opterror(opt, message.buf, flags);
+               strbuf_release(&message);
+               return -1;
+       }
+       return opterror(opt, ": incompatible with something else", flags);
+}
+
 static int get_value(struct parse_opt_ctx_t *p,
-                    const struct option *opt, int flags)
+                    const struct option *opt,
+                    const struct option *all_opts,
+                    int flags)
 {
        const char *s, *arg;
        const int unset = flags & OPT_UNSET;
@@ -83,6 +117,16 @@ static int get_value(struct parse_opt_ctx_t *p,
                *(int *)opt->value = unset ? 0 : opt->defval;
                return 0;
 
+       case OPTION_CMDMODE:
+               /*
+                * Giving the same mode option twice, although is unnecessary,
+                * is not a grave error, so let it pass.
+                */
+               if (*(int *)opt->value && *(int *)opt->value != opt->defval)
+                       return opt_command_mode_error(opt, all_opts, flags);
+               *(int *)opt->value = opt->defval;
+               return 0;
+
        case OPTION_SET_PTR:
                *(void **)opt->value = unset ? NULL : (void *)opt->defval;
                return 0;
@@ -143,12 +187,13 @@ static int get_value(struct parse_opt_ctx_t *p,
 
 static int parse_short_opt(struct parse_opt_ctx_t *p, const struct option *options)
 {
+       const struct option *all_opts = options;
        const struct option *numopt = NULL;
 
        for (; options->type != OPTION_END; options++) {
                if (options->short_name == *p->opt) {
                        p->opt = p->opt[1] ? p->opt + 1 : NULL;
-                       return get_value(p, options, OPT_SHORT);
+                       return get_value(p, options, all_opts, OPT_SHORT);
                }
 
                /*
@@ -177,6 +222,7 @@ static int parse_short_opt(struct parse_opt_ctx_t *p, const struct option *optio
 static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg,
                           const struct option *options)
 {
+       const struct option *all_opts = options;
        const char *arg_end = strchr(arg, '=');
        const struct option *abbrev_option = NULL, *ambiguous_option = NULL;
        int abbrev_flags = 0, ambiguous_flags = 0;
@@ -253,7 +299,7 @@ static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg,
                                continue;
                        p->opt = rest + 1;
                }
-               return get_value(p, options, flags ^ opt_flags);
+               return get_value(p, options, all_opts, flags ^ opt_flags);
        }
 
        if (ambiguous_option)
@@ -265,18 +311,20 @@ static int parse_long_opt(struct parse_opt_ctx_t *p, const char *arg,
                        (abbrev_flags & OPT_UNSET) ?  "no-" : "",
                        abbrev_option->long_name);
        if (abbrev_option)
-               return get_value(p, abbrev_option, abbrev_flags);
+               return get_value(p, abbrev_option, all_opts, abbrev_flags);
        return -2;
 }
 
 static int parse_nodash_opt(struct parse_opt_ctx_t *p, const char *arg,
                            const struct option *options)
 {
+       const struct option *all_opts = options;
+
        for (; options->type != OPTION_END; options++) {
                if (!(options->flags & PARSE_OPT_NODASH))
                        continue;
                if (options->short_name == arg[0] && arg[1] == '\0')
-                       return get_value(p, options, OPT_SHORT);
+                       return get_value(p, options, all_opts, OPT_SHORT);
        }
        return -2;
 }
index c378b75b13317d27f05232c7a035ddad2374a87e..8736006ed73560ebb05abac2debb04d5117dc114 100644 (file)
@@ -13,6 +13,7 @@ enum parse_opt_type {
        OPTION_COUNTUP,
        OPTION_SET_INT,
        OPTION_SET_PTR,
+       OPTION_CMDMODE,
        /* options with arguments (usually) */
        OPTION_STRING,
        OPTION_INTEGER,
@@ -21,9 +22,6 @@ enum parse_opt_type {
        OPTION_FILENAME
 };
 
-/* Deprecated synonym */
-#define OPTION_BOOLEAN OPTION_COUNTUP
-
 enum parse_opt_flags {
        PARSE_OPT_KEEP_DASHDASH = 1,
        PARSE_OPT_STOP_AT_NON_OPTION = 2,
@@ -128,8 +126,12 @@ struct option {
 #define OPT_SET_INT(s, l, v, h, i)  { OPTION_SET_INT, (s), (l), (v), NULL, \
                                      (h), PARSE_OPT_NOARG, NULL, (i) }
 #define OPT_BOOL(s, l, v, h)        OPT_SET_INT(s, l, v, h, 1)
+#define OPT_HIDDEN_BOOL(s, l, v, h) { OPTION_SET_INT, (s), (l), (v), NULL, \
+                                     (h), PARSE_OPT_NOARG | PARSE_OPT_HIDDEN, NULL, 1}
 #define OPT_SET_PTR(s, l, v, h, p)  { OPTION_SET_PTR, (s), (l), (v), NULL, \
                                      (h), PARSE_OPT_NOARG, NULL, (p) }
+#define OPT_CMDMODE(s, l, v, h, i) { OPTION_CMDMODE, (s), (l), (v), NULL, \
+                                     (h), PARSE_OPT_NOARG|PARSE_OPT_NONEG, NULL, (i) }
 #define OPT_INTEGER(s, l, v, h)     { OPTION_INTEGER, (s), (l), (v), N_("n"), (h) }
 #define OPT_STRING(s, l, v, a, h)   { OPTION_STRING,  (s), (l), (v), (a), (h) }
 #define OPT_STRING_LIST(s, l, v, a, h) \
@@ -180,7 +182,7 @@ extern NORETURN void usage_msg_opt(const char *msg,
 
 extern int optbug(const struct option *opt, const char *reason);
 extern int opterror(const struct option *opt, const char *reason, int flags);
-#if defined(__GNUC__) && ! defined(clang)
+#if defined(__GNUC__) && ! defined(__clang__)
 #define opterror(o,r,f) (opterror((o),(r),(f)), -1)
 #endif
 
index 7a252ef872c92213c8dcd2144a84cdcf787e586a..204fdc673754c82637c59992198a2c8d31e05fa8 100644 (file)
@@ -61,7 +61,7 @@ =head1 SYNOPSIS
                 remote_refs prompt
                 get_tz_offset
                 credential credential_read credential_write
-                temp_acquire temp_release temp_reset temp_path);
+                temp_acquire temp_is_locked temp_release temp_reset temp_path);
 
 
 =head1 DESCRIPTION
@@ -1206,6 +1206,35 @@ sub temp_acquire {
        $temp_fd;
 }
 
+=item temp_is_locked ( NAME )
+
+Returns true if the internal lock created by a previous C<temp_acquire()>
+call with C<NAME> is still in effect.
+
+When temp_acquire is called on a C<NAME>, it internally locks the temporary
+file mapped to C<NAME>.  That lock will not be released until C<temp_release()>
+is called with either the original C<NAME> or the L<File::Handle> that was
+returned from the original call to temp_acquire.
+
+Subsequent attempts to call C<temp_acquire()> with the same C<NAME> will fail
+unless there has been an intervening C<temp_release()> call for that C<NAME>
+(or its corresponding L<File::Handle> that was returned by the original
+C<temp_acquire()> call).
+
+If true is returned by C<temp_is_locked()> for a C<NAME>, an attempt to
+C<temp_acquire()> the same C<NAME> will cause an error unless
+C<temp_release> is first called on that C<NAME> (or its corresponding
+L<File::Handle> that was returned by the original C<temp_acquire()> call).
+
+=cut
+
+sub temp_is_locked {
+       my ($self, $name) = _maybe_self(@_);
+       my $temp_fd = \$TEMP_FILEMAP{$name};
+
+       defined $$temp_fd && $$temp_fd->opened && $TEMP_FILES{$$temp_fd}{locked};
+}
+
 =item temp_release ( NAME )
 
 =item temp_release ( FILEHANDLE )
index bd174189b98fda05f781697be26db94c9cd53364..10edb27732f439e5290a7b354efefeb10d219669 100644 (file)
@@ -315,11 +315,13 @@ sub change_file_prop {
 sub apply_textdelta {
        my ($self, $fb, $exp) = @_;
        return undef if $self->is_path_ignored($fb->{path});
-       my $fh = $::_repository->temp_acquire('svn_delta');
+       my $suffix = 0;
+       ++$suffix while $::_repository->temp_is_locked("svn_delta_${$}_$suffix");
+       my $fh = $::_repository->temp_acquire("svn_delta_${$}_$suffix");
        # $fh gets auto-closed() by SVN::TxDelta::apply(),
        # (but $base does not,) so dup() it for reading in close_file
        open my $dup, '<&', $fh or croak $!;
-       my $base = $::_repository->temp_acquire('git_blob');
+       my $base = $::_repository->temp_acquire("git_blob_${$}_$suffix");
 
        if ($fb->{blob}) {
                my ($base_is_link, $size);
index 5eb5aadb3aa29103ddcb524ba26273f1f9340869..107aa5917cac70b715d8bdac1d0e83a2f5da2d3d 100644 (file)
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -12,6 +12,11 @@ Members:     Thomas Rast <trast@student.ethz.ch>
                Jan Krüger <jk@jk.gs>
                Christian Stimming <stimming@tuhh.de>
 
+Language:      fr (French)
+Repository:    https://github.com/jnavila/git
+Leader:                Jean-Noël Avila <jn.avila@free.fr>
+Members:       Sébastien Helleu <flashcode@flashtux.org>
+
 Language:      is (Icelandic)
 Leader:                Ævar Arnfjörð Bjarmason <avarab@gmail.com>
 
index 4901488cbb3222aa500cbd0118635f43f6da3acd..11dde114f3b682e782090bfd903953a327d9bc12 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git 1.8.3\n"
+"Project-Id-Version: git 1.8.4\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2013-04-30 08:25+0800\n"
-"PO-Revision-Date: 2012-10-02 19:35+0200\n"
+"POT-Creation-Date: 2013-08-06 14:10+0800\n"
+"PO-Revision-Date: 2013-07-28 18:42+0200\n"
 "Last-Translator: Ralf Thielow <ralf.thielow@gmail.com>\n"
 "Language-Team: German <>\n"
 "Language: de\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: advice.c:53
+#: advice.c:57
 #, c-format
 msgid "hint: %.*s\n"
 msgstr "Hinweis: %.*s\n"
@@ -26,21 +26,21 @@ msgstr "Hinweis: %.*s\n"
 #. * Message used both when 'git commit' fails and when
 #. * other commands doing a merge do.
 #.
-#: advice.c:83
+#: advice.c:87
 msgid ""
 "Fix them up in the work tree,\n"
 "and then use 'git add/rm <file>' as\n"
 "appropriate to mark resolution and make a commit,\n"
 "or use 'git commit -a'."
 msgstr ""
-"Korrigieren Sie dies im Arbeitsbaum,\n"
+"Korrigieren Sie dies im Arbeitsverzeichnis,\n"
 "und benutzen Sie dann 'git add/rm <Datei>'\n"
-"um die Auflösung entsprechend zu markieren und einzutragen,\n"
+"um die Auflösung entsprechend zu markieren und zu committen,\n"
 "oder benutzen Sie 'git commit -a'."
 
 #: archive.c:10
 msgid "git archive [options] <tree-ish> [<path>...]"
-msgstr "git archive [Optionen] <Versionsreferenz> [<Pfad>...]"
+msgstr "git archive [Optionen] <Commit-Referenz> [<Pfad>...]"
 
 #: archive.c:11
 msgid "git archive --list"
@@ -50,12 +50,12 @@ msgstr "git archive --list"
 msgid ""
 "git archive --remote <repo> [--exec <cmd>] [options] <tree-ish> [<path>...]"
 msgstr ""
-"git archive --remote <Projektarchiv> [--exec <Programm>] [Optionen] "
-"<Versionsreferenz> [Pfad...]"
+"git archive --remote <Repository> [--exec <Programm>] [Optionen] <Commit-"
+"Referenz> [Pfad...]"
 
 #: archive.c:13
 msgid "git archive --remote <repo> [--exec <cmd>] --list"
-msgstr "git archive --remote <Projektarchiv> [--exec <Programm>] --list"
+msgstr "git archive --remote <Repository> [--exec <Programm>] --list"
 
 #: archive.c:323
 msgid "fmt"
@@ -63,27 +63,27 @@ msgstr "Format"
 
 #: archive.c:323
 msgid "archive format"
-msgstr "Ausgabeformat"
+msgstr "Archivformat"
 
-#: archive.c:324 builtin/log.c:1126
+#: archive.c:324 builtin/log.c:1173
 msgid "prefix"
 msgstr "Prefix"
 
 #: archive.c:325
 msgid "prepend prefix to each pathname in the archive"
-msgstr "stellt einen Präfix vor jeden Pfadnamen in der Ausgabe"
+msgstr "stellt einen Präfix vor jeden Pfadnamen in dem Archiv"
 
-#: archive.c:326 builtin/archive.c:88 builtin/blame.c:2371
-#: builtin/blame.c:2372 builtin/config.c:55 builtin/fast-export.c:665
-#: builtin/fast-export.c:667 builtin/grep.c:715 builtin/hash-object.c:77
-#: builtin/ls-files.c:490 builtin/ls-files.c:493 builtin/notes.c:536
-#: builtin/notes.c:693 builtin/read-tree.c:107 parse-options.h:149
+#: archive.c:326 builtin/archive.c:88 builtin/blame.c:2292
+#: builtin/blame.c:2293 builtin/config.c:56 builtin/fast-export.c:673
+#: builtin/fast-export.c:675 builtin/grep.c:714 builtin/hash-object.c:77
+#: builtin/ls-files.c:496 builtin/ls-files.c:499 builtin/notes.c:408
+#: builtin/notes.c:565 builtin/read-tree.c:108 parse-options.h:152
 msgid "file"
 msgstr "Datei"
 
 #: archive.c:327 builtin/archive.c:89
 msgid "write the archive to this file"
-msgstr "schreibt die Ausgabe in diese Datei"
+msgstr "schreibt das Archiv in diese Datei"
 
 #: archive.c:329
 msgid "read .gitattributes in working directory"
@@ -107,17 +107,17 @@ msgstr "besser komprimieren"
 
 #: archive.c:343
 msgid "list supported archive formats"
-msgstr "listet unterstützte Ausgabeformate auf"
+msgstr "listet unterstützte Archivformate auf"
 
-#: archive.c:345 builtin/archive.c:90 builtin/clone.c:86
+#: archive.c:345 builtin/archive.c:90 builtin/clone.c:85
 msgid "repo"
-msgstr "Projektarchiv"
+msgstr "Repository"
 
 #: archive.c:346 builtin/archive.c:91
 msgid "retrieve the archive from remote repository <repo>"
-msgstr "ruft das Archiv von externem Projektarchiv <Projektarchiv> ab"
+msgstr "ruft das Archiv von Remote-Repository <Repository> ab"
 
-#: archive.c:347 builtin/archive.c:92 builtin/notes.c:615
+#: archive.c:347 builtin/archive.c:92 builtin/notes.c:487
 msgid "command"
 msgstr "Programm"
 
@@ -136,88 +136,90 @@ msgstr ""
 #: branch.c:60
 #, c-format
 msgid "Not setting branch %s as its own upstream."
-msgstr "Zweig %s kann nicht sein eigener Übernahmezweig sein."
+msgstr "Branch %s kann nicht sein eigener Upstream-Branch sein."
 
 #: branch.c:82
 #, c-format
 msgid "Branch %s set up to track remote branch %s from %s by rebasing."
-msgstr "Zweig %s konfiguriert zum Folgen von externem Zweig %s von %s durch "
-"Neuaufbau."
+msgstr ""
+"Branch %s konfiguriert zum Folgen von Remote-Branch %s von %s durch Rebase."
 
 #: branch.c:83
 #, c-format
 msgid "Branch %s set up to track remote branch %s from %s."
-msgstr "Zweig %s konfiguriert zum Folgen von externem Zweig %s von %s."
+msgstr "Branch %s konfiguriert zum Folgen von Remote-Branch %s von %s."
 
 #: branch.c:87
 #, c-format
 msgid "Branch %s set up to track local branch %s by rebasing."
-msgstr "Zweig %s konfiguriert zum Folgen von lokalem Zweig %s durch Neuaufbau."
+msgstr "Branch %s konfiguriert zum Folgen von lokalem Branch %s durch Rebase."
 
 #: branch.c:88
 #, c-format
 msgid "Branch %s set up to track local branch %s."
-msgstr "Zweig %s konfiguriert zum Folgen von lokalem Zweig %s."
+msgstr "Branch %s konfiguriert zum Folgen von lokalem Branch %s."
 
 #: branch.c:92
 #, c-format
 msgid "Branch %s set up to track remote ref %s by rebasing."
-msgstr "Zweig %s konfiguriert zum Folgen von externer Referenz %s durch "
-"Neuaufbau."
+msgstr "Branch %s konfiguriert zum Folgen von Remote-Referenz %s durch Rebase."
 
 #: branch.c:93
 #, c-format
 msgid "Branch %s set up to track remote ref %s."
-msgstr "Zweig %s konfiguriert zum Folgen von externer Referenz %s."
+msgstr "Branch %s konfiguriert zum Folgen von Remote-Referenz %s."
 
 #: branch.c:97
 #, c-format
 msgid "Branch %s set up to track local ref %s by rebasing."
-msgstr "Zweig %s konfiguriert zum Folgen von lokaler Referenz %s durch "
-"Neuaufbau."
+msgstr ""
+"Branch %s konfiguriert zum Folgen von lokaler Referenz %s durch Rebase."
 
 #: branch.c:98
 #, c-format
 msgid "Branch %s set up to track local ref %s."
-msgstr "Zweig %s konfiguriert zum Folgen von lokaler Referenz %s."
+msgstr "Branch %s konfiguriert zum Folgen von lokaler Referenz %s."
 
 #: branch.c:118
 #, c-format
 msgid "Tracking not set up: name too long: %s"
-msgstr "Konfiguration zum Folgen von Zweig nicht eingerichtet. Name zu lang: %s"
+msgstr ""
+"Konfiguration zum Folgen von Branch nicht eingerichtet. Name zu lang: %s"
 
 #: branch.c:137
 #, c-format
 msgid "Not tracking: ambiguous information for ref %s"
-msgstr "Konfiguration zum Folgen von Zweig nicht eingerichtet. Referenz %s ist mehrdeutig."
+msgstr ""
+"Konfiguration zum Folgen von Branch nicht eingerichtet. Referenz %s ist "
+"mehrdeutig."
 
 #: branch.c:182
 #, c-format
 msgid "'%s' is not a valid branch name."
-msgstr "'%s' ist kein gültiger Zweigname."
+msgstr "'%s' ist kein gültiger Branchname."
 
 #: branch.c:187
 #, c-format
 msgid "A branch named '%s' already exists."
-msgstr "Zweig '%s' existiert bereits."
+msgstr "Branch '%s' existiert bereits."
 
 #: branch.c:195
 msgid "Cannot force update the current branch."
-msgstr "Kann Aktualisierung des aktuellen Zweiges nicht erzwingen."
+msgstr "Kann Aktualisierung des aktuellen Branches nicht erzwingen."
 
-#: branch.c:201
+#: branch.c:216
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr ""
-"Kann Informationen zum Übernahmezweig nicht einrichten; Startpunkt '%s' ist "
-"kein Zweig."
+"Kann Tracking-Informationen nicht einrichten; Startpunkt '%s' ist kein "
+"Branch."
 
-#: branch.c:203
+#: branch.c:218
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
-msgstr "der angeforderte externe Übernahmezweig '%s' existiert nicht"
+msgstr "der angeforderte Upstream-Branch '%s' existiert nicht"
 
-#: branch.c:205
+#: branch.c:220
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -229,35 +231,35 @@ msgid ""
 "\"git push -u\" to set the upstream config as you push."
 msgstr ""
 "\n"
-"Falls Sie vorhaben, Ihre Arbeit auf einem bereits existierenden,\n"
-"externen Übernahmezweig aufzubauen, sollten Sie \"git fetch\"\n"
+"Falls Sie vorhaben, Ihre Arbeit auf einem bereits existierenden\n"
+"Upstream-Branch aufzubauen, sollten Sie \"git fetch\"\n"
 "ausführen, um diesen abzurufen.\n"
 "\n"
-"Falls Sie vorhaben, einen neuen lokalen Zweig zu versenden\n"
+"Falls Sie vorhaben, einen neuen lokalen Branch zu versenden\n"
 "der seinem externen Gegenstück folgen soll, können Sie\n"
-"\"git push -u\" verwenden, um den externen Übernahmezweig\n"
-"beim Versand zu konfigurieren."
+"\"git push -u\" verwenden, um den Upstream-Branch beim \"push\"\n"
+"zu konfigurieren."
 
-#: branch.c:250
+#: branch.c:265
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "Ungültiger Objekt-Name: '%s'"
 
-#: branch.c:270
+#: branch.c:285
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "mehrdeutiger Objekt-Name: '%s'"
 
-#: branch.c:275
+#: branch.c:290
 #, c-format
 msgid "Not a valid branch point: '%s'."
-msgstr "Ungültiger Verzweigungspunkt: '%s'"
+msgstr "Ungültiger Branchpunkt: '%s'"
 
-#: branch.c:281
+#: branch.c:296
 msgid "Failed to lock ref for update"
 msgstr "Fehler beim Sperren der Referenz zur Aktualisierung."
 
-#: branch.c:299
+#: branch.c:314
 msgid "Failed to write ref"
 msgstr "Fehler beim Schreiben der Referenz."
 
@@ -271,18 +273,18 @@ msgstr "'%s' sieht nicht wie eine v2 Paketdatei aus"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "nicht erkannter Kopfbereich: %s%s (%d)"
 
-#: bundle.c:89 builtin/commit.c:676
+#: bundle.c:89 builtin/commit.c:697
 #, c-format
 msgid "could not open '%s'"
 msgstr "Konnte '%s' nicht öffnen"
 
 #: bundle.c:140
 msgid "Repository lacks these prerequisite commits:"
-msgstr "Dem Projektarchiv fehlen folgende vorausgesetzte Versionen:"
+msgstr "Dem Repository fehlen folgende vorausgesetzte Commits:"
 
-#: bundle.c:164 sequencer.c:651 sequencer.c:1101 builtin/log.c:300
-#: builtin/log.c:770 builtin/log.c:1344 builtin/log.c:1570 builtin/merge.c:349
-#: builtin/shortlog.c:155
+#: bundle.c:164 sequencer.c:661 sequencer.c:1111 builtin/log.c:331
+#: builtin/log.c:801 builtin/log.c:1399 builtin/log.c:1625 builtin/merge.c:364
+#: builtin/shortlog.c:156
 msgid "revision walk setup failed"
 msgstr "Einrichtung des Revisionsgangs fehlgeschlagen"
 
@@ -308,7 +310,7 @@ msgstr[1] "Das Paket benötigt diese %d Referenzen:"
 msgid "rev-list died"
 msgstr "\"rev-list\" abgebrochen"
 
-#: bundle.c:300 builtin/log.c:1255 builtin/shortlog.c:258
+#: bundle.c:300 builtin/log.c:1310 builtin/shortlog.c:259
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "nicht erkanntes Argument: %s"
@@ -339,30 +341,30 @@ msgstr "kann '%s' nicht erstellen"
 msgid "index-pack died"
 msgstr "Erstellung der Paketindexdatei abgebrochen"
 
-#: commit.c:50
+#: commit.c:53
 #, c-format
 msgid "could not parse %s"
 msgstr "konnte %s nicht parsen"
 
-#: commit.c:52
+#: commit.c:55
 #, c-format
 msgid "%s %s is not a commit!"
-msgstr "%s %s ist keine Version!"
+msgstr "%s %s ist kein Commit!"
 
 #: compat/obstack.c:406 compat/obstack.c:408
 msgid "memory exhausted"
 msgstr "Speicher verbraucht"
 
-#: connected.c:39
+#: connected.c:60
 msgid "Could not run 'git rev-list'"
 msgstr "Konnte 'git rev-list' nicht ausführen"
 
-#: connected.c:48
+#: connected.c:80
 #, c-format
 msgid "failed write to rev-list: %s"
 msgstr "Fehler beim Schreiben nach rev-list: %s"
 
-#: connected.c:56
+#: connected.c:88
 #, c-format
 msgid "failed to close rev-list's stdin: %s"
 msgstr "Fehler beim Schließen von rev-list's Standard-Eingabe: %s"
@@ -459,7 +461,7 @@ msgstr ""
 "Fehler in 'diff.dirstat' Konfigurationsvariable gefunden:\n"
 "%s"
 
-#: diff.c:3481
+#: diff.c:3487
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -468,7 +470,7 @@ msgstr ""
 "Fehler beim Parsen des --dirstat/-X Optionsparameters:\n"
 "%s"
 
-#: diff.c:3495
+#: diff.c:3501
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr "Fehler beim Parsen des --submodule Optionsparameters: '%s'"
@@ -510,20 +512,20 @@ msgstr "'%s': %s"
 msgid "'%s': short read %s"
 msgstr "'%s': read() zu kurz %s"
 
-#: help.c:212
+#: help.c:210
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "Vorhandene Git-Kommandos in '%s'"
 
-#: help.c:219
+#: help.c:217
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "Vorhandene Git-Kommandos irgendwo in Ihrem $PATH"
 
-#: help.c:235
+#: help.c:233
 msgid "The most commonly used git commands are:"
 msgstr "Die allgemein verwendeten Git-Kommandos sind:"
 
-#: help.c:292
+#: help.c:290
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -532,11 +534,11 @@ msgstr ""
 "'%s' scheint ein git-Kommando zu sein, konnte aber\n"
 "nicht ausgeführt werden. Vielleicht ist git-%s fehlerhaft?"
 
-#: help.c:349
+#: help.c:347
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Uh oh. Keine Git-Kommandos auf Ihrem System vorhanden."
 
-#: help.c:371
+#: help.c:369
 #, c-format
 msgid ""
 "WARNING: You called a Git command named '%s', which does not exist.\n"
@@ -545,17 +547,17 @@ msgstr ""
 "Warnung: Sie haben das nicht existierende Git-Kommando '%s' ausgeführt.\n"
 "Setze fort unter der Annahme, dass Sie '%s' gemeint haben"
 
-#: help.c:376
+#: help.c:374
 #, c-format
 msgid "in %0.1f seconds automatically..."
 msgstr "automatisch in %0.1f Sekunden..."
 
-#: help.c:383
+#: help.c:381
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: '%s' ist kein Git-Kommando. Siehe 'git --help'."
 
-#: help.c:387
+#: help.c:385 help.c:444
 msgid ""
 "\n"
 "Did you mean this?"
@@ -569,89 +571,94 @@ msgstr[1] ""
 "\n"
 "Haben Sie eines von diesen gemeint?"
 
+#: help.c:440
+#, c-format
+msgid "%s: %s - %s"
+msgstr "%s: %s - %s"
+
 #: merge.c:56
 msgid "failed to read the cache"
 msgstr "Lesen des Zwischenspeichers fehlgeschlagen"
 
 #: merge.c:110 builtin/checkout.c:365 builtin/checkout.c:566
-#: builtin/clone.c:645
+#: builtin/clone.c:656
 msgid "unable to write new index file"
-msgstr "Konnte neue Bereitstellungsdatei nicht schreiben."
+msgstr "Konnte neue Staging-Area-Datei nicht schreiben."
 
 #: merge-recursive.c:190
 #, c-format
 msgid "(bad commit)\n"
-msgstr "(ungültige Version)\n"
+msgstr "(ungültiger Commit)\n"
 
 #: merge-recursive.c:206
 #, c-format
 msgid "addinfo_cache failed for path '%s'"
 msgstr "addinfo_cache für Pfad '%s' fehlgeschlagen"
 
-#: merge-recursive.c:268
+#: merge-recursive.c:269
 msgid "error building trees"
-msgstr "Fehler beim Erstellen der Bäume"
+msgstr "Fehler beim Erstellen der \"Tree\"-Objekte"
 
-#: merge-recursive.c:672
+#: merge-recursive.c:673
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "Fehler beim Erstellen des Pfades '%s'%s"
 
-#: merge-recursive.c:683
+#: merge-recursive.c:684
 #, c-format
 msgid "Removing %s to make room for subdirectory\n"
 msgstr "Entferne %s um Platz für Unterverzeichnis zu schaffen\n"
 
 #. something else exists
 #. .. but not some other error (who really cares what?)
-#: merge-recursive.c:697 merge-recursive.c:718
+#: merge-recursive.c:698 merge-recursive.c:719
 msgid ": perhaps a D/F conflict?"
 msgstr ": vielleicht ein Verzeichnis/Datei-Konflikt?"
 
-#: merge-recursive.c:708
+#: merge-recursive.c:709
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "verweigere, da unbeobachtete Dateien in '%s' verloren gehen würden"
 
-#: merge-recursive.c:748
+#: merge-recursive.c:749
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "kann Objekt %s '%s' nicht lesen"
 
-#: merge-recursive.c:750
+#: merge-recursive.c:751
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "Blob erwartet für %s '%s'"
 
-#: merge-recursive.c:773 builtin/clone.c:313
+#: merge-recursive.c:774 builtin/clone.c:312
 #, c-format
 msgid "failed to open '%s'"
 msgstr "Fehler beim Öffnen von '%s'"
 
-#: merge-recursive.c:781
+#: merge-recursive.c:782
 #, c-format
 msgid "failed to symlink '%s'"
-msgstr "Fehler beim Erstellen einer symbolischen Verknüpfung für '%s'"
+msgstr "Fehler beim Erstellen eines symbolischen Verweises für '%s'"
 
-#: merge-recursive.c:784
+#: merge-recursive.c:785
 #, 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:922
+#: merge-recursive.c:923
 msgid "Failed to execute internal merge"
-msgstr "Fehler bei Ausführung der internen Zusammenführung"
+msgstr "Fehler bei Ausführung des internen Merges"
 
-#: merge-recursive.c:926
+#: merge-recursive.c:927
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Konnte %s nicht zur Datenbank hinzufügen"
 
-#: merge-recursive.c:942
+#: merge-recursive.c:943
 msgid "unsupported object type in the tree"
-msgstr "nicht unterstützter Objekttyp im Baum"
+msgstr "nicht unterstützter Objekttyp im Verzeichnis"
 
-#: merge-recursive.c:1021 merge-recursive.c:1035
+#: merge-recursive.c:1022 merge-recursive.c:1036
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -660,7 +667,7 @@ 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:1027 merge-recursive.c:1040
+#: merge-recursive.c:1028 merge-recursive.c:1041
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -669,174 +676,197 @@ 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:1081
+#: merge-recursive.c:1082
 msgid "rename"
 msgstr "umbenennen"
 
-#: merge-recursive.c:1081
+#: merge-recursive.c:1082
 msgid "renamed"
 msgstr "umbenannt"
 
-#: merge-recursive.c:1137
+#: merge-recursive.c:1138
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s ist ein Verzeichnis in %s, füge es stattdessen als %s hinzu"
 
-#: merge-recursive.c:1159
+#: merge-recursive.c:1160
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
 "\"->\"%s\" in \"%s\"%s"
 msgstr ""
-"KONFLIKT (umbenennen/umbenennen): Benenne um \"%s\"->\"%s\" in Zweig \"%s\" "
-"und \"%s\"->\"%s\" in Zweig \"%s\"%s"
+"KONFLIKT (umbenennen/umbenennen): Benenne um \"%s\"->\"%s\" in Branch \"%s\" "
+"und \"%s\"->\"%s\" in Branch \"%s\"%s"
 
-#: merge-recursive.c:1164
+#: merge-recursive.c:1165
 msgid " (left unresolved)"
 msgstr " (bleibt unaufgelöst)"
 
-#: merge-recursive.c:1218
+#: merge-recursive.c:1219
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "KONFLIKT (umbenennen/umbenennen): Benenne um %s->%s in %s. Benenne um %s->%s "
 "in %s"
 
-#: merge-recursive.c:1248
+#: merge-recursive.c:1249
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "Benenne stattdessen %s nach %s und %s nach %s um"
 
-#: merge-recursive.c:1447
+#: merge-recursive.c:1448
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr ""
 "KONFLIKT (umbenennen/hinzufügen): Benenne um %s->%s in %s. %s hinzugefügt in "
 "%s"
 
-#: merge-recursive.c:1457
+#: merge-recursive.c:1458
 #, c-format
 msgid "Adding merged %s"
 msgstr "Füge zusammengeführte Datei %s hinzu"
 
-#: merge-recursive.c:1462 merge-recursive.c:1660
+#: merge-recursive.c:1463 merge-recursive.c:1661
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Füge stattdessen als %s hinzu"
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1514
 #, c-format
 msgid "cannot read object %s"
 msgstr "kann Objekt %s nicht lesen"
 
-#: merge-recursive.c:1516
+#: merge-recursive.c:1517
 #, c-format
 msgid "object %s is not a blob"
 msgstr "Objekt %s ist kein Blob"
 
-#: merge-recursive.c:1564
+#: merge-recursive.c:1565
 msgid "modify"
 msgstr "ändern"
 
-#: merge-recursive.c:1564
+#: merge-recursive.c:1565
 msgid "modified"
 msgstr "geändert"
 
-#: merge-recursive.c:1574
+#: merge-recursive.c:1575
 msgid "content"
 msgstr "Inhalt"
 
-#: merge-recursive.c:1581
+#: merge-recursive.c:1582
 msgid "add/add"
 msgstr "hinzufügen/hinzufügen"
 
-#: merge-recursive.c:1615
+#: merge-recursive.c:1616
 #, c-format
 msgid "Skipped %s (merged same as existing)"
-msgstr "%s ausgelassen (Ergebnis der Zusammenführung existiert bereits)"
+msgstr "%s ausgelassen (Ergebnis des Merges existiert bereits)"
 
-#: merge-recursive.c:1629
+#: merge-recursive.c:1630
 #, c-format
 msgid "Auto-merging %s"
-msgstr "automatische Zusammenführung von %s"
+msgstr "automatischer Merge von %s"
 
-#: merge-recursive.c:1633 git-submodule.sh:1029
+#: merge-recursive.c:1634 git-submodule.sh:1118
 msgid "submodule"
-msgstr "Unterprojekt"
+msgstr "Submodul"
 
-#: merge-recursive.c:1634
+#: merge-recursive.c:1635
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
-msgstr "KONFLIKT (%s): Zusammenführungskonflikt in %s"
+msgstr "KONFLIKT (%s): Merge-Konflikt in %s"
 
-#: merge-recursive.c:1724
+#: merge-recursive.c:1725
 #, c-format
 msgid "Removing %s"
 msgstr "Entferne %s"
 
-#: merge-recursive.c:1749
+#: merge-recursive.c:1750
 msgid "file/directory"
 msgstr "Datei/Verzeichnis"
 
-#: merge-recursive.c:1755
+#: merge-recursive.c:1756
 msgid "directory/file"
 msgstr "Verzeichnis/Datei"
 
-#: merge-recursive.c:1760
+#: merge-recursive.c:1761
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "KONFLIKT (%s): Es existiert bereits ein Verzeichnis %s in %s. Füge %s als %s "
 "hinzu."
 
-#: merge-recursive.c:1770
+#: merge-recursive.c:1771
 #, c-format
 msgid "Adding %s"
 msgstr "Füge %s hinzu"
 
-#: merge-recursive.c:1787
+#: merge-recursive.c:1788
 msgid "Fatal merge failure, shouldn't happen."
-msgstr "Fataler Fehler bei der Zusammenführung. Sollte nicht passieren."
+msgstr "Fataler Merge-Fehler. Sollte nicht passieren."
 
-#: merge-recursive.c:1806
+#: merge-recursive.c:1807
 msgid "Already up-to-date!"
 msgstr "Bereits aktuell!"
 
-#: merge-recursive.c:1815
+#: merge-recursive.c:1816
 #, c-format
 msgid "merging of trees %s and %s failed"
-msgstr "Zusammenführen der Bäume %s und %s fehlgeschlagen"
+msgstr "Zusammenführen der \"Tree\"-Objekte %s und %s fehlgeschlagen"
 
-#: merge-recursive.c:1845
+#: merge-recursive.c:1846
 #, c-format
 msgid "Unprocessed path??? %s"
 msgstr "unverarbeiteter Pfad??? %s"
 
-#: merge-recursive.c:1890
+#: merge-recursive.c:1891
 msgid "Merging:"
-msgstr "Zusammenführung:"
+msgstr "Merge:"
 
-#: merge-recursive.c:1903
+#: merge-recursive.c:1904
 #, c-format
 msgid "found %u common ancestor:"
 msgid_plural "found %u common ancestors:"
-msgstr[0] "%u gemeinsamen Vorfahren gefunden"
-msgstr[1] "%u gemeinsame Vorfahren gefunden"
+msgstr[0] "%u gemeinsamen Vorgänger-Commit gefunden"
+msgstr[1] "%u gemeinsame Vorgänger-Commits gefunden"
 
-#: merge-recursive.c:1940
+#: merge-recursive.c:1941
 msgid "merge returned no commit"
-msgstr "Zusammenführung hat keine Version zurückgegeben"
+msgstr "Merge hat keinen Commit zurückgegeben"
 
-#: merge-recursive.c:1997
+#: merge-recursive.c:1998
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Konnte Objekt '%s' nicht parsen."
 
-#: merge-recursive.c:2009 builtin/merge.c:658
+#: merge-recursive.c:2010 builtin/merge.c:672
 msgid "Unable to write index."
-msgstr "Konnte Bereitstellung nicht schreiben."
+msgstr "Konnte Staging-Area nicht schreiben."
+
+#: notes-utils.c:40
+msgid "Cannot commit uninitialized/unreferenced notes tree"
+msgstr ""
+"Kann uninitialisiertes/unreferenzierte Notiz-Verzeichnis nicht committen."
 
-#: object.c:195
+#: notes-utils.c:81
+#, c-format
+msgid "Bad notes.rewriteMode value: '%s'"
+msgstr "Ungültiger notes.rewriteMode Wert: '%s'"
+
+#: notes-utils.c:91
+#, c-format
+msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
+msgstr ""
+"Umschreiben der Notizen in %s zurückgewiesen (außerhalb von refs/notes/)"
+
+#. TRANSLATORS: The first %s is the name of the
+#. environment variable, the second %s is its value
+#: notes-utils.c:118
+#, c-format
+msgid "Bad %s value: '%s'"
+msgstr "Ungültiger %s Wert: '%s'"
+
+#: object.c:204
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "Konnte Objekt '%s' nicht parsen."
@@ -869,41 +899,40 @@ msgstr "-NUM"
 #: pathspec.c:83
 #, c-format
 msgid "Path '%s' is in submodule '%.*s'"
-msgstr "Pfad '%s' befindet sich in Unterprojekt '%.*s'"
+msgstr "Pfad '%s' befindet sich in Submodul '%.*s'"
 
 #: pathspec.c:99
 #, c-format
 msgid "'%s' is beyond a symbolic link"
-msgstr "'%s' ist über einem symbolischen Link"
+msgstr "'%s' ist hinter einem symbolischen Verweis"
 
-#: remote.c:1781
+#: remote.c:1788
 #, 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 Zweig ist vor '%s' um %d Version.\n"
-msgstr[1] "Ihr Zweig ist vor '%s' um %d Versionen.\n"
+msgstr[0] "Ihr Branch ist vor '%s' um %d Commit.\n"
+msgstr[1] "Ihr Branch ist vor '%s' um %d Commits.\n"
 
-#: remote.c:1787
+#: remote.c:1794
 msgid "  (use \"git push\" to publish your local commits)\n"
-msgstr "  (benutzen Sie \"git push\" um lokalen Versionen herauszubringen)\n"
+msgstr "  (benutzen Sie \"git push\" um lokale Commits zu publizieren)\n"
 
-#: remote.c:1790
+#: remote.c:1797
 #, 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 Zweig ist zu '%s' um %d Version hinterher, und kann vorgespult werden.\n"
+"Ihr Branch ist zu '%s' um %d Commit hinterher, und kann vorgespult werden.\n"
 msgstr[1] ""
-"Ihr Zweig ist zu '%s' um %d Versionen hinterher, und kann vorgespult "
-"werden.\n"
+"Ihr Branch ist zu '%s' um %d Commits hinterher, und kann vorgespult werden.\n"
 
-#: remote.c:1798
+#: remote.c:1805
 msgid "  (use \"git pull\" to update your local branch)\n"
 msgstr ""
-"  (benutzen Sie \"git pull\" um Ihren lokalen Zweig zu aktualisieren)\n"
+"  (benutzen Sie \"git pull\" um Ihren lokalen Branch zu aktualisieren)\n"
 
-#: remote.c:1801
+#: remote.c:1808
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -912,26 +941,35 @@ msgid_plural ""
 "Your branch and '%s' have diverged,\n"
 "and have %d and %d different commits each, respectively.\n"
 msgstr[0] ""
-"Ihr Zweig und '%s' sind divergiert,\n"
-"und haben jeweils %d und %d unterschiedliche Versionen.\n"
+"Ihr Branch und '%s' sind divergiert,\n"
+"und haben jeweils %d und %d unterschiedliche Commits.\n"
 msgstr[1] ""
-"Ihr Zweig und '%s' sind divergiert,\n"
-"und haben jeweils %d und %d unterschiedliche Versionen.\n"
+"Ihr Branch und '%s' sind divergiert,\n"
+"und haben jeweils %d und %d unterschiedliche Commits.\n"
 
-#: remote.c:1811
+#: remote.c:1818
 msgid "  (use \"git pull\" to merge the remote branch into yours)\n"
 msgstr ""
-"  (benutzen Sie \"git pull\" um Ihren Zweig mit dem externen "
+"  (benutzen Sie \"git pull\" um Ihren Branch mit dem Remote-Branch "
 "zusammenzuführen)\n"
 
-#: sequencer.c:206 builtin/merge.c:776 builtin/merge.c:889 builtin/merge.c:999
-#: builtin/merge.c:1009
+#: run-command.c:80
+msgid "open /dev/null failed"
+msgstr "Öffnen von /dev/null fehlgeschlagen"
+
+#: run-command.c:82
+#, c-format
+msgid "dup2(%d,%d) failed"
+msgstr "dup2(%d,%d) fehlgeschlagen"
+
+#: sequencer.c:206 builtin/merge.c:790 builtin/merge.c:903
+#: builtin/merge.c:1013 builtin/merge.c:1023
 #, c-format
 msgid "Could not open '%s' for writing"
 msgstr "Konnte '%s' nicht zum Schreiben öffnen."
 
-#: sequencer.c:208 builtin/merge.c:335 builtin/merge.c:779
-#: builtin/merge.c:1001 builtin/merge.c:1014
+#: sequencer.c:208 builtin/merge.c:350 builtin/merge.c:793
+#: builtin/merge.c:1015 builtin/merge.c:1028
 #, c-format
 msgid "Could not write to '%s'"
 msgstr "Konnte nicht nach '%s' schreiben."
@@ -954,7 +992,7 @@ msgstr ""
 "mit 'git add <Pfade>' oder 'git rm <Pfade>'und tragen Sie das Ergebnis mit\n"
 "'git commit' ein"
 
-#: sequencer.c:245 sequencer.c:859 sequencer.c:942
+#: sequencer.c:245 sequencer.c:869 sequencer.c:952
 #, c-format
 msgid "Could not write to %s"
 msgstr "Konnte nicht nach %s schreiben"
@@ -979,396 +1017,421 @@ msgstr ""
 "Tragen Sie Ihre Änderungen ein oder benutzen Sie \"stash\" um fortzufahren."
 
 #. TRANSLATORS: %s will be "revert" or "cherry-pick"
-#: sequencer.c:319
+#: sequencer.c:324
 #, c-format
 msgid "%s: Unable to write new index file"
-msgstr "%s: Konnte neue Bereitstellungsdatei nicht schreiben"
+msgstr "%s: Konnte neue Staging-Area-Datei nicht schreiben"
 
-#: sequencer.c:350
+#: sequencer.c:355
 msgid "Could not resolve HEAD commit\n"
-msgstr "Konnte Version der Zweigspitze (HEAD) nicht auflösen\n"
+msgstr "Konnte Commit von HEAD nicht auflösen\n"
 
-#: sequencer.c:371
+#: sequencer.c:377
 msgid "Unable to update cache tree\n"
-msgstr "Konnte zwischengespeicherten Baum nicht aktualisieren\n"
+msgstr "Konnte Cache-Verzeichnis nicht aktualisieren\n"
 
-#: sequencer.c:416
+#: sequencer.c:422
 #, c-format
 msgid "Could not parse commit %s\n"
-msgstr "Konnte Version %s nicht parsen\n"
+msgstr "Konnte Commit %s nicht parsen\n"
 
-#: sequencer.c:421
+#: sequencer.c:427
 #, c-format
 msgid "Could not parse parent commit %s\n"
-msgstr "Konnte Elternversion %s nicht parsen\n"
+msgstr "Konnte Eltern-Commit %s nicht parsen\n"
 
-#: sequencer.c:487
+#: sequencer.c:493
 msgid "Your index file is unmerged."
-msgstr "Ihre Bereitstellungsdatei ist nicht zusammengeführt."
+msgstr "Ihre Staging-Area-Datei ist nicht zusammengeführt."
 
-#: sequencer.c:506
+#: sequencer.c:512
 #, c-format
 msgid "Commit %s is a merge but no -m option was given."
-msgstr ""
-"Version %s ist eine Zusammenführung, aber die Option -m wurde nicht "
-"angegeben."
+msgstr "Commit %s ist ein Merge, aber die Option -m wurde nicht angegeben."
 
-#: sequencer.c:514
+#: sequencer.c:520
 #, c-format
 msgid "Commit %s does not have parent %d"
-msgstr "Version %s hat keinen Elternteil %d"
+msgstr "Commit %s hat keinen Elternteil %d"
 
-#: sequencer.c:518
+#: sequencer.c:524
 #, c-format
 msgid "Mainline was specified but commit %s is not a merge."
-msgstr ""
-"Hauptlinie wurde spezifiziert, aber Version %s ist keine Zusammenführung."
+msgstr "Hauptlinie wurde spezifiziert, aber Commit %s ist kein Merge."
 
 #. TRANSLATORS: The first %s will be "revert" or
 #. "cherry-pick", the second %s a SHA1
-#: sequencer.c:531
+#: sequencer.c:537
 #, c-format
 msgid "%s: cannot parse parent commit %s"
-msgstr "%s: kann Elternversion %s nicht parsen"
+msgstr "%s: kann Eltern-Commit %s nicht parsen"
 
-#: sequencer.c:535
+#: sequencer.c:541
 #, c-format
 msgid "Cannot get commit message for %s"
-msgstr "Kann keine Versionsbeschreibung für %s bekommen"
+msgstr "Kann keine Commit-Beschreibung für %s bekommen"
 
-#: sequencer.c:621
+#: sequencer.c:627
 #, c-format
 msgid "could not revert %s... %s"
-msgstr "Konnte %s nicht zurücknehmen... %s"
+msgstr "Konnte \"revert\" nicht auf %s ausführen... %s"
 
-#: sequencer.c:622
+#: sequencer.c:628
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "Konnte %s nicht anwenden... %s"
 
-#: sequencer.c:654
+#: sequencer.c:664
 msgid "empty commit set passed"
-msgstr "leere Menge von Versionen übergeben"
+msgstr "leere Menge von Commits übergeben"
 
-#: sequencer.c:662
+#: sequencer.c:672
 #, c-format
 msgid "git %s: failed to read the index"
-msgstr "git %s: Fehler beim Lesen der Bereitstellung"
+msgstr "git %s: Fehler beim Lesen der Staging-Area"
 
-#: sequencer.c:667
+#: sequencer.c:677
 #, c-format
 msgid "git %s: failed to refresh the index"
-msgstr "git %s: Fehler beim Aktualisieren der Bereitstellung"
+msgstr "git %s: Fehler beim Aktualisieren der Staging-Area"
 
-#: sequencer.c:725
+#: sequencer.c:735
 #, c-format
 msgid "Cannot %s during a %s"
 msgstr "Kann %s nicht während eines %s durchführen"
 
-#: sequencer.c:747
+#: sequencer.c:757
 #, c-format
 msgid "Could not parse line %d."
 msgstr "Konnte Zeile %d nicht parsen."
 
-#: sequencer.c:752
+#: sequencer.c:762
 msgid "No commits parsed."
-msgstr "Keine Versionen geparst."
+msgstr "Keine Commits geparst."
 
-#: sequencer.c:765
+#: sequencer.c:775
 #, c-format
 msgid "Could not open %s"
 msgstr "Konnte %s nicht öffnen"
 
-#: sequencer.c:769
+#: sequencer.c:779
 #, c-format
 msgid "Could not read %s."
 msgstr "Konnte %s nicht lesen."
 
-#: sequencer.c:776
+#: sequencer.c:786
 #, c-format
 msgid "Unusable instruction sheet: %s"
 msgstr "Unbenutzbares Instruktionsblatt: %s"
 
-#: sequencer.c:804
+#: sequencer.c:814
 #, c-format
 msgid "Invalid key: %s"
 msgstr "Ungültiger Schlüssel: %s"
 
-#: sequencer.c:807
+#: sequencer.c:817
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Ungültiger Wert für %s: %s"
 
-#: sequencer.c:819
+#: sequencer.c:829
 #, c-format
 msgid "Malformed options sheet: %s"
 msgstr "Fehlerhaftes Optionsblatt: %s"
 
-#: sequencer.c:840
+#: sequencer.c:850
 msgid "a cherry-pick or revert is already in progress"
 msgstr "\"cherry-pick\" oder \"revert\" ist bereits im Gang"
 
-#: sequencer.c:841
+#: sequencer.c:851
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "versuchen Sie \"git cherry-pick (--continue | --quit | --abort)\""
 
-#: sequencer.c:845
+#: sequencer.c:855
 #, c-format
 msgid "Could not create sequencer directory %s"
 msgstr "Konnte \"sequencer\"-Verzeichnis %s nicht erstellen"
 
-#: sequencer.c:861 sequencer.c:946
+#: sequencer.c:871 sequencer.c:956
 #, c-format
 msgid "Error wrapping up %s."
 msgstr "Fehler beim Einpacken von %s."
 
-#: sequencer.c:880 sequencer.c:1014
+#: sequencer.c:890 sequencer.c:1024
 msgid "no cherry-pick or revert in progress"
 msgstr "kein \"cherry-pick\" oder \"revert\" im Gang"
 
-#: sequencer.c:882
+#: sequencer.c:892
 msgid "cannot resolve HEAD"
-msgstr "kann Zweigspitze (HEAD) nicht auflösen"
+msgstr "kann HEAD nicht auflösen"
 
-#: sequencer.c:884
+#: sequencer.c:894
 msgid "cannot abort from a branch yet to be born"
-msgstr "kann nicht abbrechen: bin auf einem Zweig, der noch geboren wird"
+msgstr "kann nicht abbrechen: bin auf einem Branch, der noch geboren wird"
 
-#: sequencer.c:906 builtin/apply.c:4060
+#: sequencer.c:916 builtin/apply.c:4061
 #, c-format
 msgid "cannot open %s: %s"
 msgstr "Kann %s nicht öffnen: %s"
 
-#: sequencer.c:909
+#: sequencer.c:919
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "Kann %s nicht lesen: %s"
 
-#: sequencer.c:910
+#: sequencer.c:920
 msgid "unexpected end of file"
 msgstr "Unerwartetes Dateiende"
 
-#: sequencer.c:916
+#: sequencer.c:926
 #, c-format
 msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
-msgstr ""
-"gespeicherte \"pre-cherry-pick\" Datei der Zweigspitze (HEAD) '%s' ist "
-"beschädigt"
+msgstr "gespeicherte \"pre-cherry-pick\" HEAD Datei '%s' ist beschädigt"
 
-#: sequencer.c:939
+#: sequencer.c:949
 #, c-format
 msgid "Could not format %s."
 msgstr "Konnte %s nicht formatieren."
 
-#: sequencer.c:1083
+#: sequencer.c:1092
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: %s kann nicht in \"cherry-pick\" benutzt werden"
 
-#: sequencer.c:1085
+#: sequencer.c:1095
 #, c-format
 msgid "%s: bad revision"
-msgstr "%s: ungültige Revision"
+msgstr "%s: ungültiger Commit"
 
-#: sequencer.c:1119
+#: sequencer.c:1129
 msgid "Can't revert as initial commit"
-msgstr "Rücknahme-Version kann nicht initial sein."
+msgstr "Kann nicht als allerersten Commit einen Revert ausführen."
 
-#: sequencer.c:1120
+#: sequencer.c:1130
 msgid "Can't cherry-pick into empty head"
-msgstr "Kann \"cherry-pick\" nicht in einem leeren Zweig ausführen."
+msgstr "Kann nicht als allerersten Commit einen Cherry-Pick ausführen."
+
+#: sha1_name.c:440
+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 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 checkout -b $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."
 
-#: sha1_name.c:1036
+#: sha1_name.c:1097
 msgid "HEAD does not point to a branch"
-msgstr "Zweigspitze (HEAD) zeigt auf keinen Zweig"
+msgstr "HEAD zeigt auf keinen Branch"
 
-#: sha1_name.c:1039
+#: sha1_name.c:1100
 #, c-format
 msgid "No such branch: '%s'"
-msgstr "Kein solcher Zweig '%s'"
+msgstr "Kein solcher Branch '%s'"
 
-#: sha1_name.c:1041
+#: sha1_name.c:1102
 #, c-format
 msgid "No upstream configured for branch '%s'"
-msgstr "Kein entferntes Projektarchiv für Zweig '%s' konfiguriert."
+msgstr "Kein Upstream-Branch für Branch '%s' konfiguriert."
 
-#: sha1_name.c:1044
+#: sha1_name.c:1106
 #, c-format
 msgid "Upstream branch '%s' not stored as a remote-tracking branch"
-msgstr ""
-"Zweig '%s' des entfernten Projektarchivs ist kein gefolgter Übernahmezweig"
+msgstr "Upstream-Branch '%s' ist nicht als Remote-Tracking-Branch gespeichert"
 
 #: wrapper.c:408
 #, c-format
 msgid "unable to access '%s': %s"
 msgstr "konnte nicht auf '%s' zugreifen: %s"
 
-#: wrapper.c:423
+#: wrapper.c:429
 #, c-format
 msgid "unable to access '%s'"
 msgstr "konnte nicht auf '%s' zugreifen"
 
-#: wrapper.c:434
+#: wrapper.c:440
 #, c-format
 msgid "unable to look up current user in the passwd file: %s"
 msgstr "konnte aktuellen Benutzer nicht in Passwort-Datei finden: %s"
 
-#: wrapper.c:435
+#: wrapper.c:441
 msgid "no such user"
 msgstr "kein solcher Benutzer"
 
-#: wt-status.c:140
+#: wt-status.c:141
 msgid "Unmerged paths:"
 msgstr "Nicht zusammengeführte Pfade:"
 
-#: wt-status.c:167 wt-status.c:194
+#: wt-status.c:168 wt-status.c:195
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr ""
-"  (benutzen Sie \"git reset %s <Datei>...\" zum Herausnehmen aus der "
-"Bereitstellung)"
+"  (benutzen Sie \"git reset %s <Datei>...\" zum Entfernen aus der Staging-"
+"Area)"
 
-#: wt-status.c:169 wt-status.c:196
+#: wt-status.c:170 wt-status.c:197
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr ""
-"  (benutzen Sie \"git rm --cached <Datei>...\" zum Herausnehmen aus der "
-"Bereitstellung)"
+"  (benutzen Sie \"git rm --cached <Datei>...\" zum Entfernen aus der Staging-"
+"Area)"
 
-#: wt-status.c:173
+#: wt-status.c:174
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr ""
 "  (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
 
-#: wt-status.c:175 wt-status.c:179
+#: wt-status.c:176 wt-status.c:180
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr ""
 "  (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung entsprechend zu "
 "markieren)"
 
-#: wt-status.c:177
+#: wt-status.c:178
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr ""
 "  (benutzen Sie \"git add/rm <Datei>...\" um die Auflösung zu markieren)"
 
-#: wt-status.c:188
+#: wt-status.c:189
 msgid "Changes to be committed:"
-msgstr "zum Eintragen bereitgestellte Änderungen:"
+msgstr "zum Commit vorgemerkte Änderungen:"
 
-#: wt-status.c:206
+#: wt-status.c:207
 msgid "Changes not staged for commit:"
-msgstr "Änderungen, die nicht zum Eintragen bereitgestellt sind:"
+msgstr "Änderungen, die nicht zum Commit vorgemerkt sind:"
 
-#: wt-status.c:210
+#: wt-status.c:211
 msgid "  (use \"git add <file>...\" to update what will be committed)"
-msgstr "  (benutzen Sie \"git add <Datei>...\" zum Bereitstellen)"
+msgstr ""
+"  (benutzen Sie \"git add <Datei>...\" um die Änderungen zum Commit "
+"vorzumerken)"
 
-#: wt-status.c:212
+#: wt-status.c:213
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
-msgstr "  (benutzen Sie \"git add/rm <Datei>...\" zum Bereitstellen)"
+msgstr ""
+"  (benutzen Sie \"git add/rm <Datei>...\" um die Änderungen zum Commit "
+"vorzumerken)"
 
-#: wt-status.c:213
+#: wt-status.c:214
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (benutzen Sie \"git checkout -- <Datei>...\" um die Änderungen im "
 "Arbeitsverzeichnis zu verwerfen)"
 
-#: wt-status.c:215
+#: wt-status.c:216
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
-"  (tragen Sie ein oder verwerfen Sie den unbeobachteten oder geänderten "
-"Inhalt in den Unterprojekten)"
+"  (committen oder verwerfen Sie den unbeobachteten oder geänderten Inhalt in "
+"den Submodulen)"
 
-#: wt-status.c:227
+#: wt-status.c:228
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
-msgstr "  (benutzen Sie \"git %s <Datei>...\" zum Einfügen in die Eintragung)"
+msgstr ""
+"  (benutzen Sie \"git %s <Datei>...\" um die Änderungen zum Commit "
+"vorzumerken)"
 
-#: wt-status.c:244
+#: wt-status.c:245
 msgid "bug"
 msgstr "Fehler"
 
-#: wt-status.c:249
+#: wt-status.c:250
 msgid "both deleted:"
 msgstr "beide gelöscht:"
 
-#: wt-status.c:250
+#: wt-status.c:251
 msgid "added by us:"
 msgstr "von uns hinzugefügt:"
 
-#: wt-status.c:251
+#: wt-status.c:252
 msgid "deleted by them:"
 msgstr "von denen gelöscht:"
 
-#: wt-status.c:252
+#: wt-status.c:253
 msgid "added by them:"
 msgstr "von denen hinzugefügt:"
 
-#: wt-status.c:253
+#: wt-status.c:254
 msgid "deleted by us:"
 msgstr "von uns gelöscht:"
 
-#: wt-status.c:254
+#: wt-status.c:255
 msgid "both added:"
 msgstr "von beiden hinzugefügt:"
 
-#: wt-status.c:255
+#: wt-status.c:256
 msgid "both modified:"
 msgstr "von beiden geändert:"
 
-#: wt-status.c:285
+#: wt-status.c:286
 msgid "new commits, "
-msgstr "neue Versionen, "
+msgstr "neue Commits, "
 
-#: wt-status.c:287
+#: wt-status.c:288
 msgid "modified content, "
 msgstr "geänderter Inhalt, "
 
-#: wt-status.c:289
+#: wt-status.c:290
 msgid "untracked content, "
 msgstr "unbeobachteter Inhalt, "
 
-#: wt-status.c:306
+#: wt-status.c:307
 #, c-format
 msgid "new file:   %s"
 msgstr "neue Datei:   %s"
 
-#: wt-status.c:309
+#: wt-status.c:310
 #, c-format
 msgid "copied:     %s -> %s"
 msgstr "kopiert:     %s -> %s"
 
-#: wt-status.c:312
+#: wt-status.c:313
 #, c-format
 msgid "deleted:    %s"
 msgstr "gelöscht:    %s"
 
-#: wt-status.c:315
+#: wt-status.c:316
 #, c-format
 msgid "modified:   %s"
 msgstr "geändert:   %s"
 
-#: wt-status.c:318
+#: wt-status.c:319
 #, c-format
 msgid "renamed:    %s -> %s"
 msgstr "umbenannt:    %s -> %s"
 
-#: wt-status.c:321
+#: wt-status.c:322
 #, c-format
 msgid "typechange: %s"
 msgstr "Typänderung: %s"
 
-#: wt-status.c:324
+#: wt-status.c:325
 #, c-format
 msgid "unknown:    %s"
 msgstr "unbekannt:    %s"
 
-#: wt-status.c:327
+#: wt-status.c:328
 #, c-format
 msgid "unmerged:   %s"
 msgstr "nicht zusammengeführt:   %s"
 
-#: wt-status.c:330
+#: wt-status.c:331
 #, c-format
 msgid "bug: unhandled diff status %c"
 msgstr "Fehler: unbehandelter Differenz-Status %c"
@@ -1377,18 +1440,17 @@ msgstr "Fehler: unbehandelter Differenz-Status %c"
 msgid "You have unmerged paths."
 msgstr "Sie haben nicht zusammengeführte Pfade."
 
-#: wt-status.c:806 wt-status.c:958
+#: wt-status.c:806
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr " (beheben Sie die Konflikte und führen Sie \"git commit\" aus)"
 
 #: wt-status.c:809
 msgid "All conflicts fixed but you are still merging."
-msgstr ""
-"Alle Konflikte sind behoben, aber Sie sind immer noch beim Zusammenführen."
+msgstr "Alle Konflikte sind behoben, aber Sie sind immer noch beim Merge."
 
 #: wt-status.c:812
 msgid "  (use \"git commit\" to conclude merge)"
-msgstr "  (benutzen Sie \"git commit\" um die Zusammenführung abzuschließen)"
+msgstr "  (benutzen Sie \"git commit\" um den Merge abzuschließen)"
 
 #: wt-status.c:822
 msgid "You are in the middle of an am session."
@@ -1399,28 +1461,28 @@ msgid "The current patch is empty."
 msgstr "Der aktuelle Patch ist leer."
 
 #: wt-status.c:829
-msgid "  (fix conflicts and then run \"git am --resolved\")"
+msgid "  (fix conflicts and then run \"git am --continue\")"
 msgstr ""
-"  (beheben Sie die Konflikte und führen Sie dann \"git am --resolved\" aus)"
+"  (beheben Sie die Konflikte und führen Sie dann \"git am --continue\" aus)"
 
 #: wt-status.c:831
 msgid "  (use \"git am --skip\" to skip this patch)"
-msgstr " (benutzen Sie \"git am --skip\" um diesen Patch auszulassen)"
+msgstr "  (benutzen Sie \"git am --skip\" um diesen Patch auszulassen)"
 
 #: wt-status.c:833
 msgid "  (use \"git am --abort\" to restore the original branch)"
 msgstr ""
-"  (benutzen Sie \"git am --abort\" um den ursprünglichen Zweig "
+"  (benutzen Sie \"git am --abort\" um den ursprünglichen Branch "
 "wiederherzustellen)"
 
 #: wt-status.c:893 wt-status.c:910
 #, c-format
 msgid "You are currently rebasing branch '%s' on '%s'."
-msgstr "Sie sind gerade beim Neuaufbau von Zweig '%s' auf '%s'."
+msgstr "Sie sind gerade beim Rebase von Branch '%s' auf '%s'."
 
 #: wt-status.c:898 wt-status.c:915
 msgid "You are currently rebasing."
-msgstr "Sie sind gerade beim Neuaufbau."
+msgstr "Sie sind gerade beim Rebase."
 
 #: wt-status.c:901
 msgid "  (fix conflicts and then run \"git rebase --continue\")"
@@ -1435,7 +1497,7 @@ msgstr "  (benutzen Sie \"git rebase --skip\" um diesen Patch auszulassen)"
 #: wt-status.c:905
 msgid "  (use \"git rebase --abort\" to check out the original branch)"
 msgstr ""
-"  (benutzen Sie \"git rebase --abort\" um den ursprünglichen Zweig "
+"  (benutzen Sie \"git rebase --abort\" um den ursprünglichen Branch "
 "auszuchecken)"
 
 #: wt-status.c:918
@@ -1447,34 +1509,34 @@ msgstr "  (alle Konflikte behoben: führen Sie \"git rebase --continue\" aus)"
 msgid ""
 "You are currently splitting a commit while rebasing branch '%s' on '%s'."
 msgstr ""
-"Sie teilen gerade eine Version auf, während ein Neuaufbau von Zweig '%s' auf "
+"Sie teilen gerade einen Commit auf, während ein Rebase von Branch '%s' auf "
 "'%s' im Gange ist."
 
 #: wt-status.c:927
 msgid "You are currently splitting a commit during a rebase."
-msgstr "Sie teilen gerade eine Version während eines Neuaufbaus auf."
+msgstr "Sie teilen gerade einen Commit während eines Rebase auf."
 
 #: wt-status.c:930
 msgid "  (Once your working directory is clean, run \"git rebase --continue\")"
 msgstr ""
-"  (Sobald Ihr Arbeitsverzeichnis sauber ist, führen Sie \"git rebase --"
+"  (Sobald Ihr Arbeitsverzeichnis unverändert ist, führen Sie \"git rebase --"
 "continue\" aus)"
 
 #: wt-status.c:934
 #, c-format
 msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
 msgstr ""
-"Sie editieren gerade eine Version während eines Neuaufbaus von Zweig '%s' "
-"auf '%s'."
+"Sie editieren gerade einen Commit während eines Rebase von Branch '%s' auf "
+"'%s'."
 
 #: wt-status.c:939
 msgid "You are currently editing a commit during a rebase."
-msgstr "Sie editieren gerade eine Version während eines Neuaufbaus."
+msgstr "Sie editieren gerade einen Commit während eines Rebase."
 
 #: wt-status.c:942
 msgid "  (use \"git commit --amend\" to amend the current commit)"
 msgstr ""
-"  (benutzen Sie \"git commit --amend\" um die aktuelle Version nachzubessern)"
+"  (benutzen Sie \"git commit --amend\" um den aktuellen Commit nachzubessern)"
 
 #: wt-status.c:944
 msgid ""
@@ -1487,74 +1549,91 @@ msgstr ""
 msgid "You are currently cherry-picking."
 msgstr "Sie führen gerade \"cherry-pick\" aus."
 
+#: wt-status.c:958
+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:961
-msgid "  (all conflicts fixed: run \"git commit\")"
-msgstr "  (alle Konflikte behoben: führen Sie \"git commit\" aus)"
+msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
+msgstr ""
+"  (alle Konflikte behoben: führen Sie \"git cherry-pick --continue\" aus)"
 
-#: wt-status.c:970
+#: wt-status.c:963
+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:972
 #, c-format
 msgid "You are currently reverting commit %s."
-msgstr "Sie nehmen gerade Version '%s' zurück."
+msgstr "Sie sind gerade an einem Revert von Commit '%s'."
 
-#: wt-status.c:975
+#: wt-status.c:977
 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:978
+#: wt-status.c:980
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (alle Konflikte behoben: führen Sie \"git revert --continue\" aus)"
 
-#: wt-status.c:980
+#: wt-status.c:982
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr ""
-"  (benutzen Sie \"git revert --abort\" um die Umkehroperation abzubrechen)"
+"  (benutzen Sie \"git revert --abort\" um die Revert-Operation abzubrechen)"
 
-#: wt-status.c:991
+#: wt-status.c:993
 #, c-format
 msgid "You are currently bisecting, started from branch '%s'."
-msgstr "Sie sind gerade bei einer binären Suche, gestartet von Zweig '%s'."
+msgstr "Sie sind gerade bei einer binären Suche, gestartet von Branch '%s'."
 
-#: wt-status.c:995
+#: wt-status.c:997
 msgid "You are currently bisecting."
 msgstr "Sie sind gerade bei einer binären Suche."
 
-#: wt-status.c:998
+#: wt-status.c:1000
 msgid "  (use \"git bisect reset\" to get back to the original branch)"
 msgstr ""
-"  (benutzen Sie \"git bisect reset\" um zum ursprünglichen Zweig "
+"  (benutzen Sie \"git bisect reset\" um zum ursprünglichen Branch "
 "zurückzukehren)"
 
 #: wt-status.c:1173
 msgid "On branch "
-msgstr "Auf Zweig "
+msgstr "Auf Branch "
 
-#: wt-status.c:1184
+#: wt-status.c:1180
+msgid "rebase in progress; onto "
+msgstr "Rebase im Gange; auf "
+
+#: wt-status.c:1187
 msgid "HEAD detached at "
-msgstr "Zweigspitze (HEAD) losgelöst bei "
+msgstr "HEAD losgelöst bei "
 
-#: wt-status.c:1186
+#: wt-status.c:1189
 msgid "HEAD detached from "
-msgstr "Zweigspitze (HEAD) losgelöst von "
+msgstr "HEAD losgelöst von "
 
-#: wt-status.c:1189
+#: wt-status.c:1192
 msgid "Not currently on any branch."
-msgstr "Im Moment auf keinem Zweig."
+msgstr "Im Moment auf keinem Branch."
 
-#: wt-status.c:1206
+#: wt-status.c:1209
 msgid "Initial commit"
-msgstr "Initiale Version"
+msgstr "Initialer Commit"
 
-#: wt-status.c:1220
+#: wt-status.c:1223
 msgid "Untracked files"
 msgstr "Unbeobachtete Dateien"
 
-#: wt-status.c:1222
+#: wt-status.c:1225
 msgid "Ignored files"
 msgstr "Ignorierte Dateien"
 
-#: wt-status.c:1226
+#: wt-status.c:1229
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -1565,90 +1644,90 @@ 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:1232
+#: wt-status.c:1235
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Unbeobachtete Dateien nicht aufgelistet%s"
 
-#: wt-status.c:1234
+#: wt-status.c:1237
 msgid " (use -u option to show untracked files)"
 msgstr " (benutzen Sie die Option -u um unbeobachteten Dateien anzuzeigen)"
 
-#: wt-status.c:1240
+#: wt-status.c:1243
 msgid "No changes"
 msgstr "Keine Änderungen"
 
-#: wt-status.c:1245
+#: wt-status.c:1248
 #, c-format
 msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
 msgstr ""
-"keine Änderungen zum Eintragen hinzugefügt (benutzen Sie \"git add\" und/"
-"oder \"git commit -a\")\n"
+"keine Änderungen zum Commit vorgemerkt (benutzen Sie \"git add\" und/oder "
+"\"git commit -a\")\n"
 
-#: wt-status.c:1248
+#: wt-status.c:1251
 #, c-format
 msgid "no changes added to commit\n"
-msgstr "keine Änderungen zum Eintragen hinzugefügt\n"
+msgstr "keine Änderungen zum Commit vorgemerkt\n"
 
-#: wt-status.c:1251
+#: wt-status.c:1254
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
 "track)\n"
 msgstr ""
-"nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien "
-"(benutzen Sie \"git add\" zum Beobachten)\n"
+"nichts zum Commit vorgemerkt, aber es gibt unbeobachtete Dateien (benutzen "
+"Sie \"git add\" zum Beobachten)\n"
 
-#: wt-status.c:1254
+#: wt-status.c:1257
 #, c-format
 msgid "nothing added to commit but untracked files present\n"
-msgstr "nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien\n"
+msgstr "nichts zum Commit vorgemerkt, aber es gibt unbeobachtete Dateien\n"
 
-#: wt-status.c:1257
+#: wt-status.c:1260
 #, c-format
 msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
 msgstr ""
-"nichts einzutragen (Erstellen/Kopieren Sie Dateien und benutzen Sie \"git add"
-"\" zum Beobachten)\n"
+"nichts zu committen (Erstellen/Kopieren Sie Dateien und benutzen Sie \"git "
+"add\" zum Beobachten)\n"
 
-#: wt-status.c:1260 wt-status.c:1265
+#: wt-status.c:1263 wt-status.c:1268
 #, c-format
 msgid "nothing to commit\n"
-msgstr "nichts einzutragen\n"
+msgstr "nichts zu committen\n"
 
-#: wt-status.c:1263
+#: wt-status.c:1266
 #, c-format
 msgid "nothing to commit (use -u to show untracked files)\n"
 msgstr ""
-"nichts einzutragen (benutzen Sie die Option -u, um unbeobachtete Dateien "
+"nichts zu committen (benutzen Sie die Option -u, um unbeobachtete Dateien "
 "anzuzeigen)\n"
 
-#: wt-status.c:1267
+#: wt-status.c:1270
 #, c-format
 msgid "nothing to commit, working directory clean\n"
-msgstr "nichts einzutragen, Arbeitsverzeichnis sauber\n"
+msgstr "nichts zu committen, Arbeitsverzeichnis unverändert\n"
 
-#: wt-status.c:1375
+#: wt-status.c:1378
 msgid "HEAD (no branch)"
-msgstr "HEAD (kein Zweig)"
+msgstr "HEAD (kein Branch)"
 
-#: wt-status.c:1381
+#: wt-status.c:1384
 msgid "Initial commit on "
-msgstr "Initiale Version auf "
+msgstr "Initialer Commit auf "
 
-#: wt-status.c:1396
+#: wt-status.c:1399
 msgid "behind "
 msgstr "hinterher "
 
-#: wt-status.c:1399 wt-status.c:1402
+#: wt-status.c:1402 wt-status.c:1405
 msgid "ahead "
 msgstr "voraus "
 
-#: wt-status.c:1404
+#: wt-status.c:1407
 msgid ", behind "
 msgstr ", hinterher "
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:352
+#: compat/precompose_utf8.c:58 builtin/clone.c:351
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "Konnte '%s' nicht entfernen."
@@ -1724,11 +1803,9 @@ msgstr ""
 "dieser Version von Git ignoriert.\n"
 "\n"
 "* 'git add --ignore-removal <Pfadspezifikation>', was der aktuelle\n"
-"  Standardwert ist, ignoriert gelöschte Pfade im Arbeitsverzeichnis."
-"\n"
+"  Standardwert ist, ignoriert gelöschte Pfade im Arbeitsverzeichnis.\n"
 "* 'git add --all <Pfadspezifikation>' berücksichtigt ebenfalls gelöschte\n"
-"  Pfade."
-"\n"
+"  Pfade.\n"
 "Führen Sie 'git status' aus, um die gelöschten Pfade zu überprüfen.\n"
 
 #: builtin/add.c:144
@@ -1736,7 +1813,7 @@ msgstr ""
 msgid "unexpected diff status %c"
 msgstr "unerwarteter Differenz-Status %c"
 
-#: builtin/add.c:149 builtin/commit.c:233
+#: builtin/add.c:149 builtin/commit.c:252
 msgid "updating files failed"
 msgstr "Aktualisierung der Dateien fehlgeschlagen"
 
@@ -1748,147 +1825,146 @@ msgstr "lösche '%s'\n"
 #: builtin/add.c:253
 msgid "Unstaged changes after refreshing the index:"
 msgstr ""
-"Nicht bereitgestellte Änderungen nach Aktualisierung der Bereitstellung:"
+"Nicht zum Commit vorgemerkte Änderungen nach Aktualisierung der Staging-Area:"
 
-#: builtin/add.c:256 builtin/add.c:572 builtin/rm.c:275
+#: builtin/add.c:256 builtin/add.c:573 builtin/rm.c:337
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "Pfadspezifikation '%s' stimmt mit keinen Dateien überein"
 
 #: builtin/add.c:339
 msgid "Could not read the index"
-msgstr "Konnte die Bereitstellung nicht lesen"
+msgstr "Konnte die Staging-Area nicht lesen"
 
-#: builtin/add.c:349
+#: builtin/add.c:350
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Konnte '%s' nicht zum Schreiben öffnen."
 
-#: builtin/add.c:353
+#: builtin/add.c:354
 msgid "Could not write patch"
 msgstr "Konnte Patch nicht schreiben"
 
-#: builtin/add.c:358
+#: builtin/add.c:359
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht lesen"
 
-#: builtin/add.c:360
+#: builtin/add.c:361
 msgid "Empty patch. Aborted."
 msgstr "Leerer Patch. Abgebrochen."
 
-#: builtin/add.c:366
+#: builtin/add.c:367
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Konnte '%s' nicht anwenden."
 
-#: builtin/add.c:376
+#: builtin/add.c:377
 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:393 builtin/clean.c:161 builtin/fetch.c:78 builtin/mv.c:63
-#: builtin/prune-packed.c:76 builtin/push.c:425 builtin/remote.c:1253
-#: builtin/rm.c:206
+#: builtin/add.c:394 builtin/clean.c:875 builtin/fetch.c:78 builtin/mv.c:63
+#: builtin/prune-packed.c:73 builtin/push.c:451 builtin/remote.c:1253
+#: builtin/rm.c:268
 msgid "dry run"
 msgstr "Probelauf"
 
-#: builtin/add.c:394 builtin/apply.c:4409 builtin/check-ignore.c:19
-#: builtin/commit.c:1152 builtin/count-objects.c:95 builtin/fsck.c:613
-#: builtin/log.c:1518 builtin/mv.c:62 builtin/read-tree.c:112
+#: builtin/add.c:395 builtin/apply.c:4410 builtin/check-ignore.c:19
+#: builtin/commit.c:1220 builtin/count-objects.c:95 builtin/fsck.c:613
+#: builtin/log.c:1573 builtin/mv.c:62 builtin/read-tree.c:113
 msgid "be verbose"
 msgstr "erweiterte Ausgaben"
 
-#: builtin/add.c:396
+#: builtin/add.c:397
 msgid "interactive picking"
 msgstr "interaktives Auswählen"
 
-#: builtin/add.c:397 builtin/checkout.c:1063 builtin/reset.c:258
+#: builtin/add.c:398 builtin/checkout.c:1073 builtin/reset.c:261
 msgid "select hunks interactively"
-msgstr "interaktiv Bereiche auswählen"
+msgstr "Blöcke interaktiv auswählen"
 
-#: builtin/add.c:398
+#: builtin/add.c:399
 msgid "edit current diff and apply"
 msgstr "aktuelle Unterschiede editieren und anwenden"
 
-#: builtin/add.c:399
+#: builtin/add.c:400
 msgid "allow adding otherwise ignored files"
 msgstr "erlaubt das Hinzufügen andernfalls ignorierter Dateien"
 
-#: builtin/add.c:400
+#: builtin/add.c:401
 msgid "update tracked files"
 msgstr "aktualisiert beobachtete Dateien"
 
-#: builtin/add.c:401
+#: builtin/add.c:402
 msgid "record only the fact that the path will be added later"
 msgstr "speichert nur, dass der Pfad später hinzugefügt werden soll"
 
-#: builtin/add.c:402
+#: builtin/add.c:403
 msgid "add changes from all tracked and untracked files"
 msgstr ""
 "fügt Änderungen von allen beobachteten und unbeobachteten Dateien hinzu"
 
 #. takes no arguments
-#: builtin/add.c:405
+#: builtin/add.c:406
 msgid "ignore paths removed in the working tree (same as --no-all)"
-msgstr "ignoriert gelöschte Pfade im Arbeitsverzeichnis (genau wie "
-"--no-all)"
+msgstr "ignoriert gelöschte Pfade im Arbeitsverzeichnis (genau wie --no-all)"
 
-#: builtin/add.c:407
+#: builtin/add.c:408
 msgid "don't add, only refresh the index"
-msgstr "fügt nichts hinzu, aktualisiert nur die Bereitstellung"
+msgstr "fügt nichts hinzu, aktualisiert nur die Staging-Area"
 
-#: builtin/add.c:408
+#: builtin/add.c:409
 msgid "just skip files which cannot be added because of errors"
 msgstr ""
 "überspringt Dateien, die aufgrund von Fehlern nicht hinzugefügt werden "
 "konnten"
 
-#: builtin/add.c:409
+#: builtin/add.c:410
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "prüft ob - auch fehlende - Dateien im Probelauf ignoriert werden"
 
-#: builtin/add.c:431
+#: builtin/add.c:432
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "Verwenden Sie -f wenn Sie diese wirklich hinzufügen möchten.\n"
 
-#: builtin/add.c:432
+#: builtin/add.c:433
 msgid "no files added"
 msgstr "keine Dateien hinzugefügt"
 
-#: builtin/add.c:438
+#: builtin/add.c:439
 msgid "adding files failed"
 msgstr "Hinzufügen von Dateien fehlgeschlagen"
 
-#: builtin/add.c:477
+#: builtin/add.c:478
 msgid "-A and -u are mutually incompatible"
 msgstr "Die Optionen -A und -u sind zueinander inkompatibel."
 
-#: builtin/add.c:495
+#: builtin/add.c:496
 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."
 
-#: builtin/add.c:525
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Nichts spezifiziert, nichts hinzugefügt.\n"
 
-#: builtin/add.c:526
+#: builtin/add.c:527
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Wollten Sie vielleicht 'git add .' sagen?\n"
 
-#: builtin/add.c:532 builtin/check-ignore.c:66 builtin/clean.c:204
-#: builtin/commit.c:293 builtin/mv.c:82 builtin/rm.c:235
+#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:919
+#: builtin/commit.c:312 builtin/mv.c:82 builtin/rm.c:297
 msgid "index file corrupt"
-msgstr "Bereitstellungsdatei beschädigt"
+msgstr "Staging-Area-Datei beschädigt"
 
-#: builtin/add.c:604 builtin/apply.c:4505 builtin/mv.c:229 builtin/rm.c:370
+#: builtin/add.c:605 builtin/apply.c:4506 builtin/mv.c:229 builtin/rm.c:432
 msgid "Unable to write new index file"
-msgstr "Konnte neue Bereitstellungsdatei nicht schreiben."
+msgstr "Konnte neue Staging-Area-Datei nicht schreiben."
 
 #: builtin/apply.c:57
 msgid "git apply [options] [<patch>...]"
@@ -1897,12 +1973,12 @@ msgstr "git apply [Optionen] [<Patch>...]"
 #: builtin/apply.c:110
 #, c-format
 msgid "unrecognized whitespace option '%s'"
-msgstr "nicht erkannte Option für Leerzeichen: '%s'"
+msgstr "nicht erkannte Whitespace-Option: '%s'"
 
 #: builtin/apply.c:125
 #, c-format
 msgid "unrecognized whitespace ignore option '%s'"
-msgstr "nicht erkannte Option zum Ignorieren von Leerzeichen: '%s'"
+msgstr "nicht erkannte Option zum Ignorieren von Whitespace: '%s'"
 
 #: builtin/apply.c:823
 #, c-format
@@ -2015,7 +2091,7 @@ msgstr "Patch mit nutzlosen Informationen bei Zeile %d"
 #: builtin/apply.c:2076
 #, c-format
 msgid "unable to read symlink %s"
-msgstr "konnte symbolische Verknüpfung %s nicht lesen"
+msgstr "konnte symbolischen Verweis %s nicht lesen"
 
 #: builtin/apply.c:2080
 #, c-format
@@ -2075,319 +2151,315 @@ msgstr "Anwendung des Patches fehlgeschlagen: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "kann %s nicht auschecken"
 
-#: builtin/apply.c:3140 builtin/apply.c:3149 builtin/apply.c:3193
+#: builtin/apply.c:3140 builtin/apply.c:3149 builtin/apply.c:3194
 #, c-format
 msgid "read of %s failed"
 msgstr "Konnte %s nicht lesen"
 
-#: builtin/apply.c:3173 builtin/apply.c:3395
+#: builtin/apply.c:3174 builtin/apply.c:3396
 #, c-format
 msgid "path %s has been renamed/deleted"
 msgstr "Pfad %s wurde umbenannt/gelöscht"
 
-#: builtin/apply.c:3254 builtin/apply.c:3409
+#: builtin/apply.c:3255 builtin/apply.c:3410
 #, c-format
 msgid "%s: does not exist in index"
-msgstr "%s ist nicht bereitgestellt"
+msgstr "%s ist nicht in der Staging-Area"
 
-#: builtin/apply.c:3258 builtin/apply.c:3401 builtin/apply.c:3423
+#: builtin/apply.c:3259 builtin/apply.c:3402 builtin/apply.c:3424
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: builtin/apply.c:3263 builtin/apply.c:3417
+#: builtin/apply.c:3264 builtin/apply.c:3418
 #, c-format
 msgid "%s: does not match index"
-msgstr "%s entspricht nicht der Bereitstellung"
+msgstr "%s entspricht nicht der Version in der Staging-Area"
 
-#: builtin/apply.c:3365
+#: builtin/apply.c:3366
 msgid "removal patch leaves file contents"
 msgstr "Lösch-Patch hinterlässt Dateiinhalte"
 
-#: builtin/apply.c:3434
+#: builtin/apply.c:3435
 #, c-format
 msgid "%s: wrong type"
 msgstr "%s: falscher Typ"
 
-#: builtin/apply.c:3436
+#: builtin/apply.c:3437
 #, c-format
 msgid "%s has type %o, expected %o"
 msgstr "%s ist vom Typ %o, erwartete %o"
 
-#: builtin/apply.c:3537
+#: builtin/apply.c:3538
 #, c-format
 msgid "%s: already exists in index"
 msgstr "%s ist bereits bereitgestellt"
 
-#: builtin/apply.c:3540
+#: builtin/apply.c:3541
 #, c-format
 msgid "%s: already exists in working directory"
 msgstr "%s existiert bereits im Arbeitsverzeichnis"
 
-#: builtin/apply.c:3560
+#: builtin/apply.c:3561
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o)"
 msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o)"
 
-#: builtin/apply.c:3565
+#: builtin/apply.c:3566
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o) of %s"
 msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o) von %s"
 
-#: builtin/apply.c:3573
+#: builtin/apply.c:3574
 #, c-format
 msgid "%s: patch does not apply"
 msgstr "%s: Patch konnte nicht angewendet werden"
 
-#: builtin/apply.c:3586
+#: builtin/apply.c:3587
 #, c-format
 msgid "Checking patch %s..."
 msgstr "Prüfe Patch %s..."
 
-#: builtin/apply.c:3679 builtin/checkout.c:216 builtin/reset.c:124
+#: builtin/apply.c:3680 builtin/checkout.c:216 builtin/reset.c:127
 #, c-format
 msgid "make_cache_entry failed for path '%s'"
 msgstr "make_cache_entry für Pfad '%s' fehlgeschlagen"
 
-#: builtin/apply.c:3822
+#: builtin/apply.c:3823
 #, c-format
 msgid "unable to remove %s from index"
-msgstr "konnte %s nicht aus der Bereitstellung entfernen"
+msgstr "konnte %s nicht aus der Staging-Area entfernen"
 
-#: builtin/apply.c:3850
+#: builtin/apply.c:3851
 #, c-format
-msgid "corrupt patch for subproject %s"
-msgstr "fehlerhafter Patch für Unterprojekt %s"
+msgid "corrupt patch for submodule %s"
+msgstr "fehlerhafter Patch für Submodul %s"
 
-#: builtin/apply.c:3854
+#: builtin/apply.c:3855
 #, c-format
 msgid "unable to stat newly created file '%s'"
 msgstr "konnte neu erstellte Datei '%s' nicht lesen"
 
-#: builtin/apply.c:3859
+#: builtin/apply.c:3860
 #, c-format
 msgid "unable to create backing store for newly created file %s"
 msgstr "kann internen Speicher für eben erstellte Datei %s nicht erzeugen"
 
-#: builtin/apply.c:3862 builtin/apply.c:3970
+#: builtin/apply.c:3863 builtin/apply.c:3971
 #, c-format
 msgid "unable to add cache entry for %s"
 msgstr "kann für %s keinen Eintrag in den Zwischenspeicher hinzufügen"
 
-#: builtin/apply.c:3895
+#: builtin/apply.c:3896
 #, c-format
 msgid "closing file '%s'"
 msgstr "schließe Datei '%s'"
 
-#: builtin/apply.c:3944
+#: builtin/apply.c:3945
 #, c-format
 msgid "unable to write file '%s' mode %o"
 msgstr "konnte Datei '%s' mit Modus %o nicht schreiben"
 
-#: builtin/apply.c:4031
+#: builtin/apply.c:4032
 #, c-format
 msgid "Applied patch %s cleanly."
 msgstr "Patch %s sauber angewendet"
 
-#: builtin/apply.c:4039
+#: builtin/apply.c:4040
 msgid "internal error"
 msgstr "interner Fehler"
 
 #. Say this even without --verbose
-#: builtin/apply.c:4042
+#: builtin/apply.c:4043
 #, c-format
 msgid "Applying patch %%s with %d reject..."
 msgid_plural "Applying patch %%s with %d rejects..."
 msgstr[0] "Wende Patch %%s mit %d Zurückweisung an..."
 msgstr[1] "Wende Patch %%s mit %d Zurückweisungen an..."
 
-#: builtin/apply.c:4052
+#: builtin/apply.c:4053
 #, c-format
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "Verkürze Name von .rej Datei zu %.*s.rej"
 
-#: builtin/apply.c:4073
+#: builtin/apply.c:4074
 #, c-format
 msgid "Hunk #%d applied cleanly."
 msgstr "Patch-Bereich #%d sauber angewendet."
 
-#: builtin/apply.c:4076
+#: builtin/apply.c:4077
 #, c-format
 msgid "Rejected hunk #%d."
-msgstr "Patch-Bereich #%d zurückgewiesen."
+msgstr "Patch-Block #%d zurückgewiesen."
 
-#: builtin/apply.c:4226
+#: builtin/apply.c:4227
 msgid "unrecognized input"
 msgstr "nicht erkannte Eingabe"
 
-#: builtin/apply.c:4237
+#: builtin/apply.c:4238
 msgid "unable to read index file"
-msgstr "Konnte Bereitstellungsdatei nicht lesen"
+msgstr "Konnte Staging-Area-Datei nicht lesen"
 
-#: builtin/apply.c:4356 builtin/apply.c:4359 builtin/clone.c:92
+#: builtin/apply.c:4357 builtin/apply.c:4360 builtin/clone.c:91
 #: builtin/fetch.c:63
 msgid "path"
 msgstr "Pfad"
 
-#: builtin/apply.c:4357
+#: builtin/apply.c:4358
 msgid "don't apply changes matching the given path"
 msgstr "wendet keine Änderungen im angegebenen Pfad an"
 
-#: builtin/apply.c:4360
+#: builtin/apply.c:4361
 msgid "apply changes matching the given path"
 msgstr "wendet Änderungen nur im angegebenen Pfad an"
 
-#: builtin/apply.c:4362
+#: builtin/apply.c:4363
 msgid "num"
 msgstr "Anzahl"
 
-#: builtin/apply.c:4363
+#: builtin/apply.c:4364
 msgid "remove <num> leading slashes from traditional diff paths"
 msgstr ""
 "entfernt <Anzahl> vorangestellte Schrägstriche von herkömmlichen "
 "Differenzpfaden"
 
-#: builtin/apply.c:4366
+#: builtin/apply.c:4367
 msgid "ignore additions made by the patch"
 msgstr "ignoriert hinzugefügte Zeilen des Patches"
 
-#: builtin/apply.c:4368
+#: builtin/apply.c:4369
 msgid "instead of applying the patch, output diffstat for the input"
 msgstr ""
 "anstatt der Anwendung des Patches, wird der \"diffstat\" für die Eingabe "
 "ausgegeben"
 
-#: builtin/apply.c:4372
+#: builtin/apply.c:4373
 msgid "show number of added and deleted lines in decimal notation"
 msgstr ""
 "zeigt die Anzahl von hinzugefügten/entfernten Zeilen in Dezimalnotation"
 
-#: builtin/apply.c:4374
+#: builtin/apply.c:4375
 msgid "instead of applying the patch, output a summary for the input"
 msgstr ""
 "anstatt der Anwendung des Patches, wird eine Zusammenfassung für die Eingabe "
 "ausgegeben"
 
-#: builtin/apply.c:4376
+#: builtin/apply.c:4377
 msgid "instead of applying the patch, see if the patch is applicable"
 msgstr ""
 "anstatt der Anwendung des Patches, zeige ob Patch angewendet werden kann"
 
-#: builtin/apply.c:4378
+#: builtin/apply.c:4379
 msgid "make sure the patch is applicable to the current index"
 msgstr ""
-"stellt sicher, dass der Patch in der aktuellen Bereitstellung angewendet "
+"stellt sicher, dass der Patch in der aktuellen Staging-Area angewendet "
 "werden kann"
 
-#: builtin/apply.c:4380
+#: builtin/apply.c:4381
 msgid "apply a patch without touching the working tree"
-msgstr "wendet einen Patch an, ohne Änderungen im Arbeitszweig vorzunehmen"
+msgstr ""
+"wendet einen Patch an, ohne Änderungen im Arbeitsverzeichnis vorzunehmen"
 
-#: builtin/apply.c:4382
+#: builtin/apply.c:4383
 msgid "also apply the patch (use with --stat/--summary/--check)"
 msgstr "wendet den Patch an (Benutzung mit --stat/--summary/--check)"
 
-#: builtin/apply.c:4384
+#: builtin/apply.c:4385
 msgid "attempt three-way merge if a patch does not apply"
-msgstr ""
-"versucht 3-Wege-Zusammenführung, wenn der Patch nicht angewendet werden "
-"konnte"
+msgstr "versucht 3-Wege-Merge, wenn der Patch nicht angewendet werden konnte"
 
-#: builtin/apply.c:4386
+#: builtin/apply.c:4387
 msgid "build a temporary index based on embedded index information"
 msgstr ""
-"erstellt eine temporäre Bereitstellung basierend auf den integrierten "
-"Bereitstellungsinformationen"
+"erstellt eine temporäre Staging-Area basierend auf den integrierten Staging-"
+"Area-Informationen"
 
-#: builtin/apply.c:4388 builtin/checkout-index.c:197 builtin/ls-files.c:456
+#: builtin/apply.c:4389 builtin/checkout-index.c:197 builtin/ls-files.c:462
 msgid "paths are separated with NUL character"
 msgstr "Pfade sind getrennt durch NUL Zeichen"
 
-#: builtin/apply.c:4391
+#: builtin/apply.c:4392
 msgid "ensure at least <n> lines of context match"
 msgstr "stellt sicher, dass mindestens <n> Zeilen des Kontextes übereinstimmen"
 
-#: builtin/apply.c:4392
+#: builtin/apply.c:4393
 msgid "action"
 msgstr "Aktion"
 
-#: builtin/apply.c:4393
+#: builtin/apply.c:4394
 msgid "detect new or modified lines that have whitespace errors"
-msgstr "ermittelt neue oder geänderte Zeilen die Fehler in Leerzeichen haben"
+msgstr "ermittelt neue oder geänderte Zeilen die Whitespace-Fehler haben"
 
-#: builtin/apply.c:4396 builtin/apply.c:4399
+#: builtin/apply.c:4397 builtin/apply.c:4400
 msgid "ignore changes in whitespace when finding context"
-msgstr "ignoriert Änderungen in Leerzeichen bei der Suche des Kontextes"
+msgstr "ignoriert Änderungen im Whitespace bei der Suche des Kontextes"
 
-#: builtin/apply.c:4402
+#: builtin/apply.c:4403
 msgid "apply the patch in reverse"
 msgstr "wendet den Patch in umgekehrter Reihenfolge an"
 
-#: builtin/apply.c:4404
+#: builtin/apply.c:4405
 msgid "don't expect at least one line of context"
 msgstr "erwartet keinen Kontext"
 
-#: builtin/apply.c:4406
+#: builtin/apply.c:4407
 msgid "leave the rejected hunks in corresponding *.rej files"
 msgstr ""
-"hinterlässt zurückgewiesene Patch-Bereiche in den entsprechenden *.rej "
-"Dateien"
+"hinterlässt zurückgewiesene Patch-Blöcke in entsprechenden *.rej Dateien"
 
-#: builtin/apply.c:4408
+#: builtin/apply.c:4409
 msgid "allow overlapping hunks"
-msgstr "erlaubt sich überlappende Patch-Bereiche"
+msgstr "erlaubt sich überlappende Patch-Blöcke"
 
-#: builtin/apply.c:4411
+#: builtin/apply.c:4412
 msgid "tolerate incorrectly detected missing new-line at the end of file"
 msgstr "toleriert fehlerhaft erkannten fehlenden Zeilenumbruch am Dateiende"
 
-#: builtin/apply.c:4414
+#: builtin/apply.c:4415
 msgid "do not trust the line counts in the hunk headers"
-msgstr "vertraut nicht den Zeilennummern im Kopf des Patch-Bereiches"
+msgstr "vertraut nicht den Zeilennummern im Kopf des Patch-Blocks"
 
-#: builtin/apply.c:4416
+#: builtin/apply.c:4417
 msgid "root"
 msgstr "Wurzelverzeichnis"
 
-#: builtin/apply.c:4417
+#: builtin/apply.c:4418
 msgid "prepend <root> to all filenames"
 msgstr "stellt <Wurzelverzeichnis> vor alle Dateinamen"
 
-#: builtin/apply.c:4439
+#: builtin/apply.c:4440
 msgid "--3way outside a repository"
 msgstr ""
-"Die Option --3way kann nicht außerhalb eines Projektarchivs verwendet werden."
+"Die Option --3way kann nicht außerhalb eines Repositories verwendet werden."
 
-#: builtin/apply.c:4447
+#: builtin/apply.c:4448
 msgid "--index outside a repository"
 msgstr ""
-"Die Option --index kann nicht außerhalb eines Projektarchivs verwendet "
-"werden."
+"Die Option --index kann nicht außerhalb eines Repositories verwendet werden."
 
-#: builtin/apply.c:4450
+#: builtin/apply.c:4451
 msgid "--cached outside a repository"
 msgstr ""
-"Die Option --cached kann nicht außerhalb eines Projektarchivs verwendet "
-"werden."
+"Die Option --cached kann nicht außerhalb eines Repositories verwendet werden."
 
-#: builtin/apply.c:4466
+#: builtin/apply.c:4467
 #, c-format
 msgid "can't open patch '%s'"
 msgstr "kann Patch '%s' nicht öffnen"
 
-#: builtin/apply.c:4480
+#: builtin/apply.c:4481
 #, c-format
 msgid "squelched %d whitespace error"
 msgid_plural "squelched %d whitespace errors"
-msgstr[0] "unterdrückte %d Fehler in Leerzeichen"
-msgstr[1] "unterdrückte %d Fehler in Leerzeichen"
+msgstr[0] "unterdrückte %d Whitespace-Fehler"
+msgstr[1] "unterdrückte %d Whitespace-Fehler"
 
-#: builtin/apply.c:4486 builtin/apply.c:4496
+#: builtin/apply.c:4487 builtin/apply.c:4497
 #, c-format
 msgid "%d line adds whitespace errors."
 msgid_plural "%d lines add whitespace errors."
-msgstr[0] "%d Zeile fügt Fehler in Leerzeichen hinzu."
-msgstr[1] "%d Zeilen fügen Fehler in Leerzeichen hinzu."
+msgstr[0] "%d Zeile fügt Whitespace-Fehler hinzu."
+msgstr[1] "%d Zeilen fügen Whitespace-Fehler hinzu."
 
 #: builtin/archive.c:17
 #, c-format
@@ -2434,106 +2506,106 @@ msgstr "führt 'git bisect next' aus"
 
 #: builtin/bisect--helper.c:19
 msgid "update BISECT_HEAD instead of checking out the current commit"
-msgstr "aktualisiert BISECT_HEAD, anstatt die aktuelle Version auszuchecken"
+msgstr "aktualisiert BISECT_HEAD, anstatt den aktuellen Commit auszuchecken"
 
-#: builtin/blame.c:25
+#: builtin/blame.c:26
 msgid "git blame [options] [rev-opts] [rev] [--] file"
 msgstr "git blame [Optionen] [rev-opts] [rev] [--] Datei"
 
-#: builtin/blame.c:30
+#: builtin/blame.c:31
 msgid "[rev-opts] are documented in git-rev-list(1)"
 msgstr "[rev-opts] sind dokumentiert in git-rev-list(1)"
 
-#: builtin/blame.c:2355
+#: builtin/blame.c:2276
 msgid "Show blame entries as we find them, incrementally"
 msgstr "Zeigt \"blame\"-Einträge schrittweise, während wir sie generieren"
 
-#: builtin/blame.c:2356
+#: builtin/blame.c:2277
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
-msgstr "Zeigt leere SHA-1 für Grenzversionen (Standard: aus)"
+msgstr "Zeigt leere SHA-1 für Grenz-Commits (Standard: aus)"
 
-#: builtin/blame.c:2357
+#: builtin/blame.c:2278
 msgid "Do not treat root commits as boundaries (Default: off)"
-msgstr "Behandelt Ursprungsversionen nicht als Grenzen (Standard: aus)"
+msgstr "Behandelt Ursprungs-Commit nicht als Grenzen (Standard: aus)"
 
-#: builtin/blame.c:2358
+#: builtin/blame.c:2279
 msgid "Show work cost statistics"
 msgstr "Zeigt Statistiken zum Arbeitsaufwand"
 
-#: builtin/blame.c:2359
+#: builtin/blame.c:2280
 msgid "Show output score for blame entries"
 msgstr "Zeigt Ausgabebewertung für \"blame\"-Einträge"
 
-#: builtin/blame.c:2360
+#: builtin/blame.c:2281
 msgid "Show original filename (Default: auto)"
 msgstr "Zeigt ursprünglichen Dateinamen (Standard: auto)"
 
-#: builtin/blame.c:2361
+#: builtin/blame.c:2282
 msgid "Show original linenumber (Default: off)"
 msgstr "Zeigt ursprüngliche Zeilennummer (Standard: aus)"
 
-#: builtin/blame.c:2362
+#: builtin/blame.c:2283
 msgid "Show in a format designed for machine consumption"
 msgstr "Anzeige in einem Format für maschinelle Auswertung"
 
-#: builtin/blame.c:2363
+#: builtin/blame.c:2284
 msgid "Show porcelain format with per-line commit information"
 msgstr ""
-"Anzeige in Format für Fremdprogramme mit Versionsinformationen pro Zeile"
+"Anzeige in Format für Fremdprogramme mit Commit-Informationen pro Zeile"
 
-#: builtin/blame.c:2364
+#: builtin/blame.c:2285
 msgid "Use the same output mode as git-annotate (Default: off)"
 msgstr "Benutzt den gleichen Ausgabemodus wie \"git-annotate\" (Standard: aus)"
 
-#: builtin/blame.c:2365
+#: builtin/blame.c:2286
 msgid "Show raw timestamp (Default: off)"
 msgstr "Zeigt unbearbeiteten Zeitstempel (Standard: aus)"
 
-#: builtin/blame.c:2366
+#: builtin/blame.c:2287
 msgid "Show long commit SHA1 (Default: off)"
-msgstr "Zeigt langen Versions-SHA1 (Standard: aus)"
+msgstr "Zeigt langen Commit-SHA1 (Standard: aus)"
 
-#: builtin/blame.c:2367
+#: builtin/blame.c:2288
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Unterdrückt den Namen des Autors und den Zeitstempel (Standard: aus)"
 
-#: builtin/blame.c:2368
+#: builtin/blame.c:2289
 msgid "Show author email instead of name (Default: off)"
 msgstr "Zeigt anstatt des Namens die Email-Adresse des Autors (Standard: aus)"
 
-#: builtin/blame.c:2369
+#: builtin/blame.c:2290
 msgid "Ignore whitespace differences"
-msgstr "Ignoriert Unterschiede in Leerzeichen"
+msgstr "Ignoriert Unterschiede im Whitespace"
 
-#: builtin/blame.c:2370
+#: builtin/blame.c:2291
 msgid "Spend extra cycles to find better match"
 msgstr "arbeite länger, um bessere Übereinstimmungen zu finden"
 
-#: builtin/blame.c:2371
+#: builtin/blame.c:2292
 msgid "Use revisions from <file> instead of calling git-rev-list"
-msgstr "Benutzt Revisionen von <Datei> anstatt \"git-rev-list\" aufzurufen"
+msgstr "Benutzt Commits von <Datei> anstatt \"git-rev-list\" aufzurufen"
 
-#: builtin/blame.c:2372
+#: builtin/blame.c:2293
 msgid "Use <file>'s contents as the final image"
 msgstr "Benutzt Inhalte der <Datei>en als entgültiges Abbild"
 
-#: builtin/blame.c:2373 builtin/blame.c:2374
+#: builtin/blame.c:2294 builtin/blame.c:2295
 msgid "score"
 msgstr "Bewertung"
 
-#: builtin/blame.c:2373
+#: builtin/blame.c:2294
 msgid "Find line copies within and across files"
 msgstr "Findet kopierte Zeilen innerhalb oder zwischen Dateien"
 
-#: builtin/blame.c:2374
+#: builtin/blame.c:2295
 msgid "Find line movements within and across files"
 msgstr "Findet verschobene Zeilen innerhalb oder zwischen Dateien"
 
-#: builtin/blame.c:2375
+#: builtin/blame.c:2296
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:2375
+#: builtin/blame.c:2296
 msgid "Process only line range n,m, counting from 1"
 msgstr "Verarbeitet nur Zeilen im Bereich n,m, gezählt von 1"
 
@@ -2543,15 +2615,15 @@ msgstr "git branch [Optionen] [-r | -a] [--merged | --no-merged]"
 
 #: builtin/branch.c:25
 msgid "git branch [options] [-l] [-f] <branchname> [<start-point>]"
-msgstr "git branch [Optionen] [-l] [-f] <Zweigname> [<Startpunkt>]"
+msgstr "git branch [Optionen] [-l] [-f] <Branchname> [<Startpunkt>]"
 
 #: builtin/branch.c:26
 msgid "git branch [options] [-r] (-d | -D) <branchname>..."
-msgstr "git branch [Optionen] [-r] (-d | -D) <Zweigname>..."
+msgstr "git branch [Optionen] [-r] (-d | -D) <Branchname>..."
 
 #: builtin/branch.c:27
 msgid "git branch [options] (-m | -M) [<oldbranch>] <newbranch>"
-msgstr "git branch [Optionen] (-m | -M) [<alterZweig>] <neuerZweig>"
+msgstr "git branch [Optionen] (-m | -M) [<alterBranch>] <neuerBranch>"
 
 #: builtin/branch.c:150
 #, c-format
@@ -2559,9 +2631,8 @@ msgid ""
 "deleting branch '%s' that has been merged to\n"
 "         '%s', but not yet merged to HEAD."
 msgstr ""
-"entferne Zweig '%s', der zusammengeführt wurde mit\n"
-"         '%s', aber noch nicht mit der Zweigspitze (HEAD) zusammengeführt "
-"wurde."
+"entferne Branch '%s', der zusammengeführt wurde mit\n"
+"         '%s', aber noch nicht mit HEAD zusammengeführt wurde."
 
 #: builtin/branch.c:154
 #, c-format
@@ -2569,13 +2640,13 @@ msgid ""
 "not deleting branch '%s' that is not yet merged to\n"
 "         '%s', even though it is merged to HEAD."
 msgstr ""
-"entferne Zweig '%s' nicht, der noch nicht zusammengeführt wurde mit\n"
-"         '%s', obwohl er mit der Zweigspitze (HEAD) zusammengeführt wurde."
+"entferne Branch '%s' nicht, der noch nicht zusammengeführt wurde mit\n"
+"         '%s', obwohl er mit HEAD zusammengeführt wurde."
 
 #: builtin/branch.c:168
 #, c-format
 msgid "Couldn't look up commit object for '%s'"
-msgstr "Konnte Versionsobjekt für '%s' nicht nachschlagen."
+msgstr "Konnte Commit-Objekt für '%s' nicht nachschlagen."
 
 #: builtin/branch.c:172
 #, c-format
@@ -2583,8 +2654,8 @@ msgid ""
 "The branch '%s' is not fully merged.\n"
 "If you are sure you want to delete it, run 'git branch -D %s'."
 msgstr ""
-"Der Zweig '%s' ist nicht vollständig zusammengeführt.\n"
-"Wenn Sie sicher sind diesen Zweig zu entfernen, führen Sie 'git branch -D "
+"Der Branch '%s' ist nicht vollständig zusammengeführt.\n"
+"Wenn Sie sicher sind diesen Branch zu entfernen, führen Sie 'git branch -D "
 "%s' aus."
 
 #: builtin/branch.c:185
@@ -2597,48 +2668,48 @@ msgstr "kann -a nicht mit -d benutzen"
 
 #: builtin/branch.c:219
 msgid "Couldn't look up commit object for HEAD"
-msgstr "Konnte Versionsobjekt für Zweigspitze (HEAD) nicht nachschlagen."
+msgstr "Konnte Commit-Objekt für HEAD nicht nachschlagen."
 
 #: builtin/branch.c:227
 #, c-format
 msgid "Cannot delete the branch '%s' which you are currently on."
 msgstr ""
-"Kann Zweig '%s' nicht entfernen, da Sie sich gerade auf diesem befinden."
+"Kann Branch '%s' nicht entfernen, da Sie sich gerade auf diesem befinden."
 
 #: builtin/branch.c:240
 #, c-format
 msgid "remote branch '%s' not found."
-msgstr "externer Zweig '%s' nicht gefunden"
+msgstr "Remote-Branch '%s' nicht gefunden"
 
 #: builtin/branch.c:241
 #, c-format
 msgid "branch '%s' not found."
-msgstr "Zweig '%s' nicht gefunden."
+msgstr "Branch '%s' nicht gefunden."
 
 #: builtin/branch.c:255
 #, c-format
 msgid "Error deleting remote branch '%s'"
-msgstr "Fehler beim Entfernen des externen Zweiges '%s'"
+msgstr "Fehler beim Entfernen des Remote-Branches '%s'"
 
 #: builtin/branch.c:256
 #, c-format
 msgid "Error deleting branch '%s'"
-msgstr "Fehler beim Entfernen des Zweiges '%s'"
+msgstr "Fehler beim Entfernen des Branches '%s'"
 
 #: builtin/branch.c:263
 #, c-format
 msgid "Deleted remote branch %s (was %s).\n"
-msgstr "Externer Zweig %s entfernt (war %s).\n"
+msgstr "Remote-Branch %s entfernt (war %s).\n"
 
 #: builtin/branch.c:264
 #, c-format
 msgid "Deleted branch %s (was %s).\n"
-msgstr "Zweig %s entfernt (war %s).\n"
+msgstr "Branch %s entfernt (war %s).\n"
 
 #: builtin/branch.c:366
 #, c-format
 msgid "branch '%s' does not point at a commit"
-msgstr "Zweig '%s' zeigt auf keine Version"
+msgstr "Branch '%s' zeigt auf keinen Commit"
 
 #: builtin/branch.c:453
 #, c-format
@@ -2677,12 +2748,12 @@ msgstr " **** ungültige Referenz ****"
 #: builtin/branch.c:582
 #, c-format
 msgid "(no branch, rebasing %s)"
-msgstr "(kein Zweig, Neuaufbau von Zweig %s im Gange)"
+msgstr "(kein Branch, Rebase von Branch %s im Gange)"
 
 #: builtin/branch.c:585
 #, c-format
 msgid "(no branch, bisect started on %s)"
-msgstr "(kein Zweig, Neuaufbau begonnen bei %s)"
+msgstr "(kein Branch, binäre Suche begonnen bei %s)"
 
 #: builtin/branch.c:588
 #, c-format
@@ -2691,12 +2762,12 @@ msgstr "(losgelöst von %s)"
 
 #: builtin/branch.c:591
 msgid "(no branch)"
-msgstr "(kein Zweig)"
+msgstr "(kein Branch)"
 
 #: builtin/branch.c:637
 #, c-format
 msgid "object '%s' does not point to a commit"
-msgstr "Objekt '%s' zeigt auf keine Version"
+msgstr "Objekt '%s' zeigt auf keinen Commit"
 
 #: builtin/branch.c:669
 msgid "some refs could not be read"
@@ -2705,31 +2776,31 @@ msgstr "Konnte einige Referenzen nicht lesen"
 #: builtin/branch.c:682
 msgid "cannot rename the current branch while not on any."
 msgstr ""
-"Kann aktuellen Zweig nicht umbenennen, solange Sie sich auf keinem befinden."
+"Kann aktuellen Branch nicht umbenennen, solange Sie sich auf keinem befinden."
 
 #: builtin/branch.c:692
 #, c-format
 msgid "Invalid branch name: '%s'"
-msgstr "Ungültiger Zweig-Name: '%s'"
+msgstr "Ungültiger Branchname: '%s'"
 
 #: builtin/branch.c:707
 msgid "Branch rename failed"
-msgstr "Umbenennung des Zweiges fehlgeschlagen"
+msgstr "Umbenennung des Branches fehlgeschlagen"
 
 #: builtin/branch.c:711
 #, c-format
 msgid "Renamed a misnamed branch '%s' away"
-msgstr "falsch benannten Zweig '%s' umbenannt"
+msgstr "falsch benannten Branch '%s' umbenannt"
 
 #: builtin/branch.c:715
 #, c-format
 msgid "Branch renamed to %s, but HEAD is not updated!"
-msgstr "Zweig umbenannt zu %s, aber Zweigspitze (HEAD) ist nicht aktualisiert!"
+msgstr "Branch umbenannt zu %s, aber HEAD ist nicht aktualisiert!"
 
 #: builtin/branch.c:722
 msgid "Branch is renamed, but update of config-file failed"
 msgstr ""
-"Zweig ist umbenannt, aber die Aktualisierung der Konfigurationsdatei ist "
+"Branch ist umbenannt, aber die Aktualisierung der Konfigurationsdatei ist "
 "fehlgeschlagen."
 
 #: builtin/branch.c:737
@@ -2740,7 +2811,7 @@ msgstr "Missgebildeter Objektname %s"
 #: builtin/branch.c:761
 #, c-format
 msgid "could not write branch description template: %s"
-msgstr "Konnte Beschreibungsvorlage für Zweig nicht schreiben: %s"
+msgstr "Konnte Beschreibungsvorlage für Branch nicht schreiben: %s"
 
 #: builtin/branch.c:791
 msgid "Generic options"
@@ -2748,7 +2819,7 @@ msgstr "Allgemeine Optionen"
 
 #: builtin/branch.c:793
 msgid "show hash and subject, give twice for upstream branch"
-msgstr "Zeigt Hash und Betreff; -vv: zusätzlich externen Übernahmezweig"
+msgstr "Zeigt Hash und Betreff; -vv: zusätzlich Upstream-Branch"
 
 #: builtin/branch.c:794
 msgid "suppress informational messages"
@@ -2760,7 +2831,7 @@ msgstr "stellt den Übernahmemodus ein (siehe git-pull(1))"
 
 #: builtin/branch.c:797
 msgid "change upstream info"
-msgstr "ändert Informationen zum externen Übernahmezweig"
+msgstr "ändert Informationen zum Upstream-Branch"
 
 #: builtin/branch.c:801
 msgid "use colored output"
@@ -2768,17 +2839,17 @@ msgstr "verwendet farbliche Ausgaben"
 
 #: builtin/branch.c:802
 msgid "act on remote-tracking branches"
-msgstr "wirkt auf externe Übernahmezweige"
+msgstr "wirkt auf Remote-Tracking-Branches"
 
 #: builtin/branch.c:805 builtin/branch.c:811 builtin/branch.c:832
-#: builtin/branch.c:838 builtin/commit.c:1368 builtin/commit.c:1369
-#: builtin/commit.c:1370 builtin/commit.c:1371 builtin/tag.c:468
+#: builtin/branch.c:838 builtin/commit.c:1433 builtin/commit.c:1434
+#: builtin/commit.c:1435 builtin/commit.c:1436 builtin/tag.c:468
 msgid "commit"
-msgstr "Version"
+msgstr "Commit"
 
 #: builtin/branch.c:806 builtin/branch.c:812
 msgid "print only branches that contain the commit"
-msgstr "gibt nur Zweige aus, welche diese Version beinhalten"
+msgstr "gibt nur Branches aus, welche diesen Commit beinhalten"
 
 #: builtin/branch.c:818
 msgid "Specific git-branch actions:"
@@ -2786,60 +2857,60 @@ msgstr "spezifische Aktionen für \"git-branch\":"
 
 #: builtin/branch.c:819
 msgid "list both remote-tracking and local branches"
-msgstr "listet externe Übernahmezweige und lokale Zweige auf"
+msgstr "listet Remote-Tracking und lokale Branches auf"
 
 #: builtin/branch.c:821
 msgid "delete fully merged branch"
-msgstr "entfernt vollständig zusammengeführten Zweig"
+msgstr "entfernt vollständig zusammengeführten Branch"
 
 #: builtin/branch.c:822
 msgid "delete branch (even if not merged)"
-msgstr "löscht Zweig (auch wenn nicht zusammengeführt)"
+msgstr "löscht Branch (auch wenn nicht zusammengeführt)"
 
 #: builtin/branch.c:823
 msgid "move/rename a branch and its reflog"
-msgstr "verschiebt/benennt einen Zweig und dessen Referenzprotokoll um"
+msgstr "verschiebt/benennt einen Branch und dessen Reflog um"
 
 #: builtin/branch.c:824
 msgid "move/rename a branch, even if target exists"
 msgstr ""
-"verschiebt/benennt einen Zweig um, auch wenn das Ziel bereits existiert"
+"verschiebt/benennt einen Branch um, auch wenn das Ziel bereits existiert"
 
 #: builtin/branch.c:825
 msgid "list branch names"
-msgstr "listet Zweignamen auf"
+msgstr "listet Branchnamen auf"
 
 #: builtin/branch.c:826
 msgid "create the branch's reflog"
-msgstr "erzeugt das Referenzprotokoll des Zweiges"
+msgstr "erzeugt das Reflog des Branches"
 
 #: builtin/branch.c:828
 msgid "edit the description for the branch"
-msgstr "bearbeitet die Beschreibung für den Zweig"
+msgstr "bearbeitet die Beschreibung für den Branch"
 
 #: builtin/branch.c:829
 msgid "force creation (when already exists)"
-msgstr "erzeuge auch, wenn der Zweig bereits existiert"
+msgstr "erzeuge auch, wenn der Branch bereits existiert"
 
 #: builtin/branch.c:832
 msgid "print only not merged branches"
-msgstr "gibt nur Zweige aus, die nicht zusammengeführt sind"
+msgstr "gibt nur Branches aus, die nicht zusammengeführt sind"
 
 #: builtin/branch.c:838
 msgid "print only merged branches"
-msgstr "gibt nur Zweige aus, die zusammengeführt sind"
+msgstr "gibt nur Branches aus, die zusammengeführt sind"
 
 #: builtin/branch.c:842
 msgid "list branches in columns"
-msgstr "listet Zweige in Spalten auf"
+msgstr "listet Branches in Spalten auf"
 
 #: builtin/branch.c:855
 msgid "Failed to resolve HEAD as a valid ref."
-msgstr "Konnte Zweigspitze (HEAD) nicht als gültige Referenz auflösen."
+msgstr "Konnte HEAD nicht als gültige Referenz auflösen."
 
-#: builtin/branch.c:860 builtin/clone.c:619
+#: builtin/branch.c:860 builtin/clone.c:630
 msgid "HEAD not found below refs/heads!"
-msgstr "Zweigspitze (HEAD) wurde nicht unter \"refs/heads\" gefunden!"
+msgstr "HEAD wurde nicht unter \"refs/heads\" gefunden!"
 
 #: builtin/branch.c:883
 msgid "--column and --verbose are incompatible"
@@ -2847,68 +2918,67 @@ msgstr "Die Optionen --column und --verbose sind inkompatibel."
 
 #: builtin/branch.c:889 builtin/branch.c:928
 msgid "branch name required"
-msgstr "Zweigname erforderlich"
+msgstr "Branchname erforderlich"
 
 #: builtin/branch.c:904
 msgid "Cannot give description to detached HEAD"
-msgstr ""
-"zu losgelöster Zweigspitze (HEAD) kann keine Beschreibung hinterlegt werden"
+msgstr "zu losgelöstem HEAD kann keine Beschreibung hinterlegt werden"
 
 #: builtin/branch.c:909
 msgid "cannot edit description of more than one branch"
-msgstr "Beschreibung von mehr als einem Zweig kann nicht bearbeitet werden"
+msgstr "Beschreibung von mehr als einem Branch kann nicht bearbeitet werden"
 
 #: builtin/branch.c:916
 #, c-format
 msgid "No commit on branch '%s' yet."
-msgstr "Noch keine Version in Zweig '%s'."
+msgstr "Noch kein Commit in Branch '%s'."
 
 #: builtin/branch.c:919
 #, c-format
 msgid "No branch named '%s'."
-msgstr "Zweig '%s' nicht vorhanden."
+msgstr "Branch '%s' nicht vorhanden."
 
 #: builtin/branch.c:934
 msgid "too many branches for a rename operation"
-msgstr "zu viele Zweige für eine Umbenennen-Operation angegeben"
+msgstr "zu viele Branches für eine Umbenennen-Operation angegeben"
 
 #: builtin/branch.c:939
 msgid "too many branches to set new upstream"
-msgstr "zu viele Zweige angegeben um neuen Übernahmezweig zu setzen"
+msgstr "zu viele Branches angegeben um Upstream-Branch zu setzen"
 
 #: builtin/branch.c:943
 #, c-format
 msgid ""
 "could not set upstream of HEAD to %s when it does not point to any branch."
 msgstr ""
-"Konnte keinen neuen Übernahmezweig von Zweigspitze (HEAD) zu %s setzen,\n"
-"da diese auf keinen Zweig zeigt."
+"Konnte keinen neuen Upstream-Branch von HEAD zu %s setzen, da dieser auf\n"
+"keinen Branch zeigt."
 
 #: builtin/branch.c:946 builtin/branch.c:968 builtin/branch.c:990
 #, c-format
 msgid "no such branch '%s'"
-msgstr "Kein solcher Zweig '%s'"
+msgstr "Kein solcher Branch '%s'"
 
 #: builtin/branch.c:950
 #, c-format
 msgid "branch '%s' does not exist"
-msgstr "Zweig '%s' existiert nicht"
+msgstr "Branch '%s' existiert nicht"
 
 #: builtin/branch.c:962
 msgid "too many branches to unset upstream"
 msgstr ""
-"zu viele Zweige angegeben um Konfiguration zu Übernahmezweig zu entfernen"
+"zu viele Branches angegeben um Konfiguration zu Upstream-Branch zu entfernen"
 
 #: builtin/branch.c:966
 msgid "could not unset upstream of HEAD when it does not point to any branch."
 msgstr ""
-"Konnte Konfiguration zum Übernahmezweig von Zweigspitze (HEAD) nicht\n"
-"entfernen, da diese auf keinen Zweig zeigt."
+"Konnte Konfiguration zu Upstream-Branch von HEAD nicht entfernen, da dieser\n"
+"auf keinen Branch zeigt."
 
 #: builtin/branch.c:972
 #, c-format
 msgid "Branch '%s' has no upstream information"
-msgstr "Zweig '%s' hat keinen externen Übernahmezweig gesetzt"
+msgstr "Branch '%s' hat keinen Upstream-Branch gesetzt"
 
 #: builtin/branch.c:987
 msgid "it does not make sense to create 'HEAD' manually"
@@ -2918,7 +2988,7 @@ msgstr "'HEAD' darf nicht manuell erstellt werden"
 msgid "-a and -r options to 'git branch' do not make sense with a branch name"
 msgstr ""
 "Die Optionen -a und -r bei 'git branch' können nicht gemeimsam mit einem "
-"Zweignamen verwendet werden."
+"Branchnamen verwendet werden."
 
 #: builtin/branch.c:996
 #, c-format
@@ -2937,8 +3007,8 @@ msgid ""
 "\n"
 msgstr ""
 "\n"
-"Wenn Sie wollten, dass '%s' den Zweig '%s' als externen Übernahmezweig hat, "
-"führen Sie aus:\n"
+"Wenn Sie wollten, dass '%s' den Branch '%s' als Upstream-Branch hat, führen "
+"Sie aus:\n"
 
 #: builtin/branch.c:1014
 #, c-format
@@ -2957,51 +3027,51 @@ msgstr "%s ist in Ordnung\n"
 
 #: builtin/bundle.c:56
 msgid "Need a repository to create a bundle."
-msgstr "Um ein Paket zu erstellen wird ein Projektarchiv benötigt."
+msgstr "Um ein Paket zu erstellen wird ein Repository benötigt."
 
 #: builtin/bundle.c:60
 msgid "Need a repository to unbundle."
-msgstr "Zum Entpacken wird ein Projektarchiv benötigt."
+msgstr "Zum Entpacken wird ein Repository benötigt."
 
-#: builtin/cat-file.c:176
+#: builtin/cat-file.c:285
 msgid "git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>"
 msgstr "git cat-file (-t|-s|-e|-p|<Art>|--textconv) <Objekt>"
 
-#: builtin/cat-file.c:177
+#: builtin/cat-file.c:286
 msgid "git cat-file (--batch|--batch-check) < <list_of_objects>"
 msgstr "git cat-file (--batch|--batch-check) < <Liste_von_Objekten>"
 
-#: builtin/cat-file.c:195
+#: builtin/cat-file.c:323
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<Art> kann sein: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:196
+#: builtin/cat-file.c:324
 msgid "show object type"
 msgstr "zeigt Objektart"
 
-#: builtin/cat-file.c:197
+#: builtin/cat-file.c:325
 msgid "show object size"
 msgstr "zeigt Objektgröße"
 
-#: builtin/cat-file.c:199
+#: builtin/cat-file.c:327
 msgid "exit with zero when there's no error"
 msgstr "beendet mit Rückgabewert 0, wenn kein Fehler aufgetreten ist"
 
-#: builtin/cat-file.c:200
+#: builtin/cat-file.c:328
 msgid "pretty-print object's content"
 msgstr "ansprechende Anzeige des Objektinhaltes"
 
-#: builtin/cat-file.c:202
+#: builtin/cat-file.c:330
 msgid "for blob objects, run textconv on object's content"
 msgstr "führt eine Textkonvertierung auf den Inhalt von Blob-Objekten aus"
 
-#: builtin/cat-file.c:204
+#: builtin/cat-file.c:332
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "Anzeige von Informationen und Inhalt von Objekten, gelesen von der Standard-"
 "Eingabe"
 
-#: builtin/cat-file.c:207
+#: builtin/cat-file.c:335
 msgid "show info about objects fed from the standard input"
 msgstr ""
 "Anzeige von Informationen über Objekte, gelesen von der Standard-Eingabe"
@@ -3021,7 +3091,7 @@ msgstr "gibt alle Attribute einer Datei aus"
 
 #: builtin/check-attr.c:20
 msgid "use .gitattributes only from the index"
-msgstr "verwendet .gitattributes nur von der Bereitstellung"
+msgstr "verwendet .gitattributes nur von der Staging-Area"
 
 #: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:75
 msgid "read file names from stdin"
@@ -3031,38 +3101,63 @@ msgstr "liest Dateinamen von der Standard-Eingabe"
 msgid "input paths are terminated by a null character"
 msgstr "Eingabepfade sind durch ein NUL Zeichen abgeschlossen"
 
-#: builtin/check-ignore.c:18 builtin/checkout.c:1044 builtin/gc.c:177
+#: builtin/check-ignore.c:18 builtin/checkout.c:1054 builtin/gc.c:177
 msgid "suppress progress reporting"
 msgstr "unterdrückt Fortschrittsanzeige"
 
-#: builtin/check-ignore.c:146
+#: builtin/check-ignore.c:26
+msgid "show non-matching input paths"
+msgstr "zeigt Eingabe-Pfade ohne Übereinstimmungen"
+
+#: builtin/check-ignore.c:143
 msgid "cannot specify pathnames with --stdin"
 msgstr "Angabe von Pfadnamen kann nicht gemeinsam mit --stdin verwendet werden"
 
-#: builtin/check-ignore.c:149
+#: builtin/check-ignore.c:146
 msgid "-z only makes sense with --stdin"
 msgstr "Die Option -z kann nur mit --stdin verwendet werden."
 
-#: builtin/check-ignore.c:151
+#: builtin/check-ignore.c:148
 msgid "no path specified"
 msgstr "kein Pfad angegeben"
 
-#: builtin/check-ignore.c:155
+#: builtin/check-ignore.c:152
 msgid "--quiet is only valid with a single pathname"
 msgstr "Die Option --quiet ist nur mit einem einzelnen Pfadnamen gültig."
 
-#: builtin/check-ignore.c:157
+#: builtin/check-ignore.c:154
 msgid "cannot have both --quiet and --verbose"
 msgstr ""
 "Die Optionen --quiet und --verbose können nicht gemeinsam verwendet werden."
 
+#: builtin/check-ignore.c:157
+msgid "--non-matching is only valid with --verbose"
+msgstr "--non-matching ist nur mit --verbose zulässig"
+
+#: builtin/check-mailmap.c:8
+msgid "git check-mailmap [options] <contact>..."
+msgstr "git check-mailmap [Optionen] <Kontakt>..."
+
+#: builtin/check-mailmap.c:13
+msgid "also read contacts from stdin"
+msgstr "liest ebenfalls Kontakte von der Standard-Eingabe"
+
+#: builtin/check-mailmap.c:24
+#, c-format
+msgid "unable to parse contact: %s"
+msgstr "Konnte Kontakt '%s' nicht parsen."
+
+#: builtin/check-mailmap.c:47
+msgid "no contacts specified"
+msgstr "keine Kontakte angegeben"
+
 #: builtin/checkout-index.c:126
 msgid "git checkout-index [options] [--] [<file>...]"
 msgstr "git checkout-index [Optionen] [--] [<Datei>...]"
 
 #: builtin/checkout-index.c:187
 msgid "check out all files in the index"
-msgstr "checkt alle Dateien in der Bereitstellung aus"
+msgstr "checkt alle Dateien in der Staging-Area aus"
 
 #: builtin/checkout-index.c:188
 msgid "force overwrite of existing files"
@@ -3072,7 +3167,7 @@ msgstr "erzwingt das Überschreiben bereits existierender Dateien"
 msgid "no warning for existing files and files not in index"
 msgstr ""
 "keine Warnung für existierende Dateien, und Dateien, die sich nicht in der "
-"Bereitstellung befinden"
+"Staging-Area befinden"
 
 #: builtin/checkout-index.c:192
 msgid "don't checkout new files"
@@ -3080,7 +3175,7 @@ msgstr "checkt keine neuen Dateien aus"
 
 #: builtin/checkout-index.c:194
 msgid "update stat information in the index file"
-msgstr "aktualisiert Dateiinformationen in der Bereitstellungsdatei"
+msgstr "aktualisiert Dateiinformationen in der Staging-Area-Datei"
 
 #: builtin/checkout-index.c:200
 msgid "read list of paths from the standard input"
@@ -3105,11 +3200,11 @@ msgstr "kopiert Dateien von dem benannten Stand"
 
 #: builtin/checkout.c:25
 msgid "git checkout [options] <branch>"
-msgstr "git checkout [Optionen] <Zweig>"
+msgstr "git checkout [Optionen] <Branch>"
 
 #: builtin/checkout.c:26
 msgid "git checkout [options] [<branch>] -- <file>..."
-msgstr "git checkout [Optionen] [Zweig>] -- <Datei>..."
+msgstr "git checkout [Optionen] [<Branch>] -- <Datei>..."
 
 #: builtin/checkout.c:117 builtin/checkout.c:150
 #, c-format
@@ -3139,7 +3234,7 @@ msgstr "Pfad '%s': kann nicht zusammenführen"
 #: builtin/checkout.c:213
 #, c-format
 msgid "Unable to add merge result for '%s'"
-msgstr "Konnte Ergebnis der Zusammenführung von '%s' nicht hinzufügen."
+msgstr "Konnte Merge-Ergebnis von '%s' nicht hinzufügen."
 
 #: builtin/checkout.c:237 builtin/checkout.c:240 builtin/checkout.c:243
 #: builtin/checkout.c:246
@@ -3155,11 +3250,12 @@ msgstr "'%s' kann nicht mit '%s' verwendet werden"
 #: builtin/checkout.c:255
 #, c-format
 msgid "Cannot update paths and switch to branch '%s' at the same time."
-msgstr "Kann nicht gleichzeitig Pfade aktualisieren und zu Zweig '%s' wechseln"
+msgstr ""
+"Kann nicht gleichzeitig Pfade aktualisieren und zu Branch '%s' wechseln"
 
 #: builtin/checkout.c:266 builtin/checkout.c:458
 msgid "corrupt index file"
-msgstr "beschädigte Bereitstellungsdatei"
+msgstr "beschädigte Staging-Area-Datei"
 
 #: builtin/checkout.c:329 builtin/checkout.c:336
 #, c-format
@@ -3168,49 +3264,49 @@ msgstr "Pfad '%s' ist nicht zusammengeführt."
 
 #: builtin/checkout.c:480
 msgid "you need to resolve your current index first"
-msgstr "Sie müssen zuerst Ihre aktuelle Bereitstellung auflösen."
+msgstr "Sie müssen zuerst Ihre aktuelle Staging-Area auflösen."
 
 #: builtin/checkout.c:601
 #, c-format
 msgid "Can not do reflog for '%s'\n"
 msgstr "Konnte \"reflog\" für '%s' nicht durchführen\n"
 
-#: builtin/checkout.c:634
+#: builtin/checkout.c:639
 msgid "HEAD is now at"
-msgstr "Zweigspitze (HEAD) ist jetzt bei"
+msgstr "HEAD ist jetzt bei"
 
-#: builtin/checkout.c:641
+#: builtin/checkout.c:646
 #, c-format
 msgid "Reset branch '%s'\n"
-msgstr "Setze Zweig '%s' neu\n"
+msgstr "Setze Branch '%s' neu\n"
 
-#: builtin/checkout.c:644
+#: builtin/checkout.c:649
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Bereits auf '%s'\n"
 
-#: builtin/checkout.c:648
+#: builtin/checkout.c:653
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
-msgstr "Gewechselt zu neu gesetztem Zweig '%s'\n"
+msgstr "Gewechselt zu umgesetzten Branch '%s'\n"
 
-#: builtin/checkout.c:650 builtin/checkout.c:987
+#: builtin/checkout.c:655 builtin/checkout.c:997
 #, c-format
 msgid "Switched to a new branch '%s'\n"
-msgstr "Gewechselt zu einem neuen Zweig '%s'\n"
+msgstr "Gewechselt zu einem neuem Branch '%s'\n"
 
-#: builtin/checkout.c:652
+#: builtin/checkout.c:657
 #, c-format
 msgid "Switched to branch '%s'\n"
-msgstr "Gewechselt zu Zweig '%s'\n"
+msgstr "Gewechselt zu Branch '%s'\n"
 
-#: builtin/checkout.c:708
+#: builtin/checkout.c:713
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... und %d weitere.\n"
 
 #. The singular version
-#: builtin/checkout.c:714
+#: builtin/checkout.c:719
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -3223,17 +3319,17 @@ msgid_plural ""
 "\n"
 "%s\n"
 msgstr[0] ""
-"Warnung: Sie sind um %d Version hinterher, nicht verbunden zu\n"
-"einem Ihrer Zweige:\n"
+"Warnung: Sie sind um %d Commit hinterher, nicht verbunden zu\n"
+"einem Ihrer Branches:\n"
 "\n"
 "%s\n"
 msgstr[1] ""
-"Warnung: Sie sind um %d Versionen hinterher, nicht verbunden zu\n"
-"einem Ihrer Zweige:\n"
+"Warnung: Sie sind um %d Commits hinterher, nicht verbunden zu\n"
+"einem Ihrer Branches:\n"
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:732
+#: builtin/checkout.c:737
 #, c-format
 msgid ""
 "If you want to keep them by creating a new branch, this may be a good time\n"
@@ -3242,376 +3338,478 @@ msgid ""
 " git branch new_branch_name %s\n"
 "\n"
 msgstr ""
-"Wenn Sie diese durch einen neuen Zweig behalten möchten, dann könnte jetzt\n"
+"Wenn Sie diese durch einen neuen Branch behalten möchten, dann könnte jetzt\n"
 "ein guter Zeitpunkt sein dies zu tun mit:\n"
 "\n"
-" git branch neuer_zweig_name %s\n"
+" git branch neuer_branch_name %s\n"
 "\n"
 
-#: builtin/checkout.c:762
+#: builtin/checkout.c:767
 msgid "internal error in revision walk"
 msgstr "interner Fehler im Revisionsgang"
 
-#: builtin/checkout.c:766
+#: builtin/checkout.c:771
 msgid "Previous HEAD position was"
-msgstr "Vorherige Position der Zweigspitze (HEAD) war"
+msgstr "Vorherige Position von HEAD war"
 
-#: builtin/checkout.c:793 builtin/checkout.c:982
+#: builtin/checkout.c:798 builtin/checkout.c:992
 msgid "You are on a branch yet to be born"
-msgstr "Sie sind auf einem Zweig, der noch geboren wird"
+msgstr "Sie sind auf einem Branch, der noch geboren wird"
 
 #. case (1)
-#: builtin/checkout.c:918
+#: builtin/checkout.c:928
 #, c-format
 msgid "invalid reference: %s"
 msgstr "Ungültige Referenz: %s"
 
 #. case (1): want a tree
-#: builtin/checkout.c:957
+#: builtin/checkout.c:967
 #, c-format
 msgid "reference is not a tree: %s"
-msgstr "Referenz ist kein Baum: %s"
+msgstr "Referenz ist kein \"Tree\"-Objekt: %s"
 
-#: builtin/checkout.c:996
+#: builtin/checkout.c:1006
 msgid "paths cannot be used with switching branches"
-msgstr "Pfade können nicht beim Wechseln von Zweigen verwendet werden"
+msgstr "Pfade können nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:999 builtin/checkout.c:1003
+#: builtin/checkout.c:1009 builtin/checkout.c:1013
 #, c-format
 msgid "'%s' cannot be used with switching branches"
-msgstr "'%s' kann nicht beim Wechseln von Zweigen verwendet werden"
+msgstr "'%s' kann nicht beim Wechseln von Branches verwendet werden"
 
-#: builtin/checkout.c:1007 builtin/checkout.c:1010 builtin/checkout.c:1015
-#: builtin/checkout.c:1018
+#: builtin/checkout.c:1017 builtin/checkout.c:1020 builtin/checkout.c:1025
+#: builtin/checkout.c:1028
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "'%s' kann nicht mit '%s' verwendet werden"
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1033
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
-msgstr "Kann Zweig nicht zu Nicht-Version '%s' wechseln"
+msgstr "Kann Branch nicht zu Nicht-Commit '%s' wechseln"
 
-#: builtin/checkout.c:1045 builtin/checkout.c:1047 builtin/clone.c:90
+#: builtin/checkout.c:1055 builtin/checkout.c:1057 builtin/clone.c:89
 #: builtin/remote.c:169 builtin/remote.c:171
 msgid "branch"
-msgstr "Zweig"
+msgstr "Branch"
 
-#: builtin/checkout.c:1046
+#: builtin/checkout.c:1056
 msgid "create and checkout a new branch"
-msgstr "erzeugt und checkt einen neuen Zweig aus"
+msgstr "erzeugt und checkt einen neuen Branch aus"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1058
 msgid "create/reset and checkout a branch"
-msgstr "erzeugt/setzt neu und checkt einen Zweig aus"
+msgstr "erzeugt/setzt um und checkt einen Branch aus"
 
-#: builtin/checkout.c:1049
+#: builtin/checkout.c:1059
 msgid "create reflog for new branch"
-msgstr "erzeugt Referenzprotokoll für den neuen Zweig"
+msgstr "erzeugt das Reflog für den neuen Branch"
 
-#: builtin/checkout.c:1050
+#: builtin/checkout.c:1060
 msgid "detach the HEAD at named commit"
-msgstr "setzt die Zweigspitze (HEAD) zu benannter Version"
+msgstr "setzt HEAD zu benanntem Commit"
 
-#: builtin/checkout.c:1051
+#: builtin/checkout.c:1061
 msgid "set upstream info for new branch"
-msgstr "setzt Informationen zum externen Übernahmezweig für den neuen Zweig"
+msgstr "setzt Informationen zum Upstream-Branch für den neuen Branch"
 
-#: builtin/checkout.c:1053
+#: builtin/checkout.c:1063
 msgid "new branch"
-msgstr "neuer Zweig"
+msgstr "neuer Branch"
 
-#: builtin/checkout.c:1053
+#: builtin/checkout.c:1063
 msgid "new unparented branch"
-msgstr "neuer Zweig ohne Elternversion"
+msgstr "neuer Branch ohne Eltern-Commit"
 
-#: builtin/checkout.c:1054
+#: builtin/checkout.c:1064
 msgid "checkout our version for unmerged files"
 msgstr "checkt unsere Variante für nicht zusammengeführte Dateien aus"
 
-#: builtin/checkout.c:1056
+#: builtin/checkout.c:1066
 msgid "checkout their version for unmerged files"
 msgstr "checkt ihre Variante für nicht zusammengeführte Dateien aus"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1068
 msgid "force checkout (throw away local modifications)"
 msgstr "erzwingt Auschecken (verwirft lokale Änderungen)"
 
-#: builtin/checkout.c:1059
+#: builtin/checkout.c:1069
 msgid "perform a 3-way merge with the new branch"
-msgstr "führt eine 3-Wege-Zusammenführung mit dem neuen Zweig aus"
+msgstr "führt einen 3-Wege-Merge mit dem neuen Branch aus"
 
-#: builtin/checkout.c:1060 builtin/merge.c:217
+#: builtin/checkout.c:1070 builtin/merge.c:232
 msgid "update ignored files (default)"
 msgstr "aktualisiert ignorierte Dateien (Standard)"
 
-#: builtin/checkout.c:1061 builtin/log.c:1158 parse-options.h:245
+#: builtin/checkout.c:1071 builtin/log.c:1208 parse-options.h:249
 msgid "style"
 msgstr "Stil"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1072
 msgid "conflict style (merge or diff3)"
 msgstr "Konfliktstil (merge oder diff3)"
 
-#: builtin/checkout.c:1065
+#: builtin/checkout.c:1075
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "Pfadspezifikationen ignorieren Einstellungen zum partiellen Auschecken"
 
-#: builtin/checkout.c:1067
+#: builtin/checkout.c:1077
 msgid "second guess 'git checkout no-such-branch'"
 msgstr "second guess 'git checkout no-such-branch'"
 
-#: builtin/checkout.c:1091
+#: builtin/checkout.c:1101
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "Die Optionen -b, -B und --orphan schließen sich gegenseitig aus."
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1118
 msgid "--track needs a branch name"
-msgstr "Bei der Option --track muss ein Zweigname angegeben werden."
+msgstr "Bei der Option --track muss ein Branchname angegeben werden."
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1125
 msgid "Missing branch name; try -b"
-msgstr "Vermisse Zweignamen; versuchen Sie -b"
+msgstr "Vermisse Branchnamen; versuchen Sie -b"
 
-#: builtin/checkout.c:1150
+#: builtin/checkout.c:1160
 msgid "invalid path specification"
 msgstr "ungültige Pfadspezifikation"
 
-#: builtin/checkout.c:1157
+#: builtin/checkout.c:1167
 #, c-format
 msgid ""
 "Cannot update paths and switch to branch '%s' at the same time.\n"
 "Did you intend to checkout '%s' which can not be resolved as commit?"
 msgstr ""
-"Kann nicht gleichzeitig Pfade aktualisieren und zu Zweig '%s' wechseln.\n"
-"Haben Sie beabsichtigt '%s' auszuchecken, welcher nicht als Version "
-"aufgelöst werden kann?"
+"Kann nicht gleichzeitig Pfade aktualisieren und zu Branch '%s' wechseln.\n"
+"Haben Sie beabsichtigt '%s' auszuchecken, welcher nicht als Commit aufgelöst "
+"werden kann?"
 
-#: builtin/checkout.c:1162
+#: builtin/checkout.c:1172
 #, 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:1166
+#: builtin/checkout.c:1176
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
 msgstr ""
 "git checkout: --ours/--theirs, --force und --merge sind inkompatibel wenn\n"
-"Sie aus der Bereitstellung auschecken."
+"Sie aus der Staging-Area auschecken."
 
-#: builtin/clean.c:20
-msgid "git clean [-d] [-f] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
-msgstr "git clean [-d] [-f] [-n] [-q] [-e <Muster>] [-x | -X] [--] <Pfade>..."
+#: builtin/clean.c:25
+msgid ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
+msgstr ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <Muster>] [-x | -X] [--] <Pfade>..."
 
-#: builtin/clean.c:24
+#: builtin/clean.c:29
 #, c-format
 msgid "Removing %s\n"
 msgstr "Lösche %s\n"
 
-#: builtin/clean.c:25
+#: builtin/clean.c:30
 #, c-format
 msgid "Would remove %s\n"
 msgstr "Würde %s löschen\n"
 
-#: builtin/clean.c:26
+#: builtin/clean.c:31
 #, c-format
 msgid "Skipping repository %s\n"
-msgstr "Überspringe Projektarchiv %s\n"
+msgstr "Überspringe Repository %s\n"
 
-#: builtin/clean.c:27
+#: builtin/clean.c:32
 #, c-format
 msgid "Would skip repository %s\n"
-msgstr "Würde Projektarchiv %s überspringen\n"
+msgstr "Würde Repository %s überspringen\n"
 
-#: builtin/clean.c:28
+#: builtin/clean.c:33
 #, c-format
 msgid "failed to remove %s"
 msgstr "Fehler beim Löschen von %s"
 
-#: builtin/clean.c:160
+#: builtin/clean.c:293
+msgid ""
+"Prompt help:\n"
+"1          - select a numbered item\n"
+"foo        - select item based on unique prefix\n"
+"           - (empty) select nothing"
+msgstr ""
+"Eingabehilfe:\n"
+"1          - nummeriertes Element auswählen\n"
+"foo        - Element anhand eines eindeutigen Prefix auswählen\n"
+"           - (leer) nichts auswählen"
+
+#: builtin/clean.c:297
+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"
+msgstr ""
+"Eingabehilfe:\n"
+"1          - einzelnes Element auswählen\n"
+"3-5        - Bereich von Elementen auswählen\n"
+"2-3,6-9    - mehrere Bereiche auswählen\n"
+"foo        - Element anhand eines eindeutigen Prefix auswählen\n"
+"-...       - angegebenes Element abwählen\n"
+"*          - alle Elemente auswählen\n"
+"           - (leer) Auswahl beenden"
+
+#: builtin/clean.c:515
+#, c-format
+msgid "Huh (%s)?"
+msgstr "Wie bitte (%s)?"
+
+#: builtin/clean.c:658
+#, c-format
+msgid "Input ignore patterns>> "
+msgstr "Ignorier-Muster eingeben>> "
+
+#: builtin/clean.c:695
+#, c-format
+msgid "WARNING: Cannot find items matched by: %s"
+msgstr "WARNUNG: Kann keine Einträge finden die Muster entsprechen: %s"
+
+#: builtin/clean.c:716
+msgid "Select items to delete"
+msgstr "Wählen Sie Einträge zum Löschen"
+
+#: builtin/clean.c:756
+#, c-format
+msgid "remove %s? "
+msgstr "'%s' löschen? "
+
+#: builtin/clean.c:781
+msgid "Bye."
+msgstr "Tschüss."
+
+#: 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 ""
+"clean               - Clean starten\n"
+"filter by pattern   - Einträge von Löschung ausschließen\n"
+"select by numbers   - Auswahl von Einträgen über Nummern\n"
+"ask each            - jede Löschung bestätigen (wie \"rm -i\")\n"
+"quit                - Clean beenden\n"
+"help                - diese Meldung anzeigen\n"
+"?                   - Hilfe zur Auswahl mittels Eingabe anzeigen"
+
+#: builtin/clean.c:816
+msgid "*** Commands ***"
+msgstr "*** Kommandos ***"
+
+#: builtin/clean.c:817
+msgid "What now"
+msgstr "Was nun"
+
+#: builtin/clean.c:825
+msgid "Would remove the following item:"
+msgid_plural "Would remove the following items:"
+msgstr[0] "Würde das folgende Element entfernen:"
+msgstr[1] "Würde die folgenden Elemente entfernen:"
+
+#: builtin/clean.c:842
+msgid "No more files to clean, exiting."
+msgstr "Keine Dateien mehr zum Löschen, beende."
+
+#: builtin/clean.c:874
 msgid "do not print names of files removed"
 msgstr "gibt keine Namen von gelöschten Dateien aus"
 
-#: builtin/clean.c:162
+#: builtin/clean.c:876
 msgid "force"
 msgstr "erzwingt Aktion"
 
-#: builtin/clean.c:164
+#: builtin/clean.c:877
+msgid "interactive cleaning"
+msgstr "interaktives Clean"
+
+#: builtin/clean.c:879
 msgid "remove whole directories"
 msgstr "löscht ganze Verzeichnisse"
 
-#: builtin/clean.c:165 builtin/describe.c:412 builtin/grep.c:717
-#: builtin/ls-files.c:487 builtin/name-rev.c:231 builtin/show-ref.c:182
+#: builtin/clean.c:880 builtin/describe.c:420 builtin/grep.c:716
+#: builtin/ls-files.c:493 builtin/name-rev.c:315 builtin/show-ref.c:186
 msgid "pattern"
 msgstr "Muster"
 
-#: builtin/clean.c:166
+#: builtin/clean.c:881
 msgid "add <pattern> to ignore rules"
 msgstr "fügt <Muster> zu den Regeln für ignorierte Pfade hinzu"
 
-#: builtin/clean.c:167
+#: builtin/clean.c:882
 msgid "remove ignored files, too"
 msgstr "löscht auch ignorierte Dateien"
 
-#: builtin/clean.c:169
+#: builtin/clean.c:884
 msgid "remove only ignored files"
 msgstr "löscht nur ignorierte Dateien"
 
-#: builtin/clean.c:187
+#: builtin/clean.c:902
 msgid "-x and -X cannot be used together"
 msgstr "Die Optionen -x und -X können nicht gemeinsam verwendet werden."
 
-#: builtin/clean.c:191
+#: builtin/clean.c:906
 msgid ""
-"clean.requireForce set to true and neither -n nor -f given; refusing to clean"
+"clean.requireForce set to true and neither -i, -n nor -f given; refusing to "
+"clean"
 msgstr ""
-"clean.requireForce auf \"true\" gesetzt und weder -n noch -f gegeben; "
-"Säuberung verweigert"
+"clean.requireForce auf \"true\" gesetzt und weder -i, -n noch -f gegeben; "
+"\"clean\" verweigert"
 
-#: builtin/clean.c:194
+#: builtin/clean.c:909
 msgid ""
-"clean.requireForce defaults to true and neither -n nor -f given; refusing to "
-"clean"
+"clean.requireForce defaults to true and neither -i, -n nor -f given; "
+"refusing to clean"
 msgstr ""
-"clean.requireForce standardmäßig auf \"true\" gesetzt und weder -n noch -f "
-"gegeben; Säuberung verweigert"
+"clean.requireForce standardmäßig auf \"true\" gesetzt und weder -i, -n noch -"
+"f gegeben; \"clean\" verweigert"
 
-#: builtin/clone.c:37
+#: builtin/clone.c:36
 msgid "git clone [options] [--] <repo> [<dir>]"
-msgstr "git clone [Optionen] [--] <Projektarchiv> [<Verzeichnis>]"
+msgstr "git clone [Optionen] [--] <Repository> [<Verzeichnis>]"
 
-#: builtin/clone.c:65 builtin/fetch.c:82 builtin/merge.c:214
-#: builtin/push.c:436
+#: builtin/clone.c:64 builtin/fetch.c:82 builtin/merge.c:229
+#: builtin/push.c:462
 msgid "force progress reporting"
 msgstr "erzwingt Fortschrittsanzeige"
 
-#: builtin/clone.c:67
+#: builtin/clone.c:66
 msgid "don't create a checkout"
 msgstr "kein Auschecken"
 
-#: builtin/clone.c:68 builtin/clone.c:70 builtin/init-db.c:488
+#: builtin/clone.c:67 builtin/clone.c:69 builtin/init-db.c:488
 msgid "create a bare repository"
-msgstr "erstellt ein bloßes Projektarchiv"
+msgstr "erstellt ein Bare-Repository"
 
-#: builtin/clone.c:73
+#: builtin/clone.c:72
 msgid "create a mirror repository (implies bare)"
-msgstr "erstellt ein Spiegelarchiv (impliziert bloßes Projektarchiv)"
+msgstr "erstellt ein Spiegelarchiv (impliziert --bare)"
 
-#: builtin/clone.c:75
+#: builtin/clone.c:74
 msgid "to clone from a local repository"
-msgstr "um von einem lokalen Projektarchiv zu klonen"
+msgstr "um von einem lokalen Repository zu klonen"
 
-#: builtin/clone.c:77
+#: builtin/clone.c:76
 msgid "don't use local hardlinks, always copy"
-msgstr "verwendet lokal keine harten Links, immer Kopien"
+msgstr "verwendet lokal keine harten Verweise, immer Kopien"
 
-#: builtin/clone.c:79
+#: builtin/clone.c:78
 msgid "setup as shared repository"
-msgstr "Einrichtung als verteiltes Projektarchiv"
+msgstr "Einrichtung als verteiltes Repository"
 
-#: builtin/clone.c:81 builtin/clone.c:83
+#: builtin/clone.c:80 builtin/clone.c:82
 msgid "initialize submodules in the clone"
-msgstr "initialisiert Unterprojekte im Klon"
+msgstr "initialisiert Submodule im Klon"
 
-#: builtin/clone.c:84 builtin/init-db.c:485
+#: builtin/clone.c:83 builtin/init-db.c:485
 msgid "template-directory"
 msgstr "Vorlagenverzeichnis"
 
-#: builtin/clone.c:85 builtin/init-db.c:486
+#: builtin/clone.c:84 builtin/init-db.c:486
 msgid "directory from which templates will be used"
 msgstr "Verzeichnis, von welchem die Vorlagen verwendet werden"
 
-#: builtin/clone.c:87
+#: builtin/clone.c:86
 msgid "reference repository"
-msgstr "referenziert Projektarchiv"
+msgstr "referenziert Repository"
 
-#: builtin/clone.c:88 builtin/column.c:26 builtin/merge-file.c:44
+#: builtin/clone.c:87 builtin/column.c:26 builtin/merge-file.c:44
 msgid "name"
 msgstr "Name"
 
-#: builtin/clone.c:89
+#: builtin/clone.c:88
 msgid "use <name> instead of 'origin' to track upstream"
-msgstr "verwendet <Name> statt 'origin' für externes Projektarchiv"
+msgstr "verwendet <Name> statt 'origin' für Upstream-Repository"
 
-#: builtin/clone.c:91
+#: builtin/clone.c:90
 msgid "checkout <branch> instead of the remote's HEAD"
-msgstr ""
-"checkt <Zweig> aus, anstatt Zweigspitze (HEAD) des externen Projektarchivs"
+msgstr "checkt <Branch> aus, anstatt HEAD des Remote-Repositories"
 
-#: builtin/clone.c:93
+#: builtin/clone.c:92
 msgid "path to git-upload-pack on the remote"
 msgstr "Pfad zu \"git-upload-pack\" auf der Gegenseite"
 
-#: builtin/clone.c:94 builtin/fetch.c:83 builtin/grep.c:662
+#: builtin/clone.c:93 builtin/fetch.c:83 builtin/grep.c:661
 msgid "depth"
 msgstr "Tiefe"
 
-#: builtin/clone.c:95
+#: builtin/clone.c:94
 msgid "create a shallow clone of that depth"
 msgstr "erstellt einen flachen Klon mit dieser Tiefe"
 
-#: builtin/clone.c:97
+#: builtin/clone.c:96
 msgid "clone only one branch, HEAD or --branch"
-msgstr "klont nur einen Zweig, Zweigspitze (HEAD) oder --branch"
+msgstr "klont nur einen Branch, HEAD oder --branch"
 
-#: builtin/clone.c:98 builtin/init-db.c:494
+#: builtin/clone.c:97 builtin/init-db.c:494
 msgid "gitdir"
 msgstr ".git-Verzeichnis"
 
-#: builtin/clone.c:99 builtin/init-db.c:495
+#: builtin/clone.c:98 builtin/init-db.c:495
 msgid "separate git dir from working tree"
-msgstr "separiert Git-Verzeichnis vom Arbeitsbaum"
+msgstr "separiert Git-Verzeichnis vom Arbeitsverzeichnis"
 
-#: builtin/clone.c:100
+#: builtin/clone.c:99
 msgid "key=value"
 msgstr "Schlüssel=Wert"
 
-#: builtin/clone.c:101
+#: builtin/clone.c:100
 msgid "set config inside the new repository"
-msgstr "setzt Konfiguration innerhalb des neuen Projektarchivs"
+msgstr "setzt Konfiguration innerhalb des neuen Repositories"
 
-#: builtin/clone.c:254
+#: builtin/clone.c:253
 #, c-format
 msgid "reference repository '%s' is not a local repository."
-msgstr "Referenziertes Projektarchiv '%s' ist kein lokales Projektarchiv."
+msgstr "Referenziertes Repository '%s' ist kein lokales Repository."
 
-#: builtin/clone.c:317
+#: builtin/clone.c:316
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "Fehler beim Erstellen von Verzeichnis '%s'"
 
-#: builtin/clone.c:319 builtin/diff.c:77
+#: builtin/clone.c:318 builtin/diff.c:77
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "Konnte '%s' nicht lesen"
 
-#: builtin/clone.c:321
+#: builtin/clone.c:320
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s existiert und ist kein Verzeichnis"
 
-#: builtin/clone.c:335
+#: builtin/clone.c:334
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "Konnte %s nicht lesen\n"
 
-#: builtin/clone.c:357
+#: builtin/clone.c:356
 #, c-format
 msgid "failed to create link '%s'"
-msgstr "Konnte Verknüpfung '%s' nicht erstellen"
+msgstr "Konnte Verweis '%s' nicht erstellen"
 
-#: builtin/clone.c:361
+#: builtin/clone.c:360
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "Konnte Datei nicht nach '%s' kopieren"
 
-#: builtin/clone.c:384
+#: builtin/clone.c:383
 #, c-format
 msgid "done.\n"
 msgstr "Fertig.\n"
 
-#: builtin/clone.c:397
+#: builtin/clone.c:396
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -3621,96 +3819,110 @@ msgstr ""
 "Sie können mit 'git status' prüfen, was ausgecheckt worden ist\n"
 "und das Auschecken mit 'git checkout -f HEAD' erneut versuchen.\n"
 
-#: builtin/clone.c:476
+#: builtin/clone.c:475
 #, c-format
 msgid "Could not find remote branch %s to clone."
-msgstr "Konnte zu klonenden externer Zweig %s nicht finden."
+msgstr "Konnte zu klonenden Remote-Branch %s nicht finden."
+
+#: builtin/clone.c:555
+#, c-format
+msgid "Checking connectivity... "
+msgstr "Prüfe Konnektivität... "
 
-#: builtin/clone.c:550
+#: builtin/clone.c:558
 msgid "remote did not send all necessary objects"
-msgstr "Fernarchiv hat nicht alle erforderlichen Objekte gesendet."
+msgstr "Remote-Repository hat nicht alle erforderlichen Objekte gesendet."
 
-#: builtin/clone.c:610
+#: builtin/clone.c:560
+#, c-format
+msgid "done\n"
+msgstr "Fertig\n"
+
+#: builtin/clone.c:621
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
-"Externe Zweigspitze (HEAD) bezieht sich auf eine nicht existierende Referenz "
-"und kann nicht ausgecheckt werden.\n"
+"Externer HEAD bezieht sich auf eine nicht existierende Referenz und kann "
+"nicht ausgecheckt werden.\n"
 
-#: builtin/clone.c:641
+#: builtin/clone.c:652
 msgid "unable to checkout working tree"
-msgstr "Arbeitsbaum konnte nicht ausgecheckt werden"
+msgstr "Arbeitsverzeichnis konnte nicht ausgecheckt werden"
 
-#: builtin/clone.c:749
+#: builtin/clone.c:760
 msgid "Too many arguments."
 msgstr "Zu viele Argumente."
 
-#: builtin/clone.c:753
+#: builtin/clone.c:764
 msgid "You must specify a repository to clone."
-msgstr "Sie müssen ein Projektarchiv zum Klonen angeben."
+msgstr "Sie müssen ein Repository zum Klonen angeben."
 
-#: builtin/clone.c:764
+#: builtin/clone.c:775
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "Die Optionen --bare und --origin %s sind inkompatibel."
 
-#: builtin/clone.c:767
+#: builtin/clone.c:778
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "Die Optionen --bare und --separate-git-dir sind inkompatibel."
 
-#: builtin/clone.c:780
+#: builtin/clone.c:791
 #, c-format
 msgid "repository '%s' does not exist"
-msgstr "Projektarchiv '%s' existiert nicht."
+msgstr "Repository '%s' existiert nicht."
 
-#: builtin/clone.c:785
+#: builtin/clone.c:796
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr ""
 "Die Option --depth wird in lokalen Klonen ignoriert; benutzen Sie "
 "stattdessen file://"
 
-#: builtin/clone.c:795
+#: builtin/clone.c:798
+msgid "--local is ignored"
+msgstr "--local wird ignoriert"
+
+#: builtin/clone.c:808
 #, 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:805
+#: builtin/clone.c:818
 #, c-format
 msgid "working tree '%s' already exists."
-msgstr "Arbeitsbaum '%s' existiert bereits."
+msgstr "Arbeitsverzeichnis '%s' existiert bereits."
 
-#: builtin/clone.c:818 builtin/clone.c:830
+#: builtin/clone.c:831 builtin/clone.c:843
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen."
 
-#: builtin/clone.c:821
+#: builtin/clone.c:834
 #, c-format
 msgid "could not create work tree dir '%s'."
 msgstr "Konnte Arbeitsverzeichnis '%s' nicht erstellen."
 
-#: builtin/clone.c:840
+#: builtin/clone.c:853
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
-msgstr "Klone in bloßes Projektarchiv '%s'...\n"
+msgstr "Klone in Bare-Repository '%s'...\n"
 
-#: builtin/clone.c:842
+#: builtin/clone.c:855
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klone nach '%s'...\n"
 
-#: builtin/clone.c:877
+#: builtin/clone.c:890
 #, c-format
 msgid "Don't know how to clone %s"
 msgstr "Weiß nicht wie %s zu klonen ist."
 
-#: builtin/clone.c:926
+#: builtin/clone.c:942
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
-msgstr "externer Zweig %s nicht im anderen Projektarchiv %s gefunden"
+msgstr "Remote-Branch %s nicht im Upstream-Repository %s gefunden"
 
-#: builtin/clone.c:933
+#: builtin/clone.c:949
 msgid "You appear to have cloned an empty repository."
-msgstr "Sie scheinen ein leeres Projektarchiv geklont zu haben."
+msgstr "Sie scheinen ein leeres Repository geklont zu haben."
 
 #: builtin/column.c:9
 msgid "git column [options]"
@@ -3744,15 +3956,15 @@ msgstr "Abstand zwischen Spalten"
 msgid "--command must be the first argument"
 msgstr "Die Option --command muss an erster Stelle stehen."
 
-#: builtin/commit.c:34
+#: builtin/commit.c:35
 msgid "git commit [options] [--] <pathspec>..."
 msgstr "git commit [Optionen] [--] <Pfadspezifikation>..."
 
-#: builtin/commit.c:39
+#: builtin/commit.c:40
 msgid "git status [options] [--] <pathspec>..."
 msgstr "git status [Optionen] [--] <Pfadspezifikation>..."
 
-#: builtin/commit.c:44
+#: builtin/commit.c:45
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3773,129 +3985,144 @@ msgstr ""
 "    git config --global user.name \"Ihr Name\"\n"
 "    git config --global user.email ihre@emailadresse.de\n"
 "\n"
-"Nachdem Sie das getan hast, können Sie Ihre Identität für diese Version "
+"Nachdem Sie das getan hast, können Sie Ihre Identität für diesen Commit "
 "ändern mit:\n"
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: builtin/commit.c:56
+#: builtin/commit.c:57
 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 ""
-"Sie fragten die jüngste Version nachzubessern, aber das würde diese leer\n"
-"machen. Sie können Ihr Kommando mit --allow-empty wiederholen, oder die\n"
-"Version mit \"git reset HEAD^\" vollständig entfernen.\n"
+"Sie fragten den jüngsten Commit nachzubessern, aber das würde diesen leer\n"
+"machen. Sie können Ihr Kommando mit --allow-empty wiederholen, oder diesen\n"
+"Commit mit \"git reset HEAD^\" vollständig entfernen.\n"
 
-#: builtin/commit.c:61
+#: builtin/commit.c:62
 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"
-"Otherwise, please use 'git reset'\n"
 msgstr ""
 "Der letzte \"cherry-pick\" ist jetzt leer, möglicherweise durch eine "
 "Konfliktauflösung.\n"
-"Wenn Sie dies trotzdem eintragen wollen, benutzen Sie:\n"
+"Wenn Sie dies trotzdem committen wollen, benutzen Sie:\n"
 "\n"
 "    git commit --allow-empty\n"
 "\n"
-"Andernfalls benutzen Sie bitte 'git reset'\n"
 
-#: builtin/commit.c:260
+#: builtin/commit.c:69
+msgid "Otherwise, please use 'git reset'\n"
+msgstr "Andernfalls benutzen Sie bitte 'git reset'\n"
+
+#: builtin/commit.c:72
+msgid ""
+"If you wish to skip this commit, use:\n"
+"\n"
+"    git reset\n"
+"\n"
+"Then \"git cherry-pick --continue\" will resume cherry-picking\n"
+"the remaining commits.\n"
+msgstr ""
+"Wenn Sie diesen Commit auslassen möchten, benutzen Sie:\n"
+"\n"
+"    git reset\n"
+"\n"
+"Benutzen Sie anschließend \"git cherry-pick --continue\", um die\n"
+"Cherry-Pick-Operation mit den verbleibenden Commits fortzusetzen.\n"
+
+#: builtin/commit.c:279
 msgid "failed to unpack HEAD tree object"
-msgstr "Fehler beim Entpacken des Baum-Objektes der Zweigspitze (HEAD)."
+msgstr "Fehler beim Entpacken des \"Tree\"-Objektes von HEAD."
 
-#: builtin/commit.c:302
+#: builtin/commit.c:321
 msgid "unable to create temporary index"
-msgstr "Konnte temporäre Bereitstellung nicht erstellen."
+msgstr "Konnte temporäre Staging-Area nicht erstellen."
 
-#: builtin/commit.c:308
+#: builtin/commit.c:327
 msgid "interactive add failed"
 msgstr "interaktives Hinzufügen fehlgeschlagen"
 
-#: builtin/commit.c:341 builtin/commit.c:362 builtin/commit.c:412
+#: builtin/commit.c:360 builtin/commit.c:381 builtin/commit.c:431
 msgid "unable to write new_index file"
 msgstr "Konnte new_index Datei nicht schreiben"
 
-#: builtin/commit.c:393
+#: builtin/commit.c:412
 msgid "cannot do a partial commit during a merge."
-msgstr ""
-"Kann keine partielle Eintragung durchführen, während eine Zusammenführung im "
-"Gange ist."
+msgstr "Kann keinen Teil-Commit durchführen, während ein Merge im Gange ist."
 
-#: builtin/commit.c:395
+#: builtin/commit.c:414
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr ""
-"Kann keine partielle Eintragung durchführen, während \"cherry-pick\" im "
-"Gange ist."
+"Kann keinen Teil-Commit durchführen, während \"cherry-pick\" im Gange ist."
 
-#: builtin/commit.c:405
+#: builtin/commit.c:424
 msgid "cannot read the index"
-msgstr "Kann Bereitstellung nicht lesen"
+msgstr "Kann Staging-Area nicht lesen"
 
-#: builtin/commit.c:425
+#: builtin/commit.c:444
 msgid "unable to write temporary index file"
-msgstr "Konnte temporäre Bereitstellungsdatei nicht schreiben."
+msgstr "Konnte temporäre Staging-Area-Datei nicht schreiben."
 
-#: builtin/commit.c:513 builtin/commit.c:519
+#: builtin/commit.c:535 builtin/commit.c:541
 #, c-format
 msgid "invalid commit: %s"
-msgstr "Ungültige Version: %s"
+msgstr "Ungültiger Commit: %s"
 
-#: builtin/commit.c:542
+#: builtin/commit.c:563
 msgid "malformed --author parameter"
 msgstr "Fehlerhafter --author Parameter"
 
-#: builtin/commit.c:562
+#: builtin/commit.c:583
 #, c-format
 msgid "Malformed ident string: '%s'"
-msgstr "Fehlerhafte Identifikations-String: '%s'"
+msgstr "Fehlerhafter Ident-String: '%s'"
 
-#: builtin/commit.c:600 builtin/commit.c:633 builtin/commit.c:956
+#: builtin/commit.c:621 builtin/commit.c:654 builtin/commit.c:982
 #, c-format
 msgid "could not lookup commit %s"
-msgstr "Konnte Version %s nicht nachschlagen"
+msgstr "Konnte Commit %s nicht nachschlagen"
 
-#: builtin/commit.c:612 builtin/shortlog.c:270
+#: builtin/commit.c:633 builtin/shortlog.c:271
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(lese Log-Nachricht von Standard-Eingabe)\n"
 
-#: builtin/commit.c:614
+#: builtin/commit.c:635
 msgid "could not read log from standard input"
 msgstr "Konnte Log nicht von Standard-Eingabe lesen."
 
-#: builtin/commit.c:618
+#: builtin/commit.c:639
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "Konnte Log-Datei '%s' nicht lesen"
 
-#: builtin/commit.c:624
+#: builtin/commit.c:645
 msgid "commit has empty message"
-msgstr "Version hat eine leere Beschreibung"
+msgstr "Commit hat eine leere Beschreibung"
 
-#: builtin/commit.c:640
+#: builtin/commit.c:661
 msgid "could not read MERGE_MSG"
 msgstr "Konnte MERGE_MSG nicht lesen"
 
-#: builtin/commit.c:644
+#: builtin/commit.c:665
 msgid "could not read SQUASH_MSG"
 msgstr "Konnte SQUASH_MSG nicht lesen"
 
-#: builtin/commit.c:648
+#: builtin/commit.c:669
 #, c-format
 msgid "could not read '%s'"
 msgstr "Konnte '%s' nicht lesen"
 
-#: builtin/commit.c:709
+#: builtin/commit.c:730
 msgid "could not write commit template"
-msgstr "Konnte Versionsvorlage nicht schreiben"
+msgstr "Konnte Commit-Vorlage nicht schreiben"
 
-#: builtin/commit.c:720
+#: builtin/commit.c:741
 #, c-format
 msgid ""
 "\n"
@@ -3905,12 +4132,12 @@ msgid ""
 "and try again.\n"
 msgstr ""
 "\n"
-"Es sieht so aus, als tragen Sie eine Zusammenführung ein.\n"
+"Es sieht so aus, als committen Sie einen Merge.\n"
 "Falls das nicht korrekt ist, löschen Sie bitte die Datei\n"
 "\t%s\n"
 "und versuchen Sie es erneut.\n"
 
-#: builtin/commit.c:725
+#: builtin/commit.c:746
 #, c-format
 msgid ""
 "\n"
@@ -3920,406 +4147,406 @@ msgid ""
 "and try again.\n"
 msgstr ""
 "\n"
-"Es sieht so aus, als tragen Sie ein \"cherry-pick\" ein.\n"
+"Es sieht so aus, als committen Sie einen \"cherry-pick\".\n"
 "Falls das nicht korrekt ist, löschen Sie bitte die Datei\n"
 "\t%s\n"
 "und versuchen Sie es erneut.\n"
 
-#: builtin/commit.c:737
+#: builtin/commit.c:758
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
 "with '%c' will be ignored, and an empty message aborts the commit.\n"
 msgstr ""
-"Bitte geben Sie eine Versionsbeschreibung für Ihre Änderungen ein. Zeilen,\n"
-"die mit '%c' beginnen, werden ignoriert, und eine leere "
-"Versionsbeschreibung\n"
-"bricht die Eintragung ab.\n"
+"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen,\n"
+"die mit '%c' beginnen, werden ignoriert, und eine leere Beschreibung\n"
+"bricht den Commit ab.\n"
 
-#: builtin/commit.c:742
+#: builtin/commit.c:763
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
 "with '%c' will be kept; you may remove them yourself if you want to.\n"
 "An empty message aborts the commit.\n"
 msgstr ""
-"Bitte geben Sie eine Versionsbeschreibung für Ihre Änderungen ein. Zeilen, "
+"Bitte geben Sie eine Commit-Beschreibung für Ihre Änderungen ein. Zeilen, "
 "die\n"
 "mit '%c' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese "
 "entfernen.\n"
-"Eine leere Versionsbeschreibung bricht die Eintragung ab.\n"
+"Eine leere Beschreibung bricht den Commit ab.\n"
 
-#: builtin/commit.c:755
+#: builtin/commit.c:776
 #, c-format
 msgid "%sAuthor:    %s"
 msgstr "%sAutor:    %s"
 
-#: builtin/commit.c:762
+#: builtin/commit.c:783
 #, c-format
 msgid "%sCommitter: %s"
-msgstr "%sEintragender: %s"
+msgstr "%sCommit-Ersteller: %s"
 
-#: builtin/commit.c:782
+#: builtin/commit.c:803
 msgid "Cannot read index"
-msgstr "Kann Bereitstellung nicht lesen"
+msgstr "Kann Staging-Area nicht lesen"
 
-#: builtin/commit.c:819
+#: builtin/commit.c:845
 msgid "Error building trees"
-msgstr "Fehler beim Erzeugen der Zweige"
+msgstr "Fehler beim Erzeugen der \"Tree\"-Objekte"
 
-#: builtin/commit.c:834 builtin/tag.c:359
+#: builtin/commit.c:860 builtin/tag.c:359
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
-msgstr "Bitte liefere eine Beschreibung entweder mit der Option -m oder -F.\n"
+msgstr ""
+"Bitte liefern Sie eine Beschreibung entweder mit der Option -m oder -F.\n"
 
-#: builtin/commit.c:931
+#: builtin/commit.c:957
 #, c-format
 msgid "No existing author found with '%s'"
 msgstr "Kein existierender Autor mit '%s' gefunden."
 
-#: builtin/commit.c:946 builtin/commit.c:1140
+#: builtin/commit.c:972 builtin/commit.c:1208
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Ungültiger Modus '%s' für unbeobachtete Dateien"
 
-#: builtin/commit.c:976
+#: builtin/commit.c:1009
+msgid "--long and -z are incompatible"
+msgstr "Die Optionen --long und -z sind inkompatibel."
+
+#: builtin/commit.c:1039
 msgid "Using both --reset-author and --author does not make sense"
 msgstr ""
 "Die Optionen --reset-author und --author können nicht gemeinsam verwendet "
 "werden."
 
-#: builtin/commit.c:987
+#: builtin/commit.c:1050
 msgid "You have nothing to amend."
-msgstr "Sie haben nichts zum nachbessern."
+msgstr "Sie haben nichts für \"--amend\"."
 
-#: builtin/commit.c:990
+#: builtin/commit.c:1053
 msgid "You are in the middle of a merge -- cannot amend."
-msgstr "Eine Zusammenführung ist im Gange -- kann nicht nachbessern."
+msgstr "Ein Merge ist im Gange -- kann \"--amend\" nicht ausführen."
 
-#: builtin/commit.c:992
+#: builtin/commit.c:1055
 msgid "You are in the middle of a cherry-pick -- cannot amend."
-msgstr "\"cherry-pick\" ist im Gange -- kann nicht nachbessern."
+msgstr "\"cherry-pick\" ist im Gange -- kann \"--amend\" nicht ausführen."
 
-#: builtin/commit.c:995
+#: builtin/commit.c:1058
 msgid "Options --squash and --fixup cannot be used together"
 msgstr ""
 "Die Optionen --squash und --fixup können nicht gemeinsam verwendet werden."
 
-#: builtin/commit.c:1005
+#: builtin/commit.c:1068
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Es kann nur eine Option von -c/-C/-F/--fixup verwendet werden."
 
-#: builtin/commit.c:1007
+#: builtin/commit.c:1070
 msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
 msgstr "Die Option -m kann nicht mit -c/-C/-F/--fixup kombiniert werden."
 
-#: builtin/commit.c:1015
+#: builtin/commit.c:1078
 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."
 
-#: builtin/commit.c:1032
+#: builtin/commit.c:1095
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Es kann nur eine Option von --include/--only/--all/--interactive/--patch "
 "verwendet werden."
 
-#: builtin/commit.c:1034
+#: builtin/commit.c:1097
 msgid "No paths with --include/--only does not make sense."
 msgstr ""
 "Die Optionen --include und --only können nur mit der Angabe von Pfaden "
 "verwendet werden."
 
-#: builtin/commit.c:1036
+#: builtin/commit.c:1099
 msgid "Clever... amending the last one with dirty index."
 msgstr ""
-"Klug... die letzte Version mit einer unsauberen Bereitstellung nachbessern."
+"Klug... den letzten Commit mit einer geänderten Staging-Area nachbessern."
 
-#: builtin/commit.c:1038
+#: builtin/commit.c:1101
 msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
 msgstr ""
 "Explizite Pfade ohne -i oder -o angegeben; unter der Annahme von --only "
 "Pfaden..."
 
-#: builtin/commit.c:1048 builtin/tag.c:575
+#: builtin/commit.c:1111 builtin/tag.c:575
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Ungültiger \"cleanup\" Modus %s"
 
-#: builtin/commit.c:1053
+#: builtin/commit.c:1116
 msgid "Paths with -a does not make sense."
 msgstr "Die Option -a kann nur mit der Angabe von Pfaden verwendet werden."
 
-#: builtin/commit.c:1059 builtin/commit.c:1194
-msgid "--long and -z are incompatible"
-msgstr "Die Optionen --long und -z sind inkompatibel."
-
-#: builtin/commit.c:1154 builtin/commit.c:1390
+#: builtin/commit.c:1222 builtin/commit.c:1455
 msgid "show status concisely"
 msgstr "zeigt Status im Kurzformat"
 
-#: builtin/commit.c:1156 builtin/commit.c:1392
+#: builtin/commit.c:1224 builtin/commit.c:1457
 msgid "show branch information"
-msgstr "zeigt Zweiginformationen"
+msgstr "zeigt Branchinformationen"
 
-#: builtin/commit.c:1158 builtin/commit.c:1394 builtin/push.c:426
+#: builtin/commit.c:1226 builtin/commit.c:1459 builtin/push.c:452
 msgid "machine-readable output"
 msgstr "maschinenlesbare Ausgabe"
 
-#: builtin/commit.c:1161 builtin/commit.c:1396
+#: builtin/commit.c:1229 builtin/commit.c:1461
 msgid "show status in long format (default)"
 msgstr "zeigt Status im Langformat (Standard)"
 
-#: builtin/commit.c:1164 builtin/commit.c:1399
+#: builtin/commit.c:1232 builtin/commit.c:1464
 msgid "terminate entries with NUL"
 msgstr "schließt Einträge mit NUL-Zeichen ab"
 
-#: builtin/commit.c:1166 builtin/commit.c:1402 builtin/fast-export.c:659
-#: builtin/fast-export.c:662 builtin/tag.c:459
+#: builtin/commit.c:1234 builtin/commit.c:1467 builtin/fast-export.c:667
+#: builtin/fast-export.c:670 builtin/tag.c:459
 msgid "mode"
 msgstr "Modus"
 
-#: builtin/commit.c:1167 builtin/commit.c:1402
+#: builtin/commit.c:1235 builtin/commit.c:1467
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "zeigt nicht beobachtete Dateien, optionale Modi: all, normal, no. (Standard: "
 "all)"
 
-#: builtin/commit.c:1170
+#: builtin/commit.c:1238
 msgid "show ignored files"
 msgstr "zeigt ignorierte Dateien"
 
-#: builtin/commit.c:1171 parse-options.h:151
+#: builtin/commit.c:1239 parse-options.h:154
 msgid "when"
 msgstr "wann"
 
-#: builtin/commit.c:1172
+#: builtin/commit.c:1240
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
-"ignoriert Änderungen in Unterprojekten, optional wenn: all, dirty, "
-"untracked. (Standard: all)"
+"ignoriert Änderungen in Submodulen, optional wenn: all, dirty, untracked. "
+"(Standard: all)"
 
-#: builtin/commit.c:1174
+#: builtin/commit.c:1242
 msgid "list untracked files in columns"
 msgstr "listet unbeobachtete Dateien in Spalten auf"
 
-#: builtin/commit.c:1248
+#: builtin/commit.c:1313
 msgid "couldn't look up newly created commit"
-msgstr "Konnte neu erstellte Version nicht nachschlagen."
+msgstr "Konnte neu erstellten Commit nicht nachschlagen."
 
-#: builtin/commit.c:1250
+#: builtin/commit.c:1315
 msgid "could not parse newly created commit"
-msgstr "Konnte neulich erstellte Version nicht analysieren."
+msgstr "Konnte neulich erstellten Commit nicht analysieren."
 
-#: builtin/commit.c:1291
+#: builtin/commit.c:1356
 msgid "detached HEAD"
-msgstr "losgelöste Zweigspitze (HEAD)"
+msgstr "losgelöster HEAD"
 
-#: builtin/commit.c:1293
+#: builtin/commit.c:1358
 msgid " (root-commit)"
-msgstr " (Basis-Version)"
+msgstr " (Basis-Commit)"
 
-#: builtin/commit.c:1360
+#: builtin/commit.c:1425
 msgid "suppress summary after successful commit"
-msgstr "unterdrückt Zusammenfassung nach erfolgreicher Eintragung"
+msgstr "unterdrückt Zusammenfassung nach erfolgreichem Commit"
 
-#: builtin/commit.c:1361
+#: builtin/commit.c:1426
 msgid "show diff in commit message template"
-msgstr "zeigt Unterschiede in Versionsbeschreibungsvorlage an"
+msgstr "zeigt Unterschiede in Commit-Beschreibungsvorlage an"
 
-#: builtin/commit.c:1363
+#: builtin/commit.c:1428
 msgid "Commit message options"
-msgstr "Optionen für Versionsbeschreibung"
+msgstr "Optionen für Commit-Beschreibung"
 
-#: builtin/commit.c:1364 builtin/tag.c:457
+#: builtin/commit.c:1429 builtin/tag.c:457
 msgid "read message from file"
 msgstr "liest Beschreibung von Datei"
 
-#: builtin/commit.c:1365
+#: builtin/commit.c:1430
 msgid "author"
 msgstr "Autor"
 
-#: builtin/commit.c:1365
+#: builtin/commit.c:1430
 msgid "override author for commit"
-msgstr "überschreibt Autor von Version"
+msgstr "überschreibt Autor eines Commits"
 
-#: builtin/commit.c:1366 builtin/gc.c:178
+#: builtin/commit.c:1431 builtin/gc.c:178
 msgid "date"
 msgstr "Datum"
 
-#: builtin/commit.c:1366
+#: builtin/commit.c:1431
 msgid "override date for commit"
-msgstr "überschreibt Datum von Version"
+msgstr "überschreibt Datum eines Commits"
 
-#: builtin/commit.c:1367 builtin/merge.c:208 builtin/notes.c:533
-#: builtin/notes.c:690 builtin/tag.c:455
+#: builtin/commit.c:1432 builtin/merge.c:223 builtin/notes.c:405
+#: builtin/notes.c:562 builtin/tag.c:455
 msgid "message"
 msgstr "Beschreibung"
 
-#: builtin/commit.c:1367
+#: builtin/commit.c:1432
 msgid "commit message"
-msgstr "Versionsbeschreibung"
+msgstr "Commit-Beschreibung"
 
-#: builtin/commit.c:1368
+#: builtin/commit.c:1433
 msgid "reuse and edit message from specified commit"
-msgstr "verwendet wieder und editiert Beschreibung von der angegebenen Version"
+msgstr "verwendet wieder und editiert Beschreibung des angegebenen Commits"
 
-#: builtin/commit.c:1369
+#: builtin/commit.c:1434
 msgid "reuse message from specified commit"
-msgstr "verwendet Beschreibung der angegebenen Version wieder"
+msgstr "verwendet Beschreibung des angegebenen Commits wieder"
 
-#: builtin/commit.c:1370
+#: builtin/commit.c:1435
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
-"verwendet eine automatisch zusammengesetzte Beschreibung zum Nachbessern der "
-"angegebenen Version"
+"verwendet eine automatisch zusammengesetzte Beschreibung zum Nachbessern des "
+"angegebenen Commits"
 
-#: builtin/commit.c:1371
+#: builtin/commit.c:1436
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
-"verwendet eine automatisch zusammengesetzte Beschreibung zum Zusammenführen "
-"der angegebenen Version"
+"verwendet eine automatisch zusammengesetzte Beschreibung beim \"squash\" des "
+"angegebenen Commits"
 
-#: builtin/commit.c:1372
+#: builtin/commit.c:1437
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
-msgstr "Setzt Sie als Autor der Version (verwendet mit -C/-c/--amend)"
+msgstr "Setzt Sie als Autor des Commits (verwendet mit -C/-c/--amend)"
 
-#: builtin/commit.c:1373 builtin/log.c:1113 builtin/revert.c:109
+#: builtin/commit.c:1438 builtin/log.c:1160 builtin/revert.c:111
 msgid "add Signed-off-by:"
 msgstr "fügt 'Signed-off-by:'-Zeile hinzu"
 
-#: builtin/commit.c:1374
+#: builtin/commit.c:1439
 msgid "use specified template file"
 msgstr "verwendet angegebene Vorlagendatei"
 
-#: builtin/commit.c:1375
+#: builtin/commit.c:1440
 msgid "force edit of commit"
-msgstr "erzwingt Bearbeitung der Version"
+msgstr "erzwingt Bearbeitung des Commits"
 
-#: builtin/commit.c:1376
+#: builtin/commit.c:1441
 msgid "default"
 msgstr "Standard"
 
-#: builtin/commit.c:1376 builtin/tag.c:460
+#: builtin/commit.c:1441 builtin/tag.c:460
 msgid "how to strip spaces and #comments from message"
 msgstr ""
 "wie Leerzeichen und #Kommentare von der Beschreibung getrennt werden sollen"
 
-#: builtin/commit.c:1377
+#: builtin/commit.c:1442
 msgid "include status in commit message template"
-msgstr "fügt Status in die Versionsbeschreibungsvorlage ein"
+msgstr "fügt Status in die Commit-Beschreibungsvorlage ein"
 
-#: builtin/commit.c:1378 builtin/merge.c:215 builtin/tag.c:461
+#: builtin/commit.c:1443 builtin/merge.c:230 builtin/tag.c:461
 msgid "key id"
 msgstr "Schlüssel-ID"
 
-#: builtin/commit.c:1379 builtin/merge.c:216
+#: builtin/commit.c:1444 builtin/merge.c:231
 msgid "GPG sign commit"
-msgstr "signiert Version mit GPG"
+msgstr "signiert Commit mit GPG"
 
 #. end commit message options
-#: builtin/commit.c:1382
+#: builtin/commit.c:1447
 msgid "Commit contents options"
-msgstr "Optionen für Versionsinhalt"
+msgstr "Optionen für Commit-Inhalt"
 
-#: builtin/commit.c:1383
+#: builtin/commit.c:1448
 msgid "commit all changed files"
-msgstr "trägt alle geänderten Dateien ein"
+msgstr "committet alle geänderten Dateien"
 
-#: builtin/commit.c:1384
+#: builtin/commit.c:1449
 msgid "add specified files to index for commit"
-msgstr "trägt die angegebenen Dateien zusätzlich zur Bereitstellung ein"
+msgstr "merkt die angegebenen Dateien zusätzlich zum Commit vor"
 
-#: builtin/commit.c:1385
+#: builtin/commit.c:1450
 msgid "interactively add files"
 msgstr "interaktives Hinzufügen von Dateien"
 
-#: builtin/commit.c:1386
+#: builtin/commit.c:1451
 msgid "interactively add changes"
 msgstr "interaktives Hinzufügen von Änderungen"
 
-#: builtin/commit.c:1387
+#: builtin/commit.c:1452
 msgid "commit only specified files"
-msgstr "trägt nur die angegebenen Dateien ein"
+msgstr "committet nur die angegebenen Dateien"
 
-#: builtin/commit.c:1388
+#: builtin/commit.c:1453
 msgid "bypass pre-commit hook"
 msgstr "umgeht \"pre-commit hook\""
 
-#: builtin/commit.c:1389
+#: builtin/commit.c:1454
 msgid "show what would be committed"
-msgstr "zeigt an, was eingetragen werden würde"
+msgstr "zeigt an, was committet werden würde"
 
-#: builtin/commit.c:1400
+#: builtin/commit.c:1465
 msgid "amend previous commit"
-msgstr "ändert vorherige Version"
+msgstr "ändert vorherigen Commit"
 
-#: builtin/commit.c:1401
+#: builtin/commit.c:1466
 msgid "bypass post-rewrite hook"
 msgstr "umgeht \"post-rewrite hook\""
 
-#: builtin/commit.c:1406
+#: builtin/commit.c:1471
 msgid "ok to record an empty change"
 msgstr "erlaubt Aufzeichnung einer leeren Änderung"
 
-#: builtin/commit.c:1409
+#: builtin/commit.c:1474
 msgid "ok to record a change with an empty message"
 msgstr "erlaubt Aufzeichnung einer Änderung mit einer leeren Beschreibung"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1507
 msgid "could not parse HEAD commit"
-msgstr "Konnte Version der Zweigspitze (HEAD) nicht analysieren."
+msgstr "Konnte Commit von HEAD nicht analysieren."
 
-#: builtin/commit.c:1479 builtin/merge.c:510
+#: builtin/commit.c:1545 builtin/merge.c:525
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "Konnte '%s' nicht zum Lesen öffnen."
 
-#: builtin/commit.c:1486
+#: builtin/commit.c:1552
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Beschädigte MERGE_HEAD-Datei (%s)"
 
-#: builtin/commit.c:1493
+#: builtin/commit.c:1559
 msgid "could not read MERGE_MODE"
 msgstr "Konnte MERGE_MODE nicht lesen"
 
-#: builtin/commit.c:1512
+#: builtin/commit.c:1578
 #, c-format
 msgid "could not read commit message: %s"
-msgstr "Konnte Versionsbeschreibung nicht lesen: %s"
+msgstr "Konnte Commit-Beschreibung nicht lesen: %s"
 
-#: builtin/commit.c:1526
+#: builtin/commit.c:1592
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
-msgstr "Eintragung abgebrochen; Sie haben die Beschreibung nicht editiert.\n"
+msgstr "Commit abgebrochen; Sie haben die Beschreibung nicht editiert.\n"
 
-#: builtin/commit.c:1531
+#: builtin/commit.c:1597
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
-msgstr "Eintragung aufgrund leerer Versionsbeschreibung abgebrochen.\n"
+msgstr "Commit aufgrund leerer Beschreibung abgebrochen.\n"
 
-#: builtin/commit.c:1546 builtin/merge.c:847 builtin/merge.c:872
+#: builtin/commit.c:1612 builtin/merge.c:861 builtin/merge.c:886
 msgid "failed to write commit object"
-msgstr "Fehler beim Schreiben des Versionsobjektes."
+msgstr "Fehler beim Schreiben des Commit-Objektes."
 
-#: builtin/commit.c:1567
+#: builtin/commit.c:1633
 msgid "cannot lock HEAD ref"
-msgstr "Kann Referenz der Zweigspitze (HEAD) nicht sperren."
+msgstr "Kann Referenz von HEAD nicht sperren."
 
-#: builtin/commit.c:1571
+#: builtin/commit.c:1637
 msgid "cannot update HEAD ref"
-msgstr "Kann Referenz der Zweigspitze (HEAD) nicht aktualisieren."
+msgstr "Kann Referenz von HEAD nicht aktualisieren."
 
-#: builtin/commit.c:1582
+#: builtin/commit.c:1648
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full or quota is\n"
 "not exceeded, and then \"git reset HEAD\" to recover."
 msgstr ""
-"Das Projektarchiv wurde aktualisiert, aber die \"new_index\"-Datei\n"
+"Das Repository wurde aktualisiert, aber die \"new_index\"-Datei\n"
 "konnte nicht geschrieben werden. Prüfen Sie, dass Ihre Festplatte nicht\n"
 "voll und Ihr Kontingent nicht aufgebraucht ist und führen Sie\n"
 "anschließend \"git reset HEAD\" zu Wiederherstellung aus."
@@ -4328,115 +4555,123 @@ msgstr ""
 msgid "git config [options]"
 msgstr "git config [Optionen]"
 
-#: builtin/config.c:51
+#: builtin/config.c:52
 msgid "Config file location"
 msgstr "Ort der Konfigurationsdatei"
 
-#: builtin/config.c:52
+#: builtin/config.c:53
 msgid "use global config file"
 msgstr "verwendet globale Konfigurationsdatei"
 
-#: builtin/config.c:53
+#: builtin/config.c:54
 msgid "use system config file"
 msgstr "verwendet systemweite Konfigurationsdatei"
 
-#: builtin/config.c:54
+#: builtin/config.c:55
 msgid "use repository config file"
-msgstr "verwendet Konfigurationsdatei des Projektarchivs"
+msgstr "verwendet Konfigurationsdatei des Repositories"
 
-#: builtin/config.c:55
+#: builtin/config.c:56
 msgid "use given config file"
 msgstr "verwendet die angegebene Konfigurationsdatei"
 
-#: builtin/config.c:56
+#: builtin/config.c:57
+msgid "blob-id"
+msgstr "Blob-Id"
+
+#: builtin/config.c:57
+msgid "read config from given blob object"
+msgstr "liest Konfiguration von angegebenem Blob-Objekt"
+
+#: builtin/config.c:58
 msgid "Action"
 msgstr "Aktion"
 
-#: builtin/config.c:57
+#: builtin/config.c:59
 msgid "get value: name [value-regex]"
 msgstr "gibt Wert zurück: Name [Wert-regex]"
 
-#: builtin/config.c:58
+#: builtin/config.c:60
 msgid "get all values: key [value-regex]"
 msgstr "gibt alle Werte zurück: Schlüssel [Wert-regex]"
 
-#: builtin/config.c:59
+#: builtin/config.c:61
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "gibt Werte für den regulären Ausdruck zurück: Name-regex [Wert-regex]"
 
-#: builtin/config.c:60
+#: builtin/config.c:62
 msgid "replace all matching variables: name value [value_regex]"
 msgstr "ersetzt alle passenden Variablen: Name Wert [Wert-regex] "
 
-#: builtin/config.c:61
+#: builtin/config.c:63
 msgid "add a new variable: name value"
 msgstr "fügt neue Variable hinzu: Name Wert"
 
-#: builtin/config.c:62
+#: builtin/config.c:64
 msgid "remove a variable: name [value-regex]"
 msgstr "entfernt eine Variable: Name [Wert-regex]"
 
-#: builtin/config.c:63
+#: builtin/config.c:65
 msgid "remove all matches: name [value-regex]"
 msgstr "entfernt alle Übereinstimmungen: Name [Wert-regex]"
 
-#: builtin/config.c:64
+#: builtin/config.c:66
 msgid "rename section: old-name new-name"
 msgstr "benennt eine Sektion um: alter-Name neuer-Name"
 
-#: builtin/config.c:65
+#: builtin/config.c:67
 msgid "remove a section: name"
 msgstr "entfernt eine Sektion: Name"
 
-#: builtin/config.c:66
+#: builtin/config.c:68
 msgid "list all"
 msgstr "listet alles auf"
 
-#: builtin/config.c:67
+#: builtin/config.c:69
 msgid "open an editor"
 msgstr "öffnet einen Editor"
 
-#: builtin/config.c:68 builtin/config.c:69
+#: builtin/config.c:70 builtin/config.c:71
 msgid "slot"
 msgstr "Slot"
 
-#: builtin/config.c:68
+#: builtin/config.c:70
 msgid "find the color configured: [default]"
 msgstr "findet die konfigurierte Farbe: [Standard]"
 
-#: builtin/config.c:69
+#: builtin/config.c:71
 msgid "find the color setting: [stdout-is-tty]"
 msgstr "findet die Farbeinstellung: [Standard-Ausgabe-ist-Terminal]"
 
-#: builtin/config.c:70
+#: builtin/config.c:72
 msgid "Type"
 msgstr "Typ"
 
-#: builtin/config.c:71
+#: builtin/config.c:73
 msgid "value is \"true\" or \"false\""
 msgstr "Wert ist \"true\" oder \"false\""
 
-#: builtin/config.c:72
+#: builtin/config.c:74
 msgid "value is decimal number"
 msgstr "Wert ist eine Dezimalzahl"
 
-#: builtin/config.c:73
+#: builtin/config.c:75
 msgid "value is --bool or --int"
 msgstr "Wert ist --bool oder --int"
 
-#: builtin/config.c:74
+#: builtin/config.c:76
 msgid "value is a path (file or directory name)"
 msgstr "Wert ist ein Pfad (Datei oder Verzeichnisname)"
 
-#: builtin/config.c:75
+#: builtin/config.c:77
 msgid "Other"
 msgstr "Sonstiges"
 
-#: builtin/config.c:76
+#: builtin/config.c:78
 msgid "terminate values with NUL byte"
 msgstr "schließt Werte mit NUL-Byte ab"
 
-#: builtin/config.c:77
+#: builtin/config.c:79
 msgid "respect include directives on lookup"
 msgstr "beachtet \"include\"-Direktiven beim Nachschlagen"
 
@@ -4448,173 +4683,173 @@ msgstr "git count-objects [-v] [-H | --human-readable]"
 msgid "print sizes in human readable format"
 msgstr "gibt Größenangaben in menschenlesbaren Format aus"
 
-#: builtin/describe.c:15
+#: builtin/describe.c:16
 msgid "git describe [options] <committish>*"
 msgstr "git describe [Optionen] <committish>*"
 
-#: builtin/describe.c:16
+#: builtin/describe.c:17
 msgid "git describe [options] --dirty"
 msgstr "git describe [Optionen] --dirty"
 
-#: builtin/describe.c:233
+#: builtin/describe.c:237
 #, c-format
 msgid "annotated tag %s not available"
-msgstr "annotierte Markierung %s ist nicht verfügbar"
+msgstr "annotierter Tag %s ist nicht verfügbar"
 
-#: builtin/describe.c:237
+#: builtin/describe.c:241
 #, c-format
 msgid "annotated tag %s has no embedded name"
-msgstr "annotierte Markierung %s hat keinen eingebetteten Namen"
+msgstr "annotierter Tag %s hat keinen eingebetteten Namen"
 
-#: builtin/describe.c:239
+#: builtin/describe.c:243
 #, c-format
 msgid "tag '%s' is really '%s' here"
-msgstr "Markierung '%s' ist eigentlich '%s' hier"
+msgstr "Tag '%s' ist eigentlich '%s' hier"
 
-#: builtin/describe.c:266
+#: builtin/describe.c:270
 #, c-format
 msgid "Not a valid object name %s"
 msgstr "%s ist kein gültiger Objekt-Name"
 
-#: builtin/describe.c:269
+#: builtin/describe.c:273
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s ist kein gültiges '%s' Objekt"
 
-#: builtin/describe.c:286
+#: builtin/describe.c:290
 #, c-format
 msgid "no tag exactly matches '%s'"
-msgstr "kein Markierung entspricht exakt '%s'"
+msgstr "kein Tag entspricht exakt '%s'"
 
-#: builtin/describe.c:288
+#: builtin/describe.c:292
 #, c-format
 msgid "searching to describe %s\n"
 msgstr "suche zur Beschreibung von %s\n"
 
-#: builtin/describe.c:328
+#: builtin/describe.c:332
 #, c-format
 msgid "finished search at %s\n"
 msgstr "beendete Suche bei %s\n"
 
-#: builtin/describe.c:352
+#: builtin/describe.c:359
 #, c-format
 msgid ""
 "No annotated tags can describe '%s'.\n"
 "However, there were unannotated tags: try --tags."
 msgstr ""
-"Keine annotierten Markierungen können '%s' beschreiben.\n"
-"Jedoch gab es nicht annotierte Markierungen: versuchen Sie --tags."
+"Keine annotierten Tags können '%s' beschreiben.\n"
+"Jedoch gab es nicht-annotierte Tags: versuchen Sie --tags."
 
-#: builtin/describe.c:356
+#: builtin/describe.c:363
 #, c-format
 msgid ""
 "No tags can describe '%s'.\n"
 "Try --always, or create some tags."
 msgstr ""
-"Keine Markierungen können '%s' beschreiben.\n"
-"Versuchen Sie --always oder erstellen Sie einige Markierungen."
+"Keine Tags können '%s' beschreiben.\n"
+"Versuchen Sie --always oder erstellen Sie einige Tags."
 
-#: builtin/describe.c:377
+#: builtin/describe.c:384
 #, c-format
 msgid "traversed %lu commits\n"
-msgstr "%lu Versionen durchlaufen\n"
+msgstr "%lu Commits durchlaufen\n"
 
-#: builtin/describe.c:380
+#: builtin/describe.c:387
 #, c-format
 msgid ""
 "more than %i tags found; listed %i most recent\n"
 "gave up search at %s\n"
 msgstr ""
-"mehr als %i Markierungen gefunden; Führe die ersten %i auf\n"
+"mehr als %i Tags gefunden; Führe die ersten %i auf\n"
 "Suche bei %s aufgegeben\n"
 
-#: builtin/describe.c:402
+#: builtin/describe.c:409
 msgid "find the tag that comes after the commit"
-msgstr "findet die Markierung, die nach der Version kommt"
+msgstr "findet den Tag, die nach Commit kommt"
 
-#: builtin/describe.c:403
+#: builtin/describe.c:410
 msgid "debug search strategy on stderr"
 msgstr "protokolliert die Suchstrategie in der Standard-Fehlerausgabe"
 
-#: builtin/describe.c:404
+#: builtin/describe.c:411
 msgid "use any ref"
 msgstr "verwendet alle Referenzen"
 
-#: builtin/describe.c:405
+#: builtin/describe.c:412
 msgid "use any tag, even unannotated"
-msgstr "verwendet jede Markierung, auch nicht-annotierte"
+msgstr "verwendet jeden Tag, auch nicht-annotierte"
 
-#: builtin/describe.c:406
+#: builtin/describe.c:413
 msgid "always use long format"
 msgstr "verwendet immer langes Format"
 
-#: builtin/describe.c:409
+#: builtin/describe.c:414
+msgid "only follow first parent"
+msgstr "folgt nur erstem Elternteil"
+
+#: builtin/describe.c:417
 msgid "only output exact matches"
 msgstr "gibt nur exakte Übereinstimmungen aus"
 
-#: builtin/describe.c:411
+#: builtin/describe.c:419
 msgid "consider <n> most recent tags (default: 10)"
-msgstr "betrachtet die jüngsten <n> Markierungen (Standard: 10)"
+msgstr "betrachtet die jüngsten <n> Tags (Standard: 10)"
 
-#: builtin/describe.c:413
+#: builtin/describe.c:421
 msgid "only consider tags matching <pattern>"
-msgstr "betrachtet nur Markierungen die <Muster> entsprechen"
+msgstr "betrachtet nur Tags die <Muster> entsprechen"
 
-#: builtin/describe.c:415 builtin/name-rev.c:238
+#: builtin/describe.c:423 builtin/name-rev.c:322
 msgid "show abbreviated commit object as fallback"
-msgstr "zeigt gekürztes Versionsobjekt, wenn sonst nichts zutrifft"
+msgstr "zeigt gekürztes Commit-Objekt, wenn sonst nichts zutrifft"
 
-#: builtin/describe.c:416
+#: builtin/describe.c:424
 msgid "mark"
 msgstr "Kennzeichen"
 
-#: builtin/describe.c:417
+#: builtin/describe.c:425
 msgid "append <mark> on dirty working tree (default: \"-dirty\")"
 msgstr ""
-"fügt <Kennzeichen> bei geändertem Arbeitsbaum hinzu (Standard: \"-dirty\")"
+"fügt <Kennzeichen> bei geändertem Arbeitsverzeichnis hinzu (Standard: \"-"
+"dirty\")"
 
-#: builtin/describe.c:435
+#: builtin/describe.c:443
 msgid "--long is incompatible with --abbrev=0"
 msgstr "Die Optionen --long und --abbrev=0 sind inkompatibel."
 
-#: builtin/describe.c:461
+#: builtin/describe.c:469
 msgid "No names found, cannot describe anything."
 msgstr "Keine Namen gefunden, kann nichts beschreiben."
 
-#: builtin/describe.c:481
+#: builtin/describe.c:489
 msgid "--dirty is incompatible with committishes"
-msgstr "Die Option --dirty kann nicht mit Versionen verwendet werden."
+msgstr "Die Option --dirty kann nicht mit Commits verwendet werden."
 
 #: builtin/diff.c:79
 #, c-format
 msgid "'%s': not a regular file or symlink"
-msgstr "'%s': keine reguläre Datei oder symbolischer Link"
+msgstr "'%s': keine reguläre Datei oder symbolischer Verweis"
 
-#: builtin/diff.c:228
+#: builtin/diff.c:230
 #, c-format
 msgid "invalid option: %s"
 msgstr "Ungültige Option: %s"
 
-#: builtin/diff.c:305
+#: builtin/diff.c:307
 msgid "Not a git repository"
-msgstr "Kein Git-Projektarchiv"
+msgstr "Kein Git-Repository"
 
-#: builtin/diff.c:348
+#: builtin/diff.c:350
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "Objekt '%s' ist ungültig."
 
-#: builtin/diff.c:353
-#, c-format
-msgid "more than %d trees given: '%s'"
-msgstr "Mehr als %d Zweige angegeben: '%s'"
-
-#: builtin/diff.c:363
+#: builtin/diff.c:359
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "Mehr als zwei Blobs angegeben: '%s'"
 
-#: builtin/diff.c:371
+#: builtin/diff.c:366
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "unbehandeltes Objekt '%s' angegeben"
@@ -4623,46 +4858,45 @@ msgstr "unbehandeltes Objekt '%s' angegeben"
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-opts]"
 
-#: builtin/fast-export.c:658
+#: builtin/fast-export.c:666
 msgid "show progress after <n> objects"
 msgstr "zeigt Fortschritt nach <n> Objekten an"
 
-#: builtin/fast-export.c:660
+#: builtin/fast-export.c:668
 msgid "select handling of signed tags"
-msgstr "wählt Behandlung von signierten Markierungen"
+msgstr "wählt Behandlung von signierten Tags"
 
-#: builtin/fast-export.c:663
+#: builtin/fast-export.c:671
 msgid "select handling of tags that tag filtered objects"
-msgstr "wählt Behandlung von Markierungen, die gefilterte Objekte markieren"
+msgstr "wählt Behandlung von Tags, die gefilterte Objekte markieren"
 
-#: builtin/fast-export.c:666
+#: builtin/fast-export.c:674
 msgid "Dump marks to this file"
 msgstr "Schreibt Kennzeichen in diese Datei"
 
-#: builtin/fast-export.c:668
+#: builtin/fast-export.c:676
 msgid "Import marks from this file"
 msgstr "Importiert Kennzeichen von dieser Datei"
 
-#: builtin/fast-export.c:670
+#: builtin/fast-export.c:678
 msgid "Fake a tagger when tags lack one"
-msgstr ""
-"erzeugt künstlich einen Markierungsersteller, wenn die Markierung keinen hat"
+msgstr "erzeugt künstlich einen Tag-Ersteller, wenn der Tag keinen hat"
 
-#: builtin/fast-export.c:672
+#: builtin/fast-export.c:680
 msgid "Output full tree for each commit"
-msgstr "gibt für jede Version den gesamten Baum aus"
+msgstr "gibt für jeden Commit das gesamte Verzeichnis aus"
 
-#: builtin/fast-export.c:674
+#: builtin/fast-export.c:682
 msgid "Use the done feature to terminate the stream"
 msgstr "Benutzt die \"done\"-Funktion um den Strom abzuschließen"
 
-#: builtin/fast-export.c:675
+#: builtin/fast-export.c:683
 msgid "Skip output of blob data"
 msgstr "Überspringt Ausgabe von Blob-Daten"
 
 #: builtin/fetch.c:20
 msgid "git fetch [<options>] [<repository> [<refspec>...]]"
-msgstr "git fetch [<Optionen>] [<Projektarchiv> [<Referenzspezifikation>...]]"
+msgstr "git fetch [<Optionen>] [<Repository> [<Refspec>...]]"
 
 #: builtin/fetch.c:21
 msgid "git fetch [<options>] <group>"
@@ -4670,7 +4904,7 @@ msgstr "git fetch [<Optionen>] <Gruppe>"
 
 #: builtin/fetch.c:22
 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
-msgstr "git fetch --multiple [<Optionen>] [(<Projektarchiv> | <Gruppe>)...]"
+msgstr "git fetch --multiple [<Optionen>] [(<Repository> | <Gruppe>)...]"
 
 #: builtin/fetch.c:23
 msgid "git fetch --all [<options>]"
@@ -4678,7 +4912,7 @@ msgstr "git fetch --all [<Optionen>]"
 
 #: builtin/fetch.c:60
 msgid "fetch from all remotes"
-msgstr "fordert von allen externen Projektarchiven an"
+msgstr "fordert von allen Remote-Repositories an"
 
 #: builtin/fetch.c:62
 msgid "append to .git/FETCH_HEAD instead of overwriting"
@@ -4690,24 +4924,25 @@ msgstr "Pfad des Programms zum Hochladen von Paketen auf der Gegenseite"
 
 #: builtin/fetch.c:65
 msgid "force overwrite of local branch"
-msgstr "erzwingt das Überschreiben von lokalen Zweigen"
+msgstr "erzwingt das Überschreiben von lokalen Branches"
 
 #: builtin/fetch.c:67
 msgid "fetch from multiple remotes"
-msgstr "fordert von mehreren externen Projektarchiven an"
+msgstr "fordert von mehreren Remote-Repositories an"
 
 #: builtin/fetch.c:69
 msgid "fetch all tags and associated objects"
-msgstr "fordert alle Markierungen und verbundene Objekte an"
+msgstr "fordert alle Tags und verbundene Objekte an"
 
 #: builtin/fetch.c:71
 msgid "do not fetch all tags (--no-tags)"
-msgstr "fordert nicht alle Markierungen an (--no-tags)"
+msgstr "fordert nicht alle Tags an (--no-tags)"
 
 #: builtin/fetch.c:73
 msgid "prune remote-tracking branches no longer on remote"
 msgstr ""
-"entfernt externe Übernahmezweige, die sich nicht mehr im Fernarchiv befinden"
+"entfernt Remote-Tracking-Branches, die sich nicht mehr im Remote-Repository "
+"befinden"
 
 #: builtin/fetch.c:74
 msgid "on-demand"
@@ -4715,7 +4950,7 @@ msgstr "bei-Bedarf"
 
 #: builtin/fetch.c:75
 msgid "control recursive fetching of submodules"
-msgstr "kontrolliert rekursive Anforderungen von Unterprojekten"
+msgstr "kontrolliert rekursive Anforderungen von Submodulen"
 
 #: builtin/fetch.c:79
 msgid "keep downloaded pack"
@@ -4727,203 +4962,204 @@ msgstr "erlaubt Aktualisierung der \"HEAD\"-Referenz"
 
 #: builtin/fetch.c:84
 msgid "deepen history of shallow clone"
-msgstr "vertieft die Historie eines flachen Klon"
+msgstr "vertieft die Historie eines flachen Klons"
 
 #: builtin/fetch.c:86
 msgid "convert to a complete repository"
-msgstr "konvertiert zu einem vollständigen Projektarchiv"
+msgstr "konvertiert zu einem vollständigen Repository"
 
-#: builtin/fetch.c:88 builtin/log.c:1130
+#: builtin/fetch.c:88 builtin/log.c:1177
 msgid "dir"
 msgstr "Verzeichnis"
 
 #: builtin/fetch.c:89
 msgid "prepend this to submodule path output"
-msgstr "stellt dies an die Ausgabe der Unterprojekt-Pfade voran"
+msgstr "stellt dies an die Ausgabe der Submodul-Pfade voran"
 
 #: builtin/fetch.c:92
 msgid "default mode for recursion"
 msgstr "Standard-Modus für Rekursion"
 
-#: builtin/fetch.c:204
+#: builtin/fetch.c:220
 msgid "Couldn't find remote ref HEAD"
-msgstr "Konnte externe Referenz der Zweigspitze (HEAD) nicht finden."
+msgstr "Konnte Remote-Referenz von HEAD nicht finden."
 
-#: builtin/fetch.c:257
+#: builtin/fetch.c:273
 #, c-format
 msgid "object %s not found"
 msgstr "Objekt %s nicht gefunden"
 
-#: builtin/fetch.c:262
+#: builtin/fetch.c:278
 msgid "[up to date]"
 msgstr "[aktuell]"
 
-#: builtin/fetch.c:276
+#: builtin/fetch.c:292
 #, c-format
 msgid "! %-*s %-*s -> %s  (can't fetch in current branch)"
-msgstr "! %-*s %-*s -> %s  (kann nicht im aktuellen Zweig anfordern)"
+msgstr ""
+"! %-*s %-*s -> %s  (kann \"fetch\" im aktuellen Branch nicht ausführen)"
 
-#: builtin/fetch.c:277 builtin/fetch.c:363
+#: builtin/fetch.c:293 builtin/fetch.c:379
 msgid "[rejected]"
 msgstr "[zurückgewiesen]"
 
-#: builtin/fetch.c:288
+#: builtin/fetch.c:304
 msgid "[tag update]"
-msgstr "[Markierungsaktualisierung]"
+msgstr "[Tag Aktualisierung]"
 
-#: builtin/fetch.c:290 builtin/fetch.c:325 builtin/fetch.c:343
+#: builtin/fetch.c:306 builtin/fetch.c:341 builtin/fetch.c:359
 msgid "  (unable to update local ref)"
 msgstr "  (kann lokale Referenz nicht aktualisieren)"
 
-#: builtin/fetch.c:308
+#: builtin/fetch.c:324
 msgid "[new tag]"
-msgstr "[neue Markierung]"
+msgstr "[neuer Tag]"
 
-#: builtin/fetch.c:311
+#: builtin/fetch.c:327
 msgid "[new branch]"
-msgstr "[neuer Zweig]"
+msgstr "[neuer Branch]"
 
-#: builtin/fetch.c:314
+#: builtin/fetch.c:330
 msgid "[new ref]"
 msgstr "[neue Referenz]"
 
-#: builtin/fetch.c:359
+#: builtin/fetch.c:375
 msgid "unable to update local ref"
 msgstr "kann lokale Referenz nicht aktualisieren"
 
-#: builtin/fetch.c:359
+#: builtin/fetch.c:375
 msgid "forced update"
 msgstr "Aktualisierung erzwungen"
 
-#: builtin/fetch.c:365
+#: builtin/fetch.c:381
 msgid "(non-fast-forward)"
 msgstr "(kein Vorspulen)"
 
-#: builtin/fetch.c:396 builtin/fetch.c:688
+#: builtin/fetch.c:412 builtin/fetch.c:718
 #, c-format
 msgid "cannot open %s: %s\n"
 msgstr "kann %s nicht öffnen: %s\n"
 
-#: builtin/fetch.c:405
+#: builtin/fetch.c:421
 #, c-format
 msgid "%s did not send all necessary objects\n"
 msgstr "%s hat nicht alle erforderlichen Objekte gesendet\n"
 
-#: builtin/fetch.c:491
+#: builtin/fetch.c:520
 #, c-format
 msgid "From %.*s\n"
 msgstr "Von %.*s\n"
 
-#: builtin/fetch.c:502
+#: builtin/fetch.c:531
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
 " 'git remote prune %s' to remove any old, conflicting branches"
 msgstr ""
 "Einige lokale Referenzen konnten nicht aktualisiert werden; versuchen Sie\n"
-"'git remote prune %s' um jeden älteren, widersprüchlichen Zweig zu löschen."
+"'git remote prune %s' um jeden älteren, widersprüchlichen Branch zu löschen."
 
-#: builtin/fetch.c:552
+#: builtin/fetch.c:581
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s wird unreferenziert)"
 
-#: builtin/fetch.c:553
+#: builtin/fetch.c:582
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s wurde unreferenziert)"
 
-#: builtin/fetch.c:560
+#: builtin/fetch.c:589
 msgid "[deleted]"
 msgstr "[gelöscht]"
 
-#: builtin/fetch.c:561 builtin/remote.c:1055
+#: builtin/fetch.c:590 builtin/remote.c:1055
 msgid "(none)"
 msgstr "(nichts)"
 
-#: builtin/fetch.c:678
+#: builtin/fetch.c:708
 #, c-format
 msgid "Refusing to fetch into current branch %s of non-bare repository"
 msgstr ""
-"Das Anfordern in den aktuellen Zweig %s von einem nicht-bloßen Projektarchiv "
+"Der \"fetch\" in den aktuellen Branch %s von einem nicht-Bare-Repository "
 "wurde verweigert."
 
-#: builtin/fetch.c:712
+#: builtin/fetch.c:742
 #, c-format
 msgid "Don't know how to fetch from %s"
 msgstr "Weiß nicht wie von %s angefordert wird."
 
-#: builtin/fetch.c:789
+#: builtin/fetch.c:823
 #, 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:792
+#: builtin/fetch.c:826
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Option \"%s\" wird ignoriert für %s\n"
 
-#: builtin/fetch.c:894
+#: builtin/fetch.c:928
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Fordere an von %s\n"
 
-#: builtin/fetch.c:896 builtin/remote.c:100
+#: builtin/fetch.c:930 builtin/remote.c:100
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Konnte nicht von %s anfordern"
 
-#: builtin/fetch.c:915
+#: builtin/fetch.c:949
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
 msgstr ""
-"Kein externes Projektarchiv angegeben. Bitte geben Sie entweder eine URL\n"
-"oder den Namen des externen Archivs an, von welchem neue\n"
-"Revisionen angefordert werden sollen."
+"Kein Remote-Repository angegeben. Bitte geben Sie entweder eine URL\n"
+"oder den Namen des Remote-Repositories an, von welchem neue\n"
+"Commits angefordert werden sollen."
 
-#: builtin/fetch.c:935
+#: builtin/fetch.c:969
 msgid "You need to specify a tag name."
-msgstr "Sie müssen den Namen der Markierung angeben."
+msgstr "Sie müssen den Namen des Tags angeben."
 
-#: builtin/fetch.c:981
+#: builtin/fetch.c:1015
 msgid "--depth and --unshallow cannot be used together"
 msgstr ""
 "Die Optionen --depth und --unshallow können nicht gemeinsam verwendet werden."
 
-#: builtin/fetch.c:983
+#: builtin/fetch.c:1017
 msgid "--unshallow on a complete repository does not make sense"
 msgstr ""
-"Die Option --unshallow kann nicht in einem vollständigen Projektarchiv "
+"Die Option --unshallow kann nicht in einem vollständigen Repository "
 "verwendet werden."
 
-#: builtin/fetch.c:1002
+#: builtin/fetch.c:1036
 msgid "fetch --all does not take a repository argument"
-msgstr "fetch --all akzeptiert kein Projektarchiv als Argument"
+msgstr "fetch --all akzeptiert kein Repository als Argument"
 
-#: builtin/fetch.c:1004
+#: builtin/fetch.c:1038
 msgid "fetch --all does not make sense with refspecs"
-msgstr "fetch --all kann nicht mit Referenzspezifikationen verwendet werden."
+msgstr "fetch --all kann nicht mit Refspecs verwendet werden."
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1049
 #, c-format
 msgid "No such remote or remote group: %s"
-msgstr "Kein externes Archiv (einzeln oder Gruppe): %s"
+msgstr "Kein Remote-Repository (einzeln oder Gruppe): %s"
 
-#: builtin/fetch.c:1023
+#: builtin/fetch.c:1057
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr ""
-"Das Abholen einer Gruppe von externen Archiven kann nicht mit der Angabe\n"
-"von Referenzspezifikationen verwendet werden."
+"Das Abholen einer Gruppe von Remote-Repositories kann nicht mit der Angabe\n"
+"von Refspecs verwendet werden."
 
 #: builtin/fmt-merge-msg.c:13
 msgid "git fmt-merge-msg [-m <message>] [--log[=<n>]|--no-log] [--file <file>]"
 msgstr ""
 "git fmt-merge-msg [-m <Beschreibung>] [--log[=<n>]|--no-log] [--file <Datei>]"
 
-#: builtin/fmt-merge-msg.c:663 builtin/fmt-merge-msg.c:666 builtin/grep.c:701
-#: builtin/merge.c:188 builtin/show-branch.c:655 builtin/show-ref.c:175
-#: builtin/tag.c:446 parse-options.h:133 parse-options.h:239
+#: builtin/fmt-merge-msg.c:663 builtin/fmt-merge-msg.c:666 builtin/grep.c:700
+#: builtin/merge.c:203 builtin/show-branch.c:655 builtin/show-ref.c:179
+#: builtin/tag.c:446 parse-options.h:133 parse-options.h:243
 msgid "n"
 msgstr "Anzahl"
 
@@ -5001,7 +5237,7 @@ msgstr "zeigt unreferenzierte Objekte"
 
 #: builtin/fsck.c:616
 msgid "report tags"
-msgstr "meldet Markierungen"
+msgstr "meldet Tags"
 
 #: builtin/fsck.c:617
 msgid "report root nodes"
@@ -5009,11 +5245,11 @@ msgstr "meldet Hauptwurzeln"
 
 #: builtin/fsck.c:618
 msgid "make index objects head nodes"
-msgstr "erzeugt Kopfknoten der Bereitstellungsobjekte"
+msgstr "prüft Objekte in der Staging-Area"
 
 #: builtin/fsck.c:619
 msgid "make reflogs head nodes (default)"
-msgstr "erzeugt Kopfknoten des Referenzprotokolls (Standard)"
+msgstr "prüft die Reflogs (Standard)"
 
 #: builtin/fsck.c:620
 msgid "also consider packs and alternate objects"
@@ -5063,7 +5299,7 @@ msgid ""
 "Auto packing the repository for optimum performance. You may also\n"
 "run \"git gc\" manually. See \"git help gc\" for more information.\n"
 msgstr ""
-"Die Datenbank des Projektarchivs wird für eine optimale Performance\n"
+"Die Datenbank des Repositories wird für eine optimale Performance\n"
 "komprimiert. Sie können auch \"git gc\" manuell ausführen.\n"
 "Siehe \"git help gc\" für weitere Informationen.\n"
 
@@ -5076,240 +5312,240 @@ msgstr ""
 
 #: builtin/grep.c:22
 msgid "git grep [options] [-e] <pattern> [<rev>...] [[--] <path>...]"
-msgstr "git grep [Optionen] [-e] <Muster> [<Revision>...] [[--] <Pfad>...]"
+msgstr "git grep [Optionen] [-e] <Muster> [<Commit>...] [[--] <Pfad>...]"
 
 #: builtin/grep.c:217
 #, c-format
 msgid "grep: failed to create thread: %s"
 msgstr "grep: Fehler beim Erzeugen eines Thread: %s"
 
-#: builtin/grep.c:365
+#: builtin/grep.c:364
 #, c-format
 msgid "Failed to chdir: %s"
 msgstr "Fehler beim Verzeichniswechsel: %s"
 
-#: builtin/grep.c:443 builtin/grep.c:478
+#: builtin/grep.c:442 builtin/grep.c:477
 #, c-format
 msgid "unable to read tree (%s)"
-msgstr "konnte Zweig (%s) nicht lesen"
+msgstr "konnte \"Tree\"-Objekt (%s) nicht lesen"
 
-#: builtin/grep.c:493
+#: builtin/grep.c:492
 #, 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:551
+#: builtin/grep.c:550
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "Schalter '%c' erwartet einen numerischen Wert"
 
-#: builtin/grep.c:568
+#: builtin/grep.c:567
 #, c-format
 msgid "cannot open '%s'"
 msgstr "kann '%s' nicht öffnen"
 
-#: builtin/grep.c:643
+#: builtin/grep.c:642
 msgid "search in index instead of in the work tree"
-msgstr "sucht in der Bereitstellung anstatt im Arbeitsbaum"
+msgstr "sucht in der Staging-Area anstatt im Arbeitsverzeichnis"
 
-#: builtin/grep.c:645
+#: builtin/grep.c:644
 msgid "find in contents not managed by git"
 msgstr "findet auch in Inhalten, die nicht von Git verwaltet werden"
 
-#: builtin/grep.c:647
+#: builtin/grep.c:646
 msgid "search in both tracked and untracked files"
 msgstr "sucht in beobachteten und unbeobachteten Dateien"
 
-#: builtin/grep.c:649
+#: builtin/grep.c:648
 msgid "search also in ignored files"
 msgstr "sucht auch in ignorierten Dateien"
 
-#: builtin/grep.c:652
+#: builtin/grep.c:651
 msgid "show non-matching lines"
 msgstr "zeigt Zeilen ohne Übereinstimmungen"
 
-#: builtin/grep.c:654
+#: builtin/grep.c:653
 msgid "case insensitive matching"
 msgstr "findet Übereinstimmungen unabhängig von Groß- und Kleinschreibung"
 
-#: builtin/grep.c:656
+#: builtin/grep.c:655
 msgid "match patterns only at word boundaries"
 msgstr "sucht nur ganze Wörter"
 
-#: builtin/grep.c:658
+#: builtin/grep.c:657
 msgid "process binary files as text"
 msgstr "verarbeitet binäre Dateien als Text"
 
-#: builtin/grep.c:660
+#: builtin/grep.c:659
 msgid "don't match patterns in binary files"
 msgstr "findet keine Muster in Binärdateien"
 
-#: builtin/grep.c:663
+#: builtin/grep.c:662
 msgid "descend at most <depth> levels"
 msgstr "durchläuft höchstens <Tiefe> Ebenen"
 
-#: builtin/grep.c:667
+#: builtin/grep.c:666
 msgid "use extended POSIX regular expressions"
 msgstr "verwendet erweiterte reguläre Ausdrücke aus POSIX"
 
-#: builtin/grep.c:670
+#: builtin/grep.c:669
 msgid "use basic POSIX regular expressions (default)"
 msgstr "verwendet grundlegende reguläre Ausdrücke aus POSIX (Standard)"
 
-#: builtin/grep.c:673
+#: builtin/grep.c:672
 msgid "interpret patterns as fixed strings"
 msgstr "interpretiert Muster als feste Zeichenketten"
 
-#: builtin/grep.c:676
+#: builtin/grep.c:675
 msgid "use Perl-compatible regular expressions"
 msgstr "verwendet Perl-kompatible reguläre Ausdrücke"
 
-#: builtin/grep.c:679
+#: builtin/grep.c:678
 msgid "show line numbers"
 msgstr "zeigt Zeilennummern"
 
-#: builtin/grep.c:680
+#: builtin/grep.c:679
 msgid "don't show filenames"
 msgstr "zeigt keine Dateinamen"
 
-#: builtin/grep.c:681
+#: builtin/grep.c:680
 msgid "show filenames"
 msgstr "zeigt Dateinamen"
 
-#: builtin/grep.c:683
+#: builtin/grep.c:682
 msgid "show filenames relative to top directory"
 msgstr "zeigt Dateinamen relativ zum Projektverzeichnis"
 
-#: builtin/grep.c:685
+#: builtin/grep.c:684
 msgid "show only filenames instead of matching lines"
 msgstr "zeigt nur Dateinamen anstatt übereinstimmende Zeilen"
 
-#: builtin/grep.c:687
+#: builtin/grep.c:686
 msgid "synonym for --files-with-matches"
 msgstr "Synonym für --files-with-matches"
 
-#: builtin/grep.c:690
+#: builtin/grep.c:689
 msgid "show only the names of files without match"
 msgstr "zeigt nur die Dateinamen ohne Übereinstimmungen"
 
-#: builtin/grep.c:692
+#: builtin/grep.c:691
 msgid "print NUL after filenames"
 msgstr "gibt NUL-Zeichen nach Dateinamen aus"
 
-#: builtin/grep.c:694
+#: builtin/grep.c:693
 msgid "show the number of matches instead of matching lines"
 msgstr "zeigt, anstatt der Zeilen, die Anzahl der übereinstimmenden Zeilen"
 
-#: builtin/grep.c:695
+#: builtin/grep.c:694
 msgid "highlight matches"
 msgstr "hebt Übereinstimmungen hervor"
 
-#: builtin/grep.c:697
+#: builtin/grep.c:696
 msgid "print empty line between matches from different files"
 msgstr ""
 "gibt eine Leerzeile zwischen Übereinstimmungen in verschiedenen Dateien aus"
 
-#: builtin/grep.c:699
+#: builtin/grep.c:698
 msgid "show filename only once above matches from same file"
 msgstr ""
 "zeigt den Dateinamen nur einmal oberhalb der Übereinstimmungen aus dieser "
 "Datei an"
 
-#: builtin/grep.c:702
+#: builtin/grep.c:701
 msgid "show <n> context lines before and after matches"
 msgstr "zeigt <n> Zeilen vor und nach den Übereinstimmungen an"
 
-#: builtin/grep.c:705
+#: builtin/grep.c:704
 msgid "show <n> context lines before matches"
 msgstr "zeigt <n> Zeilen vor den Übereinstimmungen an"
 
-#: builtin/grep.c:707
+#: builtin/grep.c:706
 msgid "show <n> context lines after matches"
 msgstr "zeigt <n> Zeilen nach den Übereinstimmungen an"
 
-#: builtin/grep.c:708
+#: builtin/grep.c:707
 msgid "shortcut for -C NUM"
 msgstr "Kurzform für -C NUM"
 
-#: builtin/grep.c:711
+#: builtin/grep.c:710
 msgid "show a line with the function name before matches"
 msgstr "zeigt eine Zeile mit dem Funktionsnamen vor Übereinstimmungen an"
 
-#: builtin/grep.c:713
+#: builtin/grep.c:712
 msgid "show the surrounding function"
 msgstr "zeigt die umgebende Funktion an"
 
-#: builtin/grep.c:716
+#: builtin/grep.c:715
 msgid "read patterns from file"
 msgstr "liest Muster von einer Datei"
 
-#: builtin/grep.c:718
+#: builtin/grep.c:717
 msgid "match <pattern>"
 msgstr "findet <Muster>"
 
-#: builtin/grep.c:720
+#: builtin/grep.c:719
 msgid "combine patterns specified with -e"
 msgstr "kombiniert Muster, die mit -e angegeben wurden"
 
-#: builtin/grep.c:732
+#: builtin/grep.c:731
 msgid "indicate hit with exit status without output"
 msgstr "zeigt Übereinstimmungen nur durch Beendigungsstatus an"
 
-#: builtin/grep.c:734
+#: builtin/grep.c:733
 msgid "show only matches from files that match all patterns"
 msgstr "zeigt nur Übereinstimmungen von Dateien, die allen Mustern entsprechen"
 
-#: builtin/grep.c:736
+#: builtin/grep.c:735
 msgid "show parse tree for grep expression"
-msgstr "zeigt geparsten Baum für \"grep\"-Ausdruck"
+msgstr "zeigt geparstes Verzeichnis für \"grep\"-Ausdruck"
 
-#: builtin/grep.c:740
+#: builtin/grep.c:739
 msgid "pager"
 msgstr "Anzeigeprogramm"
 
-#: builtin/grep.c:740
+#: builtin/grep.c:739
 msgid "show matching files in the pager"
 msgstr "zeigt Dateien mit Übereinstimmungen im Anzeigeprogramm"
 
-#: builtin/grep.c:743
+#: builtin/grep.c:742
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "erlaubt den Aufruf von grep(1) (von dieser Programmversion ignoriert)"
 
-#: builtin/grep.c:744 builtin/show-ref.c:184
+#: builtin/grep.c:743 builtin/show-ref.c:188
 msgid "show usage"
 msgstr "zeigt Verwendung"
 
-#: builtin/grep.c:811
+#: builtin/grep.c:810
 msgid "no pattern given."
 msgstr "keine Muster angegeben"
 
-#: builtin/grep.c:866
+#: builtin/grep.c:865
 msgid "--open-files-in-pager only works on the worktree"
 msgstr ""
-"Die Option --open-files-in-pager kann nur innerhalb des Arbeitsbaums "
-"verwendet werden."
+"Die Option --open-files-in-pager kann nur innerhalb des "
+"Arbeitsverzeichnisses verwendet werden."
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "--cached or --untracked cannot be used with --no-index."
 msgstr ""
 "Die Optionen --cached und --untracked können nicht mit --no-index verwendet "
 "werden."
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "--no-index or --untracked cannot be used with revs."
 msgstr ""
-"Die Optionen --no-index und --untracked können nicht mit Versionen verwendet "
+"Die Optionen --no-index und --untracked können nicht mit Commits verwendet "
 "werden."
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 msgid "--[no-]exclude-standard cannot be used for tracked contents."
 msgstr ""
 "Die Option --[no-]exclude-standard kann nicht mit beobachteten Inhalten "
 "verwendet werden."
 
-#: builtin/grep.c:905
+#: builtin/grep.c:904
 msgid "both --cached and trees are given."
-msgstr "Die Option --cached kann nicht mit Zweigen verwendet werden."
+msgstr "Die Option --cached kann nicht mit \"Tree\"-Objekten verwendet werden."
 
 #: builtin/hash-object.c:60
 msgid ""
@@ -5347,54 +5583,54 @@ msgstr "speichert Datei wie sie ist, ohne Filter"
 msgid "process file as it were from this path"
 msgstr "verarbeitet Datei, als ob sie von diesem Pfad wäre"
 
-#: builtin/help.c:43
+#: builtin/help.c:41
 msgid "print all available commands"
 msgstr "Anzeige aller vorhandenen Kommandos"
 
-#: builtin/help.c:44
+#: builtin/help.c:42
 msgid "print list of useful guides"
 msgstr "zeigt Liste von allgemein verwendeten Anleitungen"
 
-#: builtin/help.c:45
+#: builtin/help.c:43
 msgid "show man page"
 msgstr "zeigt Handbuch"
 
-#: builtin/help.c:46
+#: builtin/help.c:44
 msgid "show manual in web browser"
 msgstr "zeigt Handbuch in einem Webbrowser"
 
-#: builtin/help.c:48
+#: builtin/help.c:46
 msgid "show info page"
 msgstr "zeigt Info-Seite"
 
-#: builtin/help.c:54
+#: builtin/help.c:52
 msgid "git help [--all] [--guides] [--man|--web|--info] [command]"
 msgstr "git help [--all] [--guides] [--man|--web|--info] [Kommando]"
 
-#: builtin/help.c:66
+#: builtin/help.c:64
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "nicht erkanntes Hilfeformat: %s"
 
-#: builtin/help.c:94
+#: builtin/help.c:92
 msgid "Failed to start emacsclient."
 msgstr "Konnte emacsclient nicht starten."
 
-#: builtin/help.c:107
+#: builtin/help.c:105
 msgid "Failed to parse emacsclient version."
 msgstr "Konnte Version des emacsclient nicht parsen."
 
-#: builtin/help.c:115
+#: builtin/help.c:113
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "Version des emacsclient '%d' ist zu alt (< 22)."
 
-#: builtin/help.c:133 builtin/help.c:161 builtin/help.c:170 builtin/help.c:178
+#: builtin/help.c:131 builtin/help.c:159 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s': %s"
 msgstr "Fehler beim Ausführen von '%s': %s"
 
-#: builtin/help.c:218
+#: builtin/help.c:216
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -5403,7 +5639,7 @@ msgstr ""
 "'%s': Pfad für nicht unterstützten Handbuchbetrachter.\n"
 "Sie könnten stattdessen 'man.<Werkzeug>.cmd' benutzen."
 
-#: builtin/help.c:230
+#: builtin/help.c:228
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -5412,336 +5648,336 @@ msgstr ""
 "'%s': Kommando für unterstützten Handbuchbetrachter.\n"
 "Sie könnten stattdessen 'man.<Werkzeug>.path' benutzen."
 
-#: builtin/help.c:351
+#: builtin/help.c:349
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "'%s': unbekannter Handbuch-Betrachter."
 
-#: builtin/help.c:368
+#: builtin/help.c:366
 msgid "no man viewer handled the request"
 msgstr "kein Handbuch-Betrachter konnte mit dieser Anfrage umgehen"
 
-#: builtin/help.c:376
+#: builtin/help.c:374
 msgid "no info viewer handled the request"
 msgstr "kein Informations-Betrachter konnte mit dieser Anfrage umgehen"
 
-#: builtin/help.c:422
+#: builtin/help.c:420
 msgid "Defining attributes per path"
 msgstr "Definition von Attributen pro Pfad"
 
-#: builtin/help.c:423
+#: builtin/help.c:421
 msgid "A Git glossary"
 msgstr "Ein Git-Glossar"
 
-#: builtin/help.c:424
+#: builtin/help.c:422
 msgid "Specifies intentionally untracked files to ignore"
 msgstr "Spezifikation von bewusst ignorierten, unbeobachteten Dateien"
 
-#: builtin/help.c:425
+#: builtin/help.c:423
 msgid "Defining submodule properties"
-msgstr "Definition von Unterprojekt-Eigenschaften"
+msgstr "Definition von Submodul-Eigenschaften"
 
-#: builtin/help.c:426
+#: builtin/help.c:424
 msgid "Specifying revisions and ranges for Git"
-msgstr "Spezifikation von Revisionen und Bereichen für Git"
+msgstr "Spezifikation von Commits und Bereichen für Git"
 
-#: builtin/help.c:427
+#: builtin/help.c:425
 msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
 msgstr "Eine einführende Anleitung zu Git (für Version 1.5.1 oder neuer)"
 
-#: builtin/help.c:428
+#: builtin/help.c:426
 msgid "An overview of recommended workflows with Git"
 msgstr "Eine Übersicht über empfohlene Arbeitsabläufe mit Git"
 
-#: builtin/help.c:440
+#: builtin/help.c:438
 msgid "The common Git guides are:\n"
 msgstr "Die allgemein verwendeten Git-Anleitungen sind:\n"
 
-#: builtin/help.c:462 builtin/help.c:478
+#: builtin/help.c:460 builtin/help.c:476
 #, c-format
 msgid "usage: %s%s"
 msgstr "Verwendung: %s%s"
 
-#: builtin/help.c:494
+#: builtin/help.c:492
 #, c-format
 msgid "`git %s' is aliased to `%s'"
 msgstr "für `git %s' wurde der Alias `%s' angelegt"
 
-#: builtin/index-pack.c:182
+#: builtin/index-pack.c:184
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "Objekt-Typen passen bei %s nicht zusammen"
 
-#: builtin/index-pack.c:202
+#: builtin/index-pack.c:204
 msgid "object of unexpected type"
 msgstr "Objekt hat unerwarteten Typ"
 
-#: builtin/index-pack.c:239
+#: builtin/index-pack.c:244
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "kann %d Byte nicht lesen"
 msgstr[1] "kann %d Bytes nicht lesen"
 
-#: builtin/index-pack.c:249
+#: builtin/index-pack.c:254
 msgid "early EOF"
 msgstr "zu frühes Dateiende"
 
-#: builtin/index-pack.c:250
+#: builtin/index-pack.c:255
 msgid "read error on input"
 msgstr "Fehler beim Lesen der Eingabe"
 
-#: builtin/index-pack.c:262
+#: builtin/index-pack.c:267
 msgid "used more bytes than were available"
 msgstr "verwendete mehr Bytes als verfügbar waren"
 
-#: builtin/index-pack.c:269
+#: builtin/index-pack.c:274
 msgid "pack too large for current definition of off_t"
 msgstr "Paket ist zu groß für die aktuelle Definition von off_t"
 
-#: builtin/index-pack.c:285
+#: builtin/index-pack.c:290
 #, c-format
 msgid "unable to create '%s'"
 msgstr "konnte '%s' nicht erstellen"
 
-#: builtin/index-pack.c:290
+#: builtin/index-pack.c:295
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "Kann Paketdatei '%s' nicht öffnen"
 
-#: builtin/index-pack.c:304
+#: builtin/index-pack.c:309
 msgid "pack signature mismatch"
 msgstr "Paketsignatur stimmt nicht überein"
 
-#: builtin/index-pack.c:306
+#: builtin/index-pack.c:311
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "Paketversion %<PRIu32> nicht unterstützt"
 
-#: builtin/index-pack.c:324
+#: builtin/index-pack.c:329
 #, c-format
 msgid "pack has bad object at offset %lu: %s"
 msgstr "Paket hat ein ungültiges Objekt bei Versatz %lu: %s"
 
-#: builtin/index-pack.c:446
+#: builtin/index-pack.c:451
 #, c-format
 msgid "inflate returned %d"
 msgstr "Dekomprimierung gab %d zurück"
 
-#: builtin/index-pack.c:495
+#: builtin/index-pack.c:500
 msgid "offset value overflow for delta base object"
 msgstr "Wert für Versatz bei Differenzobjekt übergelaufen"
 
-#: builtin/index-pack.c:503
+#: builtin/index-pack.c:508
 msgid "delta base offset is out of bound"
 msgstr ""
 "Wert für Versatz bei Differenzobjekt liegt außerhalb des gültigen Bereichs"
 
-#: builtin/index-pack.c:511
+#: builtin/index-pack.c:516
 #, c-format
 msgid "unknown object type %d"
 msgstr "Unbekannter Objekt-Typ %d"
 
-#: builtin/index-pack.c:542
+#: builtin/index-pack.c:547
 msgid "cannot pread pack file"
 msgstr "Kann Paketdatei %s nicht lesen"
 
-#: builtin/index-pack.c:544
+#: builtin/index-pack.c:549
 #, c-format
 msgid "premature end of pack file, %lu byte missing"
 msgid_plural "premature end of pack file, %lu bytes missing"
 msgstr[0] "frühzeitiges Ende der Paketdatei, vermisse %lu Byte"
 msgstr[1] "frühzeitiges Ende der Paketdatei, vermisse %lu Bytes"
 
-#: builtin/index-pack.c:570
+#: builtin/index-pack.c:575
 msgid "serious inflate inconsistency"
 msgstr "ernsthafte Inkonsistenz nach Dekomprimierung"
 
-#: builtin/index-pack.c:661 builtin/index-pack.c:667 builtin/index-pack.c:690
-#: builtin/index-pack.c:724 builtin/index-pack.c:733
+#: builtin/index-pack.c:666 builtin/index-pack.c:672 builtin/index-pack.c:695
+#: builtin/index-pack.c:729 builtin/index-pack.c:738
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1 KOLLISION MIT %s GEFUNDEN !"
 
-#: builtin/index-pack.c:664 builtin/pack-objects.c:170
+#: builtin/index-pack.c:669 builtin/pack-objects.c:170
 #: builtin/pack-objects.c:262
 #, c-format
 msgid "unable to read %s"
 msgstr "kann %s nicht lesen"
 
-#: builtin/index-pack.c:730
+#: builtin/index-pack.c:735
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "Kann existierendes Objekt %s nicht lesen."
 
-#: builtin/index-pack.c:744
+#: builtin/index-pack.c:749
 #, c-format
 msgid "invalid blob object %s"
 msgstr "ungültiges Blob-Objekt %s"
 
-#: builtin/index-pack.c:759
+#: builtin/index-pack.c:763
 #, c-format
 msgid "invalid %s"
 msgstr "Ungültiger Objekt-Typ %s"
 
-#: builtin/index-pack.c:761
+#: builtin/index-pack.c:766
 msgid "Error in object"
 msgstr "Fehler in Objekt"
 
-#: builtin/index-pack.c:763
+#: builtin/index-pack.c:768
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Nicht alle Kind-Objekte von %s sind erreichbar"
 
-#: builtin/index-pack.c:833 builtin/index-pack.c:863
+#: builtin/index-pack.c:838 builtin/index-pack.c:868
 msgid "failed to apply delta"
 msgstr "Konnte Dateiunterschied nicht anwenden"
 
-#: builtin/index-pack.c:1004
+#: builtin/index-pack.c:1009
 msgid "Receiving objects"
 msgstr "Empfange Objekte"
 
-#: builtin/index-pack.c:1004
+#: builtin/index-pack.c:1009
 msgid "Indexing objects"
 msgstr "Indiziere Objekte"
 
-#: builtin/index-pack.c:1030
+#: builtin/index-pack.c:1035
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "Paket ist beschädigt (SHA1 unterschiedlich)"
 
-#: builtin/index-pack.c:1035
+#: builtin/index-pack.c:1040
 msgid "cannot fstat packfile"
 msgstr "kann Paketdatei nicht lesen"
 
-#: builtin/index-pack.c:1038
+#: builtin/index-pack.c:1043
 msgid "pack has junk at the end"
 msgstr "Paketende enthält nicht verwendbaren Inhalt"
 
-#: builtin/index-pack.c:1049
+#: builtin/index-pack.c:1054
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "Fehler beim Ausführen von \"parse_pack_objects()\""
 
-#: builtin/index-pack.c:1072
+#: builtin/index-pack.c:1077
 msgid "Resolving deltas"
 msgstr "Löse Unterschiede auf"
 
-#: builtin/index-pack.c:1082
+#: builtin/index-pack.c:1087
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kann Thread nicht erzeugen: %s"
 
-#: builtin/index-pack.c:1124
+#: builtin/index-pack.c:1129
 msgid "confusion beyond insanity"
 msgstr "Fehler beim Auflösen der Unterschiede"
 
-#: builtin/index-pack.c:1132
+#: builtin/index-pack.c:1137
 #, c-format
 msgid "completed with %d local objects"
 msgstr "vervollständigt mit %d lokalen Objekten"
 
-#: builtin/index-pack.c:1142
+#: builtin/index-pack.c:1147
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Unerwartete Prüfsumme für %s (Festplattenfehler?)"
 
-#: builtin/index-pack.c:1146
+#: builtin/index-pack.c:1151
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "Paket hat %d unaufgelöste Unterschied"
 msgstr[1] "Paket hat %d unaufgelöste Unterschiede"
 
-#: builtin/index-pack.c:1171
+#: builtin/index-pack.c:1176
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "Konnte angehängtes Objekt (%d) nicht komprimieren"
 
-#: builtin/index-pack.c:1250
+#: builtin/index-pack.c:1255
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "lokales Objekt %s ist beschädigt"
 
-#: builtin/index-pack.c:1274
+#: builtin/index-pack.c:1279
 msgid "error while closing pack file"
 msgstr "Fehler beim Schließen der Paketdatei"
 
-#: builtin/index-pack.c:1287
+#: builtin/index-pack.c:1292
 #, c-format
 msgid "cannot write keep file '%s'"
 msgstr "Kann Paketbeschreibungsdatei '%s' nicht schreiben"
 
-#: builtin/index-pack.c:1295
+#: builtin/index-pack.c:1300
 #, c-format
 msgid "cannot close written keep file '%s'"
 msgstr "Kann eben erstellte Paketbeschreibungsdatei '%s' nicht schließen"
 
-#: builtin/index-pack.c:1308
+#: builtin/index-pack.c:1313
 msgid "cannot store pack file"
 msgstr "Kann Paketdatei nicht speichern"
 
-#: builtin/index-pack.c:1319
+#: builtin/index-pack.c:1324
 msgid "cannot store index file"
 msgstr "Kann Indexdatei nicht speichern"
 
-#: builtin/index-pack.c:1352
+#: builtin/index-pack.c:1357
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "\"pack.indexversion=%<PRIu32>\" ist ungültig"
 
-#: builtin/index-pack.c:1358
+#: builtin/index-pack.c:1363
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "ungültige Anzahl von Threads angegeben (%d)"
 
-#: builtin/index-pack.c:1362 builtin/index-pack.c:1535
+#: builtin/index-pack.c:1367 builtin/index-pack.c:1545
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "keine Unterstützung von Threads, '%s' wird ignoriert"
 
-#: builtin/index-pack.c:1420
+#: builtin/index-pack.c:1425
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kann existierende Paketdatei '%s' nicht öffnen"
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, 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:1469
+#: builtin/index-pack.c:1474
 #, 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:1476
+#: builtin/index-pack.c:1481
 #, 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:1503
+#: builtin/index-pack.c:1509
 msgid "Cannot come back to cwd"
 msgstr "Kann nicht zurück zu Arbeitsverzeichnis wechseln"
 
-#: builtin/index-pack.c:1547 builtin/index-pack.c:1550
-#: builtin/index-pack.c:1562 builtin/index-pack.c:1566
+#: builtin/index-pack.c:1557 builtin/index-pack.c:1560
+#: builtin/index-pack.c:1572 builtin/index-pack.c:1576
 #, c-format
 msgid "bad %s"
 msgstr "%s ist ungültig"
 
-#: builtin/index-pack.c:1580
+#: builtin/index-pack.c:1590
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "Die Option --fix-thin kann nicht ohne --stdin verwendet werden."
 
-#: builtin/index-pack.c:1584 builtin/index-pack.c:1594
+#: builtin/index-pack.c:1594 builtin/index-pack.c:1604
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "Name der Paketdatei '%s' endet nicht mit '.pack'"
 
-#: builtin/index-pack.c:1603
+#: builtin/index-pack.c:1613
 msgid "--verify with no packfile name given"
 msgstr "Die Option --verify wurde ohne Namen der Paketdatei angegeben."
 
@@ -5773,17 +6009,17 @@ msgstr "kann Verzeichnis '%s' nicht öffnen"
 #: builtin/init-db.c:97
 #, c-format
 msgid "cannot readlink '%s'"
-msgstr "kann Verknüpfung '%s' nicht lesen"
+msgstr "kann Verweis '%s' nicht lesen"
 
 #: builtin/init-db.c:99
 #, c-format
 msgid "insanely long symlink %s"
-msgstr "zu lange symbolische Verknüpfung %s"
+msgstr "zu langer symbolischer Verweis %s"
 
 #: builtin/init-db.c:102
 #, c-format
 msgid "cannot symlink '%s' '%s'"
-msgstr "kann '%s' nicht mit '%s' symbolisch verknüpfen"
+msgstr "kann symbolischen Verweis '%s' auf '%s' nicht erstellen"
 
 #: builtin/init-db.c:106
 #, c-format
@@ -5833,7 +6069,7 @@ msgstr "Konnte %s nicht nach %s verschieben"
 #: builtin/init-db.c:363
 #, c-format
 msgid "Could not create git link %s"
-msgstr "Konnte git-Verknüpfung %s nicht erstellen"
+msgstr "Konnte git-Verweis %s nicht erstellen"
 
 #.
 #. * TRANSLATORS: The first '%s' is either "Reinitialized
@@ -5843,7 +6079,7 @@ msgstr "Konnte git-Verknüpfung %s nicht erstellen"
 #: builtin/init-db.c:420
 #, c-format
 msgid "%s%s Git repository in %s%s\n"
-msgstr "%s%s Git-Projektarchiv in %s%s\n"
+msgstr "%s%s Git-Repository in %s%s\n"
 
 #: builtin/init-db.c:421
 msgid "Reinitialized existing"
@@ -5875,10 +6111,9 @@ msgstr "Berechtigungen"
 
 #: builtin/init-db.c:491
 msgid "specify that the git repository is to be shared amongst several users"
-msgstr ""
-"gibt an, dass das Git-Projektarchiv mit mehreren Benutzern geteilt wird"
+msgstr "gibt an, dass das Git-Repository mit mehreren Benutzern geteilt wird"
 
-#: builtin/init-db.c:493 builtin/prune-packed.c:77
+#: builtin/init-db.c:493 builtin/prune-packed.c:75
 msgid "be quiet"
 msgstr "weniger Ausgaben"
 
@@ -5908,368 +6143,385 @@ msgstr "Kann nicht auf aktuelles Arbeitsverzeichnis zugreifen."
 #: builtin/init-db.c:586
 #, c-format
 msgid "Cannot access work tree '%s'"
-msgstr "Kann nicht auf Arbeitsbaum '%s' zugreifen."
+msgstr "Kann nicht auf Arbeitsverzeichnis '%s' zugreifen."
 
-#: builtin/log.c:40
+#: builtin/log.c:41
 msgid "git log [<options>] [<revision range>] [[--] <path>...]\n"
-msgstr "git log [<Optionen>] [Revisionsbereich>] [[--] <Pfad>...]\n"
+msgstr "git log [<Optionen>] [Commitbereich>] [[--] <Pfad>...]\n"
 
-#: builtin/log.c:41
+#: builtin/log.c:42
 msgid "   or: git show [options] <object>..."
 msgstr "   oder: git show [Optionen] <Objekt>..."
 
-#: builtin/log.c:103
+#: builtin/log.c:124
 msgid "suppress diff output"
 msgstr "unterdrückt Ausgabe der Unterschiede"
 
-#: builtin/log.c:104
+#: builtin/log.c:125
 msgid "show source"
 msgstr "zeigt Quelle"
 
-#: builtin/log.c:105
+#: builtin/log.c:126
 msgid "Use mail map file"
 msgstr "verwendet \"mailmap\"-Datei"
 
-#: builtin/log.c:106
+#: builtin/log.c:127
 msgid "decorate options"
 msgstr "decorate-Optionen"
 
-#: builtin/log.c:199
+#: builtin/log.c:230
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "letzte Ausgabe: %d %s\n"
 
-#: builtin/log.c:422 builtin/log.c:514
+#: builtin/log.c:453 builtin/log.c:545
 #, c-format
 msgid "Could not read object %s"
 msgstr "Kann Objekt %s nicht lesen."
 
-#: builtin/log.c:538
+#: builtin/log.c:569
 #, c-format
 msgid "Unknown type: %d"
 msgstr "Unbekannter Typ: %d"
 
-#: builtin/log.c:638
+#: builtin/log.c:669
 msgid "format.headers without value"
 msgstr "format.headers ohne Wert"
 
-#: builtin/log.c:720
+#: builtin/log.c:751
 msgid "name of output directory is too long"
 msgstr "Name des Ausgabeverzeichnisses ist zu lang."
 
-#: builtin/log.c:736
+#: builtin/log.c:767
 #, c-format
 msgid "Cannot open patch file %s"
 msgstr "Kann Patch-Datei %s nicht öffnen"
 
-#: builtin/log.c:750
+#: builtin/log.c:781
 msgid "Need exactly one range."
-msgstr "Brauche genau einen Versionsbereich."
+msgstr "Brauche genau einen Commit-Bereich."
 
-#: builtin/log.c:758
+#: builtin/log.c:789
 msgid "Not a range."
-msgstr "Kein Versionsbereich."
+msgstr "Kein Commit-Bereich."
 
-#: builtin/log.c:860
+#: builtin/log.c:891
 msgid "Cover letter needs email format"
 msgstr "Anschreiben benötigt E-Mail-Format"
 
-#: builtin/log.c:936
+#: builtin/log.c:967
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "ungültiges in-reply-to: %s"
 
-#: builtin/log.c:964
+#: builtin/log.c:995
 msgid "git format-patch [options] [<since> | <revision range>]"
-msgstr "git format-patch [Optionen] [<seit> | <Revisionsbereich>]"
+msgstr "git format-patch [Optionen] [<seit> | <Commitbereich>]"
 
-#: builtin/log.c:1009
+#: builtin/log.c:1040
 msgid "Two output directories?"
 msgstr "Zwei Ausgabeverzeichnisse?"
 
-#: builtin/log.c:1108
+#: builtin/log.c:1155
 msgid "use [PATCH n/m] even with a single patch"
 msgstr "verwendet [PATCH n/m] auch mit einzelnem Patch"
 
-#: builtin/log.c:1111
+#: builtin/log.c:1158
 msgid "use [PATCH] even with multiple patches"
 msgstr "verwendet [PATCH] auch mit mehreren Patches"
 
-#: builtin/log.c:1115
+#: builtin/log.c:1162
 msgid "print patches to standard out"
 msgstr "Ausgabe der Patches in Standard-Ausgabe"
 
-#: builtin/log.c:1117
+#: builtin/log.c:1164
 msgid "generate a cover letter"
 msgstr "erzeugt ein Deckblatt"
 
-#: builtin/log.c:1119
+#: builtin/log.c:1166
 msgid "use simple number sequence for output file names"
 msgstr "verwendet einfache Nummernfolge für die Namen der Ausgabedateien"
 
-#: builtin/log.c:1120
+#: builtin/log.c:1167
 msgid "sfx"
 msgstr "Dateiendung"
 
-#: builtin/log.c:1121
+#: builtin/log.c:1168
 msgid "use <sfx> instead of '.patch'"
 msgstr "verwendet <Dateiendung> anstatt '.patch'"
 
-#: builtin/log.c:1123
+#: builtin/log.c:1170
 msgid "start numbering patches at <n> instead of 1"
 msgstr "beginnt die Nummerierung der Patches bei <n> anstatt bei 1"
 
-#: builtin/log.c:1125
+#: builtin/log.c:1172
 msgid "mark the series as Nth re-roll"
 msgstr "kennzeichnet die Serie als n-te Fassung"
 
-#: builtin/log.c:1127
+#: builtin/log.c:1174
 msgid "Use [<prefix>] instead of [PATCH]"
 msgstr "verwendet [<Prefix>] anstatt [PATCH]"
 
-#: builtin/log.c:1130
+#: builtin/log.c:1177
 msgid "store resulting files in <dir>"
 msgstr "speichert erzeugte Dateien in <Verzeichnis>"
 
-#: builtin/log.c:1133
+#: builtin/log.c:1180
 msgid "don't strip/add [PATCH]"
 msgstr "[PATCH] wird nicht entfernt/hinzugefügt"
 
-#: builtin/log.c:1136
+#: builtin/log.c:1183
 msgid "don't output binary diffs"
 msgstr "gibt keine binären Unterschiede aus"
 
-#: builtin/log.c:1138
+#: builtin/log.c:1185
 msgid "don't include a patch matching a commit upstream"
 msgstr ""
-"schließt keine Patches ein, die einer Version im Übernahmezweig entsprechen"
+"schließt keine Patches ein, die einem Commit im Upstream-Branch entsprechen"
 
-#: builtin/log.c:1140
+#: builtin/log.c:1187
 msgid "show patch format instead of default (patch + stat)"
 msgstr "zeigt Patchformat anstatt des Standards (Patch + Zusammenfassung)"
 
-#: builtin/log.c:1142
+#: builtin/log.c:1189
 msgid "Messaging"
 msgstr "Email-Einstellungen"
 
-#: builtin/log.c:1143
+#: builtin/log.c:1190
 msgid "header"
 msgstr "Header"
 
-#: builtin/log.c:1144
+#: builtin/log.c:1191
 msgid "add email header"
 msgstr "fügt Email-Header hinzu"
 
-#: builtin/log.c:1145 builtin/log.c:1147
+#: builtin/log.c:1192 builtin/log.c:1194
 msgid "email"
 msgstr "Email"
 
-#: builtin/log.c:1145
+#: builtin/log.c:1192
 msgid "add To: header"
 msgstr "fügt  \"To:\"-Header hinzu"
 
-#: builtin/log.c:1147
+#: builtin/log.c:1194
 msgid "add Cc: header"
 msgstr "fügt \"Cc:\"-Header hinzu"
 
-#: builtin/log.c:1149
+#: builtin/log.c:1196
+msgid "ident"
+msgstr "Ident"
+
+#: builtin/log.c:1197
+msgid "set From address to <ident> (or committer ident if absent)"
+msgstr ""
+"setzt \"From\"-Adresse auf <Ident> (oder Ident des Commit-Erstellers,wenn "
+"fehlend)"
+
+#: builtin/log.c:1199
 msgid "message-id"
 msgstr "message-id"
 
-#: builtin/log.c:1150
+#: builtin/log.c:1200
 msgid "make first mail a reply to <message-id>"
 msgstr "macht aus erster Email eine Antwort zu <message-id>"
 
-#: builtin/log.c:1151 builtin/log.c:1154
+#: builtin/log.c:1201 builtin/log.c:1204
 msgid "boundary"
 msgstr "Grenze"
 
-#: builtin/log.c:1152
+#: builtin/log.c:1202
 msgid "attach the patch"
 msgstr "hängt einen Patch an"
 
-#: builtin/log.c:1155
+#: builtin/log.c:1205
 msgid "inline the patch"
 msgstr "fügt den Patch direkt in die Nachricht ein"
 
-#: builtin/log.c:1159
+#: builtin/log.c:1209
 msgid "enable message threading, styles: shallow, deep"
 msgstr "aktiviert Nachrichtenverkettung, Stile: shallow, deep"
 
-#: builtin/log.c:1161
+#: builtin/log.c:1211
 msgid "signature"
 msgstr "Signatur"
 
-#: builtin/log.c:1162
+#: builtin/log.c:1212
 msgid "add a signature"
 msgstr "fügt eine Signatur hinzu"
 
-#: builtin/log.c:1164
+#: builtin/log.c:1214
 msgid "don't print the patch filenames"
 msgstr "zeigt keine Dateinamen der Patches"
 
-#: builtin/log.c:1248
+#: builtin/log.c:1288
+#, c-format
+msgid "invalid ident line: %s"
+msgstr "Ungültige Identifikationszeile: %s"
+
+#: builtin/log.c:1303
 msgid "-n and -k are mutually exclusive."
 msgstr "Die Optionen -n und -k schließen sich gegenseitig aus."
 
-#: builtin/log.c:1250
+#: builtin/log.c:1305
 msgid "--subject-prefix and -k are mutually exclusive."
 msgstr "Die Optionen --subject-prefix und -k schließen sich gegenseitig aus."
 
-#: builtin/log.c:1258
+#: builtin/log.c:1313
 msgid "--name-only does not make sense"
 msgstr "Die Option --name-only kann nicht verwendet werden."
 
-#: builtin/log.c:1260
+#: builtin/log.c:1315
 msgid "--name-status does not make sense"
 msgstr "Die Option --name-status kann nicht verwendet werden."
 
-#: builtin/log.c:1262
+#: builtin/log.c:1317
 msgid "--check does not make sense"
 msgstr "Die Option --check kann nicht verwendet werden."
 
-#: builtin/log.c:1285
+#: builtin/log.c:1340
 msgid "standard output, or directory, which one?"
 msgstr "Standard-Ausgabe oder Verzeichnis, welches von beidem?"
 
-#: builtin/log.c:1287
+#: builtin/log.c:1342
 #, c-format
 msgid "Could not create directory '%s'"
 msgstr "Konnte Verzeichnis '%s' nicht erstellen."
 
-#: builtin/log.c:1435
+#: builtin/log.c:1490
 msgid "Failed to create output files"
 msgstr "Fehler beim Erstellen der Ausgabedateien."
 
-#: builtin/log.c:1484
+#: builtin/log.c:1539
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
-msgstr "git cherry [-v] [<Übernahmezweig> [<Arbeitszweig> [<Limit>]]]"
+msgstr "git cherry [-v] [<Upstream> [<Branch> [<Limit>]]]"
 
-#: builtin/log.c:1539
+#: builtin/log.c:1594
 #, c-format
 msgid ""
 "Could not find a tracked remote branch, please specify <upstream> manually.\n"
 msgstr ""
-"Konnte gefolgten, externen Zweig nicht finden, bitte geben Sie <upstream> "
+"Konnte gefolgten Remote-Branch nicht finden, bitte geben Sie <Upstream> "
 "manuell an.\n"
 
-#: builtin/log.c:1552 builtin/log.c:1554 builtin/log.c:1566
+#: builtin/log.c:1607 builtin/log.c:1609 builtin/log.c:1621
 #, c-format
 msgid "Unknown commit %s"
-msgstr "Unbekannte Version %s"
+msgstr "Unbekannter Commit %s"
 
-#: builtin/ls-files.c:402
+#: builtin/ls-files.c:408
 msgid "git ls-files [options] [<file>...]"
 msgstr "git ls-files [Optionen] [<Datei>...]"
 
-#: builtin/ls-files.c:459
+#: builtin/ls-files.c:465
 msgid "identify the file status with tags"
-msgstr "zeigt den Dateistatus mit Markierungen"
+msgstr "zeigt den Dateistatus mit Tags"
 
-#: builtin/ls-files.c:461
+#: builtin/ls-files.c:467
 msgid "use lowercase letters for 'assume unchanged' files"
 msgstr ""
 "verwendet Kleinbuchstaben für Dateien mit 'assume unchanged' Markierung"
 
-#: builtin/ls-files.c:463
+#: builtin/ls-files.c:469
 msgid "show cached files in the output (default)"
 msgstr "zeigt zwischengespeicherten Dateien in der Ausgabe an (Standard)"
 
-#: builtin/ls-files.c:465
+#: builtin/ls-files.c:471
 msgid "show deleted files in the output"
 msgstr "zeigt entfernte Dateien in der Ausgabe an"
 
-#: builtin/ls-files.c:467
+#: builtin/ls-files.c:473
 msgid "show modified files in the output"
 msgstr "zeigt geänderte Dateien in der Ausgabe an"
 
-#: builtin/ls-files.c:469
+#: builtin/ls-files.c:475
 msgid "show other files in the output"
 msgstr "zeigt sonstige Dateien in der Ausgabe an"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:477
 msgid "show ignored files in the output"
 msgstr "zeigt ignorierte Dateien in der Ausgabe an"
 
-#: builtin/ls-files.c:474
+#: builtin/ls-files.c:480
 msgid "show staged contents' object name in the output"
-msgstr "zeigt Objektnamen von Inhalten in der Bereitstellung in der Ausgabe an"
+msgstr ""
+"zeigt Objektnamen von Inhalten, die zum Commit vorgemerkt sind, in der "
+"Ausgabe an"
 
-#: builtin/ls-files.c:476
+#: builtin/ls-files.c:482
 msgid "show files on the filesystem that need to be removed"
 msgstr "zeigt Dateien im Dateisystem, die gelöscht werden müssen, an"
 
-#: builtin/ls-files.c:478
+#: builtin/ls-files.c:484
 msgid "show 'other' directories' name only"
 msgstr "zeigt nur Namen von 'sonstigen' Verzeichnissen an"
 
-#: builtin/ls-files.c:481
+#: builtin/ls-files.c:487
 msgid "don't show empty directories"
 msgstr "zeigt keine leeren Verzeichnisse an"
 
-#: builtin/ls-files.c:484
+#: builtin/ls-files.c:490
 msgid "show unmerged files in the output"
 msgstr "zeigt nicht zusammengeführte Dateien in der Ausgabe an"
 
-#: builtin/ls-files.c:486
+#: builtin/ls-files.c:492
 msgid "show resolve-undo information"
 msgstr "zeigt 'resolve-undo' Informationen an"
 
-#: builtin/ls-files.c:488
+#: builtin/ls-files.c:494
 msgid "skip files matching pattern"
 msgstr "lässt Dateien aus, die einem Muster entsprechen"
 
-#: builtin/ls-files.c:491
+#: builtin/ls-files.c:497
 msgid "exclude patterns are read from <file>"
 msgstr "schließt Muster, gelesen von <Datei>, aus"
 
-#: builtin/ls-files.c:494
+#: builtin/ls-files.c:500
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "liest zusätzliche pro-Verzeichnis Auschlussmuster aus <Datei>"
 
-#: builtin/ls-files.c:496
+#: builtin/ls-files.c:502
 msgid "add the standard git exclusions"
 msgstr "fügt die standardmäßigen Git-Ausschlüsse hinzu"
 
-#: builtin/ls-files.c:499
+#: builtin/ls-files.c:505
 msgid "make the output relative to the project top directory"
 msgstr "Ausgabe relativ zum Projektverzeichnis"
 
-#: builtin/ls-files.c:502
+#: builtin/ls-files.c:508
 msgid "if any <file> is not in the index, treat this as an error"
 msgstr ""
-"behandle es als Fehler, wenn sich eine <Datei> nicht in der Bereitstellung "
+"behandle es als Fehler, wenn sich eine <Datei> nicht in der Staging-Area "
 "befindet"
 
-#: builtin/ls-files.c:503
+#: builtin/ls-files.c:509
 msgid "tree-ish"
-msgstr "Versionsreferenz"
+msgstr "Commit-Referenz"
 
-#: builtin/ls-files.c:504
+#: builtin/ls-files.c:510
 msgid "pretend that paths removed since <tree-ish> are still present"
 msgstr ""
-"gibt vor, dass Pfade, die seit <Versionsreferenz> gelöscht wurden, immer "
-"noch vorhanden sind"
+"gibt vor, dass Pfade, die seit <Commit-Referenz> gelöscht wurden, immer noch "
+"vorhanden sind"
 
-#: builtin/ls-files.c:506
+#: builtin/ls-files.c:512
 msgid "show debugging data"
 msgstr "zeigt Ausgaben zur Fehlersuche an"
 
 #: builtin/ls-tree.c:27
 msgid "git ls-tree [<options>] <tree-ish> [<path>...]"
-msgstr "git ls-tree [<Optionen>] <Versionsreferenz> [<Pfad>...]"
+msgstr "git ls-tree [<Optionen>] <Commit-Referenz> [<Pfad>...]"
 
 #: builtin/ls-tree.c:125
 msgid "only show trees"
-msgstr "zeigt nur Bäume an"
+msgstr "zeigt nur Verzeichnisse an"
 
 #: builtin/ls-tree.c:127
 msgid "recurse into subtrees"
-msgstr "führt Rekursion in Teilbäumen durch"
+msgstr "führt Rekursion in Unterverzeichnissen durch"
 
 #: builtin/ls-tree.c:129
 msgid "show trees when recursing"
-msgstr "zeigt Bäume bei Rekursion an"
+msgstr "zeigt Verzeichnisse bei Rekursion an"
 
 #: builtin/ls-tree.c:132
 msgid "terminate entries with NUL byte"
@@ -6290,195 +6542,187 @@ msgstr "verwendet vollständige Pfadnamen"
 #: builtin/ls-tree.c:142
 msgid "list entire tree; not just current directory (implies --full-name)"
 msgstr ""
-"listet den gesamten Baum auf; nicht nur das aktuelle Verzeichnis (impliziert "
-"--full-name)"
+"listet das gesamte Verzeichnis auf; nicht nur das aktuelle Verzeichnis "
+"(impliziert --full-name)"
 
 #: builtin/merge.c:43
 msgid "git merge [options] [<commit>...]"
-msgstr "git merge [Optionen] [<Version>...]"
+msgstr "git merge [Optionen] [<Commit>...]"
 
 #: builtin/merge.c:44
 msgid "git merge [options] <msg> HEAD <commit>"
-msgstr "git merge [Optionen] <Beschreibung> HEAD <Version>"
+msgstr "git merge [Optionen] <Beschreibung> HEAD <Commit>"
 
 #: builtin/merge.c:45
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:90
+#: builtin/merge.c:98
 msgid "switch `m' requires a value"
 msgstr "Schalter 'm' erfordert einen Wert."
 
-#: builtin/merge.c:127
+#: builtin/merge.c:135
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
-msgstr "Konnte Zusammenführungsstrategie '%s' nicht finden.\n"
+msgstr "Konnte Merge-Strategie '%s' nicht finden.\n"
 
-#: builtin/merge.c:128
+#: builtin/merge.c:136
 #, c-format
 msgid "Available strategies are:"
 msgstr "Verfügbare Strategien sind:"
 
-#: builtin/merge.c:133
+#: builtin/merge.c:141
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Verfügbare benutzerdefinierte Strategien sind:"
 
-#: builtin/merge.c:183
+#: builtin/merge.c:198
 msgid "do not show a diffstat at the end of the merge"
-msgstr ""
-"zeigt keine Zusammenfassung der Unterschiede am Schluss der Zusammenführung "
-"an"
+msgstr "zeigt keine Zusammenfassung der Unterschiede am Schluss des Merges an"
 
-#: builtin/merge.c:186
+#: builtin/merge.c:201
 msgid "show a diffstat at the end of the merge"
-msgstr ""
-"zeigt eine Zusammenfassung der Unterschiede am Schluss der Zusammenführung an"
+msgstr "zeigt eine Zusammenfassung der Unterschiede am Schluss des Merges an"
 
-#: builtin/merge.c:187
+#: builtin/merge.c:202
 msgid "(synonym to --stat)"
 msgstr "(Synonym für --stat)"
 
-#: builtin/merge.c:189
+#: builtin/merge.c:204
 msgid "add (at most <n>) entries from shortlog to merge commit message"
 msgstr ""
-"fügt (höchstens <n>) Einträge von \"shortlog\" zur Beschreibung de"
-"Zusammenführung hinzu"
+"fügt (höchstens <n>) Einträge von \"shortlog\" zur Beschreibung des Merge-"
+"Commits hinzu"
 
-#: builtin/merge.c:192
+#: builtin/merge.c:207
 msgid "create a single commit instead of doing a merge"
-msgstr "erzeugt eine einzelne Version anstatt einer Zusammenführung"
+msgstr "erzeugt einen einzelnen Commit anstatt eines Merges"
 
-#: builtin/merge.c:194
+#: builtin/merge.c:209
 msgid "perform a commit if the merge succeeds (default)"
-msgstr ""
-"führt eine Eintragung durch, wenn die Zusammenführung erfolgreich war "
-"(Standard)"
+msgstr "führt einen Commit durch, wenn der Merge erfolgreich war (Standard)"
 
-#: builtin/merge.c:196
+#: builtin/merge.c:211
 msgid "edit message before committing"
-msgstr "Bearbeitung der Versionsbeschreibung vor der Eintragung"
+msgstr "Bearbeitung der Beschreibung vor dem Commit"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:212
 msgid "allow fast-forward (default)"
 msgstr "erlaubt Vorspulen (Standard)"
 
-#: builtin/merge.c:200
+#: builtin/merge.c:214
 msgid "abort if fast-forward is not possible"
 msgstr "bricht ab, wenn kein Vorspulen möglich ist"
 
-#: builtin/merge.c:203
+#: builtin/merge.c:218
 msgid "Verify that the named commit has a valid GPG signature"
-msgstr "überprüft die genannte Version auf eine gültige GPG-Signatur"
+msgstr "überprüft den genannten Commit auf eine gültige GPG-Signatur"
 
-#: builtin/merge.c:204 builtin/notes.c:866 builtin/revert.c:112
+#: builtin/merge.c:219 builtin/notes.c:738 builtin/revert.c:114
 msgid "strategy"
 msgstr "Strategie"
 
-#: builtin/merge.c:205
+#: builtin/merge.c:220
 msgid "merge strategy to use"
-msgstr "zu verwendende Zusammenführungsstrategie"
+msgstr "zu verwendende Merge-Strategie"
 
-#: builtin/merge.c:206
+#: builtin/merge.c:221
 msgid "option=value"
 msgstr "Option=Wert"
 
-#: builtin/merge.c:207
+#: builtin/merge.c:222
 msgid "option for selected merge strategy"
-msgstr "Option für ausgewählte Zusammenführungsstrategie"
+msgstr "Option für ausgewählte Merge-Strategie"
 
-#: builtin/merge.c:209
+#: builtin/merge.c:224
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr ""
-"führt Versionsbeschreibung zusammen (für eine Zusammenführung, die kein "
-"Vorspulen war)"
+"führt Commit-Beschreibung zusammen (für einen Merge, der kein Vorspulen war)"
 
-#: builtin/merge.c:213
+#: builtin/merge.c:228
 msgid "abort the current in-progress merge"
-msgstr "bricht die sich im Gange befindliche Zusammenführung ab"
+msgstr "bricht den sich im Gange befindlichen Merge ab"
 
-#: builtin/merge.c:242
+#: builtin/merge.c:257
 msgid "could not run stash."
 msgstr "Konnte \"stash\" nicht ausführen."
 
-#: builtin/merge.c:247
+#: builtin/merge.c:262
 msgid "stash failed"
 msgstr "\"stash\" fehlgeschlagen"
 
-#: builtin/merge.c:252
+#: builtin/merge.c:267
 #, c-format
 msgid "not a valid object: %s"
 msgstr "kein gültiges Objekt: %s"
 
-#: builtin/merge.c:271 builtin/merge.c:288
+#: builtin/merge.c:286 builtin/merge.c:303
 msgid "read-tree failed"
 msgstr "read-tree fehlgeschlagen"
 
-#: builtin/merge.c:318
+#: builtin/merge.c:333
 msgid " (nothing to squash)"
 msgstr " (nichts zu quetschen)"
 
-#: builtin/merge.c:331
+#: builtin/merge.c:346
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
-msgstr "Quetsche Version -- Zweigspitze (HEAD) wird nicht aktualisiert\n"
+msgstr "Quetsche Commit -- HEAD wird nicht aktualisiert\n"
 
-#: builtin/merge.c:363
+#: builtin/merge.c:378
 msgid "Writing SQUASH_MSG"
 msgstr "Schreibe SQUASH_MSG"
 
-#: builtin/merge.c:365
+#: builtin/merge.c:380
 msgid "Finishing SQUASH_MSG"
 msgstr "Schließe SQUASH_MSG ab"
 
-#: builtin/merge.c:388
+#: builtin/merge.c:403
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
-msgstr ""
-"Keine Zusammenführungsbeschreibung -- Zweigspitze (HEAD) wird nicht "
-"aktualisiert\n"
+msgstr "Keine Merge-Commit-Beschreibung -- HEAD wird nicht aktualisiert\n"
 
-#: builtin/merge.c:438
+#: builtin/merge.c:453
 #, c-format
 msgid "'%s' does not point to a commit"
-msgstr "'%s' zeigt auf keine Version"
+msgstr "'%s' zeigt auf keinen Commit"
 
-#: builtin/merge.c:550
+#: builtin/merge.c:565
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Ungültiger branch.%s.mergeoptions String: %s"
 
-#: builtin/merge.c:643
+#: builtin/merge.c:657
 msgid "git write-tree failed to write a tree"
-msgstr "\"git write-tree\" schlug beim Schreiben eines Baumes fehl"
+msgstr "\"git write-tree\" schlug beim Schreiben eines \"Tree\"-Objektes fehl"
 
-#: builtin/merge.c:671
+#: builtin/merge.c:685
 msgid "Not handling anything other than two heads merge."
-msgstr "Es wird nur die Zusammenführung von zwei Zweigen behandelt."
+msgstr "Es wird nur der Merge von zwei Branches behandelt."
 
-#: builtin/merge.c:685
+#: builtin/merge.c:699
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Unbekannte Option für merge-recursive: -X%s"
 
-#: builtin/merge.c:699
+#: builtin/merge.c:713
 #, c-format
 msgid "unable to write %s"
 msgstr "konnte %s nicht schreiben"
 
-#: builtin/merge.c:788
+#: builtin/merge.c:802
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "konnte nicht von '%s' lesen"
 
-#: builtin/merge.c:797
+#: builtin/merge.c:811
 #, c-format
 msgid "Not committing merge; use 'git commit' to complete the merge.\n"
 msgstr ""
-"Zusammenführung wurde nicht eingetragen; benutzen Sie 'git commit' um die "
-"Zusammenführung abzuschließen.\n"
+"Merge wurde nicht committet; benutzen Sie 'git commit' um den Merge "
+"abzuschließen.\n"
 
-#: builtin/merge.c:803
+#: builtin/merge.c:817
 #, c-format
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
@@ -6487,219 +6731,212 @@ msgid ""
 "Lines starting with '%c' will be ignored, and an empty message aborts\n"
 "the commit.\n"
 msgstr ""
-"Bitte geben Sie eine Versionsbeschreibung ein um zu erklären, warum diese "
-"Zusammenführung erforderlich ist,\n"
-"insbesondere wenn es einen aktualisierten, externen Zweig mit einem Thema-"
-"Zweig zusammenführt.\n"
+"Bitte geben Sie eine Commit-Beschreibung ein um zu erklären, warum dieser\n"
+"Merge erforderlich ist, insbesondere wenn es einen aktualisierten\n"
+"Upstream-Branch mit einem Thema-Branch zusammenführt.\n"
 "\n"
-"Zeilen beginnend mit '%c' werden ignoriert, und eine leere Beschreibung "
-"bricht die Eintragung ab.\n"
+"Zeilen beginnend mit '%c' werden ignoriert, und eine leere Beschreibung\n"
+"bricht den Commit ab.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:841
 msgid "Empty commit message."
-msgstr "Leere Versionsbeschreibung"
+msgstr "Leere Commit-Beschreibung"
 
-#: builtin/merge.c:839
+#: builtin/merge.c:853
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Wunderbar.\n"
 
-#: builtin/merge.c:904
+#: builtin/merge.c:918
 #, c-format
 msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
 msgstr ""
-"Automatische Zusammenführung fehlgeschlagen; beheben Sie die Konflikte und "
-"tragen Sie dann das Ergebnis ein.\n"
+"Automatischer Merge fehlgeschlagen; beheben Sie die Konflikte und committen "
+"Sie dann das Ergebnis.\n"
 
-#: builtin/merge.c:920
+#: builtin/merge.c:934
 #, c-format
 msgid "'%s' is not a commit"
-msgstr "'%s' ist keine Version"
+msgstr "'%s' ist kein Commit"
 
-#: builtin/merge.c:961
+#: builtin/merge.c:975
 msgid "No current branch."
-msgstr "Sie befinden sich auf keinem Zweig."
+msgstr "Sie befinden sich auf keinem Branch."
 
-#: builtin/merge.c:963
+#: builtin/merge.c:977
 msgid "No remote for the current branch."
-msgstr "Kein externes Archiv für den aktuellen Zweig."
+msgstr "Kein Remote-Repository für den aktuellen Branch."
 
-#: builtin/merge.c:965
+#: builtin/merge.c:979
 msgid "No default upstream defined for the current branch."
 msgstr ""
-"Es ist kein externes Standard-Projektarchiv für den aktuellen Zweig "
-"definiert."
-
-#: builtin/merge.c:970
-#, c-format
-msgid "No remote tracking branch for %s from %s"
-msgstr "Kein externer Übernahmezweig für %s von %s"
+"Es ist kein Standard-Upstream-Branch für den aktuellen Branch definiert."
 
-#: builtin/merge.c:1057 builtin/merge.c:1214
+#: builtin/merge.c:984
 #, c-format
-msgid "%s - not something we can merge"
-msgstr "%s - nichts was wir zusammenführen können"
+msgid "No remote-tracking branch for %s from %s"
+msgstr "Kein Remote-Tracking-Branch für %s von %s"
 
-#: builtin/merge.c:1125
+#: builtin/merge.c:1140
 msgid "There is no merge to abort (MERGE_HEAD missing)."
-msgstr "Es gibt keine Zusammenführung zum Abbrechen (vermisse MERGE_HEAD)"
+msgstr "Es gibt keinen Merge zum Abbrechen (vermisse MERGE_HEAD)"
 
-#: builtin/merge.c:1141 git-pull.sh:31
+#: builtin/merge.c:1156 git-pull.sh:31
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you can merge."
 msgstr ""
-"Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert).\n"
-"Bitte tragen Sie Ihre Änderungen ein, bevor Sie zusammenführen können."
+"Sie haben Ihren Merge nicht abgeschlossen (MERGE_HEAD existiert).\n"
+"Bitte committen Sie Ihre Änderungen, bevor Sie \"merge\" ausführen können."
 
-#: builtin/merge.c:1144 git-pull.sh:34
+#: builtin/merge.c:1159 git-pull.sh:34
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
-msgstr ""
-"Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert)."
+msgstr "Sie haben Ihren Merge nicht abgeschlossen (MERGE_HEAD existiert)."
 
-#: builtin/merge.c:1148
+#: builtin/merge.c:1163
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you can merge."
 msgstr ""
 "Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n"
-"Bitte tragen Sie Ihre Änderungen ein, bevor Sie zusammenführen können."
+"Bitte committen Sie Ihre Änderungen, bevor Sie \"merge\" ausführen können."
 
-#: builtin/merge.c:1151
+#: builtin/merge.c:1166
 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:1160
+#: builtin/merge.c:1175
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Sie können --squash nicht mit --no-ff kombinieren."
 
-#: builtin/merge.c:1165
-msgid "You cannot combine --no-ff with --ff-only."
-msgstr "Sie können --no-ff nicht mit --ff--only kombinieren."
-
-#: builtin/merge.c:1172
+#: builtin/merge.c:1184
 msgid "No commit specified and merge.defaultToUpstream not set."
-msgstr "Keine Version angegeben und merge.defaultToUpstream ist nicht gesetzt."
+msgstr "Kein Commit angegeben und merge.defaultToUpstream ist nicht gesetzt."
 
-#: builtin/merge.c:1204
+#: builtin/merge.c:1216
 msgid "Can merge only exactly one commit into empty head"
-msgstr "Kann nur exakt eine Version in einem leeren Zweig zusammenführen."
+msgstr "Kann nur exakt einen Commit in einem leeren Branch zusammenführen."
 
-#: builtin/merge.c:1207
+#: builtin/merge.c:1219
 msgid "Squash commit into empty head not supported yet"
-msgstr "Bin auf einem Zweig, der noch geboren wird; kann nicht quetschen."
+msgstr ""
+"Bin auf einem Commit, der noch geboren wird; kann \"squash\" nicht ausführen."
 
-#: builtin/merge.c:1209
+#: builtin/merge.c:1221
 msgid "Non-fast-forward commit does not make sense into an empty head"
 msgstr ""
-"Nicht vorzuspulende Version kann nicht in einem leeren Zweig verwendet "
+"Nicht vorzuspulender Commit kann nicht in einem leeren Branch verwendet "
 "werden."
 
-#: builtin/merge.c:1265
+#: builtin/merge.c:1226
+#, c-format
+msgid "%s - not something we can merge"
+msgstr "%s - nichts was wir zusammenführen können"
+
+#: builtin/merge.c:1277
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
-"Version %s hat eine nicht vertrauenswürdige GPG-Signatur, angeblich von %s."
+"Commit %s hat eine nicht vertrauenswürdige GPG-Signatur, angeblich von %s."
 
-#: builtin/merge.c:1268
+#: builtin/merge.c:1280
 #, c-format
 msgid "Commit %s has a bad GPG signature allegedly by %s."
-msgstr "Version %s hat eine ungültige GPG-Signatur, angeblich von %s."
+msgstr "Commit %s hat eine ungültige GPG-Signatur, angeblich von %s."
 
 #. 'N'
-#: builtin/merge.c:1271
+#: builtin/merge.c:1283
 #, c-format
 msgid "Commit %s does not have a GPG signature."
-msgstr "Version %s hat keine GPG-Signatur."
+msgstr "Commit %s hat keine GPG-Signatur."
 
-#: builtin/merge.c:1274
+#: builtin/merge.c:1286
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
-msgstr "Version %s hat eine gültige GPG-Signatur von %s\n"
+msgstr "Commit %s hat eine gültige GPG-Signatur von %s\n"
 
-#: builtin/merge.c:1358
+#: builtin/merge.c:1370
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Aktualisiere %s..%s\n"
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1409
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
-msgstr "Probiere wirklich triviale \"in-index\"-Zusammenführung...\n"
+msgstr "Probiere wirklich trivialen \"in-index\"-Merge...\n"
 
-#: builtin/merge.c:1404
+#: builtin/merge.c:1416
 #, c-format
 msgid "Nope.\n"
 msgstr "Nein.\n"
 
-#: builtin/merge.c:1436
+#: builtin/merge.c:1448
 msgid "Not possible to fast-forward, aborting."
 msgstr "Vorspulen nicht möglich, breche ab."
 
-#: builtin/merge.c:1459 builtin/merge.c:1538
+#: builtin/merge.c:1471 builtin/merge.c:1550
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
-msgstr "Rücklauf des Zweiges bis zum Ursprung...\n"
+msgstr "Rücklauf des Verzeichnisses bis zum Ursprung...\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1475
 #, c-format
 msgid "Trying merge strategy %s...\n"
-msgstr "Probiere Zusammenführungsstrategie %s...\n"
+msgstr "Probiere Merge-Strategie %s...\n"
 
-#: builtin/merge.c:1529
+#: builtin/merge.c:1541
 #, c-format
 msgid "No merge strategy handled the merge.\n"
-msgstr "Keine Zusammenführungsstrategie behandelt diese Zusammenführung.\n"
+msgstr "Keine Merge-Strategie behandelt diesen Merge.\n"
 
-#: builtin/merge.c:1531
+#: builtin/merge.c:1543
 #, c-format
 msgid "Merge with strategy %s failed.\n"
-msgstr "Zusammenführung mit Strategie %s fehlgeschlagen.\n"
+msgstr "Merge mit Strategie %s fehlgeschlagen.\n"
 
-#: builtin/merge.c:1540
+#: builtin/merge.c:1552
 #, 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:1552
+#: builtin/merge.c:1564
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
-"Automatische Zusammenführung abgeschlossen; halte, wie gewünscht, vor der "
-"Eintragung an\n"
+"Automatischer Merge abgeschlossen; halte, wie gewünscht, vor dem Commit an\n"
 
 #: builtin/merge-base.c:26
 msgid "git merge-base [-a|--all] <commit> <commit>..."
-msgstr "git merge-base [-a|--all] <Version> <Version>..."
+msgstr "git merge-base [-a|--all] <Commit> <Commit>..."
 
 #: builtin/merge-base.c:27
 msgid "git merge-base [-a|--all] --octopus <commit>..."
-msgstr "git merge-base [-a|--all] --octopus <Version>..."
+msgstr "git merge-base [-a|--all] --octopus <Commit>..."
 
 #: builtin/merge-base.c:28
 msgid "git merge-base --independent <commit>..."
-msgstr "git merge-base --independent <Version>..."
+msgstr "git merge-base --independent <Commit>..."
 
 #: builtin/merge-base.c:29
 msgid "git merge-base --is-ancestor <commit> <commit>"
-msgstr "git merge-base --is-ancestor <Version> <Version>"
+msgstr "git merge-base --is-ancestor <Commit> <Commit>"
 
 #: builtin/merge-base.c:98
 msgid "output all common ancestors"
-msgstr "Ausgabe aller gemeinsamen Vorfahren"
+msgstr "Ausgabe aller gemeinsamen Vorgänger-Commits"
 
 #: builtin/merge-base.c:99
 msgid "find ancestors for a single n-way merge"
-msgstr "findet Vorfahren für eine einzelne n-Wege-Zusammenführung"
+msgstr "findet Vorgänger-Commits für einen einzelnen n-Wege-Merge"
 
 #: builtin/merge-base.c:100
 msgid "list revs not reachable from others"
-msgstr "listet Versionen auf, die nicht durch Andere erreichbar sind"
+msgstr "listet Commits auf, die nicht durch Andere erreichbar sind"
 
 #: builtin/merge-base.c:102
 msgid "is the first one ancestor of the other?"
-msgstr "ist der Erste ein Vorfahre von dem Anderen?"
+msgstr "ist der Erste ein Vorgänger-Commit von dem Anderen?"
 
 #: builtin/merge-file.c:8
 msgid ""
@@ -6715,7 +6952,7 @@ msgstr "sendet Ergebnisse zur Standard-Ausgabe"
 
 #: builtin/merge-file.c:34
 msgid "use a diff3 based merge"
-msgstr "verwendet eine diff3 basierte Zusammenführung"
+msgstr "verwendet einen diff3 basierten Merge"
 
 #: builtin/merge-file.c:35
 msgid "for conflicts, use our version"
@@ -6755,7 +6992,7 @@ msgstr "erlaubt fehlende Objekte"
 
 #: builtin/mktree.c:155
 msgid "allow creation of more than one tree"
-msgstr "erlaubt die Erstellung von mehr als einem Baum"
+msgstr "erlaubt die Erstellung von mehr als einem \"Tree\"-Objekt"
 
 #: builtin/mv.c:14
 msgid "git mv [options] <source>... <destination>"
@@ -6789,7 +7026,7 @@ msgstr "kann Verzeichnis nicht über Datei verschieben"
 #: builtin/mv.c:128
 #, c-format
 msgid "Huh? %.*s is in index?"
-msgstr "Huh? %.*s ist in der Bereitstellung?"
+msgstr "Huh? %.*s ist zum Commit vorgemerkt?"
 
 #: builtin/mv.c:140
 msgid "source directory is empty"
@@ -6831,47 +7068,51 @@ msgstr "Benenne %s nach %s um\n"
 msgid "renaming '%s' failed"
 msgstr "Umbenennung von '%s' fehlgeschlagen"
 
-#: builtin/name-rev.c:175
+#: builtin/name-rev.c:259
 msgid "git name-rev [options] <commit>..."
-msgstr "git name-rev [Optionen] <Version>..."
+msgstr "git name-rev [Optionen] <Commit>..."
 
-#: builtin/name-rev.c:176
+#: builtin/name-rev.c:260
 msgid "git name-rev [options] --all"
 msgstr "git name-rev [Optionen] --all"
 
-#: builtin/name-rev.c:177
+#: builtin/name-rev.c:261
 msgid "git name-rev [options] --stdin"
 msgstr "git name-rev [Optionen] --stdin"
 
-#: builtin/name-rev.c:229
+#: builtin/name-rev.c:313
 msgid "print only names (no SHA-1)"
 msgstr "zeigt nur Namen an (keine SHA-1)"
 
-#: builtin/name-rev.c:230
+#: builtin/name-rev.c:314
 msgid "only use tags to name the commits"
-msgstr "verwendet nur Markierungen um die Versionen zu benennen"
+msgstr "verwendet nur Tags um die Commits zu benennen"
 
-#: builtin/name-rev.c:232
+#: builtin/name-rev.c:316
 msgid "only use refs matching <pattern>"
 msgstr "verwendet nur Referenzen die <Muster> entsprechen"
 
-#: builtin/name-rev.c:234
+#: builtin/name-rev.c:318
 msgid "list all commits reachable from all refs"
-msgstr "listet alle Versionen auf, die von allen Referenzen erreichbar sind"
+msgstr "listet alle Commits auf, die von allen Referenzen erreichbar sind"
 
-#: builtin/name-rev.c:235
+#: builtin/name-rev.c:319
 msgid "read from stdin"
 msgstr "liest von der Standard-Eingabe"
 
-#: builtin/name-rev.c:236
+#: builtin/name-rev.c:320
 msgid "allow to print `undefined` names"
 msgstr "erlaubt Ausgabe von `undefinierten` Namen"
 
-#: builtin/notes.c:26
+#: builtin/name-rev.c:326
+msgid "dereference tags in the input (internal use)"
+msgstr "dereferenziert Tags in der Eingabe (interne Verwendung)"
+
+#: builtin/notes.c:24
 msgid "git notes [--ref <notes_ref>] [list [<object>]]"
 msgstr "git notes [--ref <Notiz-Referenz>] [list [<Objekt>]]"
 
-#: builtin/notes.c:27
+#: builtin/notes.c:25
 msgid ""
 "git notes [--ref <notes_ref>] add [-f] [-m <msg> | -F <file> | (-c | -C) "
 "<object>] [<object>]"
@@ -6879,12 +7120,12 @@ msgstr ""
 "git notes [--ref <Notiz-Referenz>] add [-f] [-m <Nachricht> | -F <Datei> | (-"
 "c | -C) <Objekt>] [<Objekt>]"
 
-#: builtin/notes.c:28
+#: builtin/notes.c:26
 msgid "git notes [--ref <notes_ref>] copy [-f] <from-object> <to-object>"
 msgstr ""
 "git notes [--ref <Notiz-Referenz>] copy [-f] <von-Objekt> <nach-Objekt>"
 
-#: builtin/notes.c:29
+#: builtin/notes.c:27
 msgid ""
 "git notes [--ref <notes_ref>] append [-m <msg> | -F <file> | (-c | -C) "
 "<object>] [<object>]"
@@ -6892,223 +7133,201 @@ msgstr ""
 "git notes [--ref <Notiz-Referenz>] append [-m <Nachricht> | -F <Datei> | (-c "
 "| -C) <Objekt>] [<Objekt>]"
 
-#: builtin/notes.c:30
+#: builtin/notes.c:28
 msgid "git notes [--ref <notes_ref>] edit [<object>]"
 msgstr "git notes [--ref <Notiz-Referenz>] edit [<Objekt>]"
 
-#: builtin/notes.c:31
+#: builtin/notes.c:29
 msgid "git notes [--ref <notes_ref>] show [<object>]"
 msgstr "git notes [--ref <Notiz-Referenz>] show [<Objekt>]"
 
-#: builtin/notes.c:32
+#: builtin/notes.c:30
 msgid ""
 "git notes [--ref <notes_ref>] merge [-v | -q] [-s <strategy> ] <notes_ref>"
 msgstr ""
 "git notes [--ref <Notiz-Referenz>] merge [-v | -q] [-s <Strategie> ] <Notiz-"
 "Referenz>"
 
-#: builtin/notes.c:33
+#: builtin/notes.c:31
 msgid "git notes merge --commit [-v | -q]"
 msgstr "git notes merge --commit [-v | -q]"
 
-#: builtin/notes.c:34
+#: builtin/notes.c:32
 msgid "git notes merge --abort [-v | -q]"
 msgstr "git notes merge --abort [-v | -q]"
 
-#: builtin/notes.c:35
+#: builtin/notes.c:33
 msgid "git notes [--ref <notes_ref>] remove [<object>...]"
 msgstr "git notes [--ref <Notiz-Referenz>] remove [<Objekt>...]"
 
-#: builtin/notes.c:36
+#: builtin/notes.c:34
 msgid "git notes [--ref <notes_ref>] prune [-n | -v]"
 msgstr "git notes [--ref <Notiz-Referenz>] prune [-n | -v]"
 
-#: builtin/notes.c:37
+#: builtin/notes.c:35
 msgid "git notes [--ref <notes_ref>] get-ref"
 msgstr "git notes [--ref <Notiz-Referenz>] get-ref"
 
-#: builtin/notes.c:42
+#: builtin/notes.c:40
 msgid "git notes [list [<object>]]"
 msgstr "git notes [list [<Objekt>]]"
 
-#: builtin/notes.c:47
+#: builtin/notes.c:45
 msgid "git notes add [<options>] [<object>]"
 msgstr "git notes add [<Optionen>] [<Objekt>]"
 
-#: builtin/notes.c:52
+#: builtin/notes.c:50
 msgid "git notes copy [<options>] <from-object> <to-object>"
 msgstr "git notes copy [<Optionen>] <von-Objekt> <nach-Objekt>"
 
-#: builtin/notes.c:53
+#: builtin/notes.c:51
 msgid "git notes copy --stdin [<from-object> <to-object>]..."
 msgstr "git notes copy --stdin [<von-Objekt> <nach-Objekt>]..."
 
-#: builtin/notes.c:58
+#: builtin/notes.c:56
 msgid "git notes append [<options>] [<object>]"
 msgstr "git notes append [<Optionen>] [<Objekt>]"
 
-#: builtin/notes.c:63
+#: builtin/notes.c:61
 msgid "git notes edit [<object>]"
 msgstr "git notes edit [<Objekt>]"
 
-#: builtin/notes.c:68
+#: builtin/notes.c:66
 msgid "git notes show [<object>]"
 msgstr "git notes show [<Objekt>]"
 
-#: builtin/notes.c:73
+#: builtin/notes.c:71
 msgid "git notes merge [<options>] <notes_ref>"
 msgstr "git notes merge [<Optionen>] <Notiz-Referenz>"
 
-#: builtin/notes.c:74
+#: builtin/notes.c:72
 msgid "git notes merge --commit [<options>]"
 msgstr "git notes merge --commit [<Optionen>]"
 
-#: builtin/notes.c:75
+#: builtin/notes.c:73
 msgid "git notes merge --abort [<options>]"
 msgstr "git notes merge --abort [<Optionen>]"
 
-#: builtin/notes.c:80
+#: builtin/notes.c:78
 msgid "git notes remove [<object>]"
 msgstr "git notes remove [<Objekt>]"
 
-#: builtin/notes.c:85
+#: builtin/notes.c:83
 msgid "git notes prune [<options>]"
 msgstr "git notes prune [<Optionen>]"
 
-#: builtin/notes.c:90
+#: builtin/notes.c:88
 msgid "git notes get-ref"
 msgstr "git notes get-ref"
 
-#: builtin/notes.c:139
+#: builtin/notes.c:137
 #, c-format
 msgid "unable to start 'show' for object '%s'"
 msgstr "konnte 'show' für Objekt '%s' nicht starten"
 
-#: builtin/notes.c:143
+#: builtin/notes.c:141
 msgid "could not read 'show' output"
 msgstr "Konnte Ausgabe von 'show' nicht lesen."
 
-#: builtin/notes.c:151
+#: builtin/notes.c:149
 #, c-format
 msgid "failed to finish 'show' for object '%s'"
 msgstr "konnte 'show' für Objekt '%s' nicht abschließen"
 
-#: builtin/notes.c:169 builtin/tag.c:341
+#: builtin/notes.c:167 builtin/tag.c:341
 #, c-format
 msgid "could not create file '%s'"
 msgstr "konnte Datei '%s' nicht erstellen"
 
-#: builtin/notes.c:188
+#: builtin/notes.c:186
 msgid "Please supply the note contents using either -m or -F option"
 msgstr ""
 "Bitte liefern Sie den Notiz-Inhalt unter Verwendung der Option -m oder -F."
 
-#: builtin/notes.c:209 builtin/notes.c:972
+#: builtin/notes.c:207 builtin/notes.c:844
 #, c-format
 msgid "Removing note for object %s\n"
 msgstr "Entferne Notiz für Objekt %s\n"
 
-#: builtin/notes.c:214
+#: builtin/notes.c:212
 msgid "unable to write note object"
 msgstr "Konnte Notiz-Objekt nicht schreiben"
 
-#: builtin/notes.c:216
+#: builtin/notes.c:214
 #, c-format
 msgid "The note contents has been left in %s"
 msgstr "Die Notiz-Inhalte wurden in %s belassen"
 
-#: builtin/notes.c:250 builtin/tag.c:540
+#: builtin/notes.c:248 builtin/tag.c:540
 #, c-format
 msgid "cannot read '%s'"
 msgstr "kann '%s' nicht lesen"
 
-#: builtin/notes.c:252 builtin/tag.c:543
+#: builtin/notes.c:250 builtin/tag.c:543
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "konnte '%s' nicht öffnen oder lesen"
 
-#: builtin/notes.c:271 builtin/notes.c:444 builtin/notes.c:446
-#: builtin/notes.c:506 builtin/notes.c:560 builtin/notes.c:643
-#: builtin/notes.c:648 builtin/notes.c:723 builtin/notes.c:765
-#: builtin/notes.c:967 builtin/tag.c:556
+#: builtin/notes.c:269 builtin/notes.c:316 builtin/notes.c:318
+#: builtin/notes.c:378 builtin/notes.c:432 builtin/notes.c:515
+#: builtin/notes.c:520 builtin/notes.c:595 builtin/notes.c:637
+#: builtin/notes.c:839 builtin/tag.c:556
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Konnte '%s' nicht als gültige Referenz auflösen."
 
-#: builtin/notes.c:274
+#: builtin/notes.c:272
 #, c-format
 msgid "Failed to read object '%s'."
 msgstr "Fehler beim Lesen des Objektes '%s'."
 
-#: builtin/notes.c:298
-msgid "Cannot commit uninitialized/unreferenced notes tree"
-msgstr "Kann uninitialisierten/unreferenzierten Notiz-Baum nicht eintragen."
-
-#: builtin/notes.c:339
-#, c-format
-msgid "Bad notes.rewriteMode value: '%s'"
-msgstr "Ungültiger notes.rewriteMode Wert: '%s'"
-
-#: builtin/notes.c:349
-#, c-format
-msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
-msgstr ""
-"Umschreiben der Notizen in %s zurückgewiesen (außerhalb von refs/notes/)"
-
-#. TRANSLATORS: The first %s is the name of the
-#. environment variable, the second %s is its value
-#: builtin/notes.c:376
-#, c-format
-msgid "Bad %s value: '%s'"
-msgstr "Ungültiger %s Wert: '%s'"
-
-#: builtin/notes.c:440
+#: builtin/notes.c:312
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Fehlerhafte Eingabezeile: '%s'."
 
-#: builtin/notes.c:455
+#: builtin/notes.c:327
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Fehler beim Kopieren der Notizen von '%s' nach '%s'"
 
-#: builtin/notes.c:499 builtin/notes.c:553 builtin/notes.c:626
-#: builtin/notes.c:638 builtin/notes.c:711 builtin/notes.c:758
-#: builtin/notes.c:1032
+#: builtin/notes.c:371 builtin/notes.c:425 builtin/notes.c:498
+#: builtin/notes.c:510 builtin/notes.c:583 builtin/notes.c:630
+#: builtin/notes.c:904
 msgid "too many parameters"
 msgstr "zu viele Parameter"
 
-#: builtin/notes.c:512 builtin/notes.c:771
+#: builtin/notes.c:384 builtin/notes.c:643
 #, c-format
 msgid "No note found for object %s."
 msgstr "Kein Notiz für Objekt %s gefunden."
 
-#: builtin/notes.c:534 builtin/notes.c:691
+#: builtin/notes.c:406 builtin/notes.c:563
 msgid "note contents as a string"
 msgstr "Notizinhalte als Zeichenkette"
 
-#: builtin/notes.c:537 builtin/notes.c:694
+#: builtin/notes.c:409 builtin/notes.c:566
 msgid "note contents in a file"
 msgstr "Notizinhalte in einer Datei"
 
-#: builtin/notes.c:539 builtin/notes.c:542 builtin/notes.c:696
-#: builtin/notes.c:699 builtin/tag.c:474
+#: builtin/notes.c:411 builtin/notes.c:414 builtin/notes.c:568
+#: builtin/notes.c:571 builtin/tag.c:474
 msgid "object"
 msgstr "Objekt"
 
-#: builtin/notes.c:540 builtin/notes.c:697
+#: builtin/notes.c:412 builtin/notes.c:569
 msgid "reuse and edit specified note object"
 msgstr "Wiederverwendung und Bearbeitung des angegebenen Notiz-Objektes"
 
-#: builtin/notes.c:543 builtin/notes.c:700
+#: builtin/notes.c:415 builtin/notes.c:572
 msgid "reuse specified note object"
 msgstr "Wiederverwendung des angegebenen Notiz-Objektes"
 
-#: builtin/notes.c:545 builtin/notes.c:613
+#: builtin/notes.c:417 builtin/notes.c:485
 msgid "replace existing notes"
 msgstr "ersetzt existierende Notizen"
 
-#: builtin/notes.c:579
+#: builtin/notes.c:451
 #, c-format
 msgid ""
 "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
@@ -7117,26 +7336,26 @@ msgstr ""
 "Konnte Notizen nicht hinzufügen. Existierende Notizen für Objekt %s "
 "gefunden. Verwenden Sie '-f' um die existierenden Notizen zu überschreiben."
 
-#: builtin/notes.c:584 builtin/notes.c:661
+#: builtin/notes.c:456 builtin/notes.c:533
 #, c-format
 msgid "Overwriting existing notes for object %s\n"
 msgstr "Überschreibe existierende Notizen für Objekt %s\n"
 
-#: builtin/notes.c:614
+#: builtin/notes.c:486
 msgid "read objects from stdin"
 msgstr "liest Objekte von der Standard-Eingabe"
 
-#: builtin/notes.c:616
+#: builtin/notes.c:488
 msgid "load rewriting config for <command> (implies --stdin)"
 msgstr ""
 "lädt Konfiguration für <Kommando> beim Umschreiben von Versionen (impliziert "
 "--stdin)"
 
-#: builtin/notes.c:634
+#: builtin/notes.c:506
 msgid "too few parameters"
 msgstr "zu wenig Parameter"
 
-#: builtin/notes.c:655
+#: builtin/notes.c:527
 #, c-format
 msgid ""
 "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
@@ -7145,12 +7364,12 @@ msgstr ""
 "Kann Notizen nicht kopieren. Existierende Notizen für Objekt %s gefunden. "
 "Verwenden Sie '-f' um die existierenden Notizen zu überschreiben."
 
-#: builtin/notes.c:667
+#: builtin/notes.c:539
 #, c-format
 msgid "Missing notes on source object %s. Cannot copy."
 msgstr "Keine Notizen für Quell-Objekt %s. Kopie nicht möglich."
 
-#: builtin/notes.c:716
+#: builtin/notes.c:588
 #, c-format
 msgid ""
 "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n"
@@ -7159,15 +7378,15 @@ msgstr ""
 "Die Optionen -m/-F/-c/-C sind für das Unterkommando 'edit' veraltet.\n"
 "Bitte benutzen Sie stattdessen 'git notes add -f -m/-F/-c/-C'.\n"
 
-#: builtin/notes.c:863
+#: builtin/notes.c:735
 msgid "General options"
 msgstr "Allgemeine Optionen"
 
-#: builtin/notes.c:865
+#: builtin/notes.c:737
 msgid "Merge options"
-msgstr "Optionen für Zusammenführung"
+msgstr "Merge-Optionen"
 
-#: builtin/notes.c:867
+#: builtin/notes.c:739
 msgid ""
 "resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
 "cat_sort_uniq)"
@@ -7175,46 +7394,46 @@ msgstr ""
 "löst Konflikte bei Notizen mit der angegebenen Strategie auf (manual/ours/"
 "theirs/union/cat_sort_uniq)"
 
-#: builtin/notes.c:869
+#: builtin/notes.c:741
 msgid "Committing unmerged notes"
 msgstr "trägt nicht zusammengeführte Notizen ein"
 
-#: builtin/notes.c:871
+#: builtin/notes.c:743
 msgid "finalize notes merge by committing unmerged notes"
 msgstr ""
-"schließt Zusammenführung von Notizen ab, in dem nicht zusammengeführte "
-"Notizen eingetragen werden"
+"schließt Merge von Notizen ab, in dem nicht zusammengeführte Notizen "
+"committet werden"
 
-#: builtin/notes.c:873
+#: builtin/notes.c:745
 msgid "Aborting notes merge resolution"
-msgstr "bricht Konfliktauflösung bei Zusammenführung von Notizen ab"
+msgstr "bricht Konfliktauflösung beim Merge von Notizen ab"
 
-#: builtin/notes.c:875
+#: builtin/notes.c:747
 msgid "abort notes merge"
-msgstr "bricht Zusammenführung von Notizen ab"
+msgstr "bricht Merge von Notizen ab"
 
-#: builtin/notes.c:970
+#: builtin/notes.c:842
 #, c-format
 msgid "Object %s has no note\n"
 msgstr "Objekt %s hat keine Notiz\n"
 
-#: builtin/notes.c:982
+#: builtin/notes.c:854
 msgid "attempt to remove non-existent note is not an error"
 msgstr "der Versuch, eine nicht existierende Notiz zu löschen, ist kein Fehler"
 
-#: builtin/notes.c:985
+#: builtin/notes.c:857
 msgid "read object names from the standard input"
 msgstr "liest Objektnamen von der Standard-Eingabe"
 
-#: builtin/notes.c:1066
+#: builtin/notes.c:938
 msgid "notes_ref"
 msgstr "Notiz-Referenz"
 
-#: builtin/notes.c:1067
+#: builtin/notes.c:939
 msgid "use notes from <notes_ref>"
 msgstr "verwendet Notizen von <Notiz-Referenz>"
 
-#: builtin/notes.c:1102 builtin/remote.c:1598
+#: builtin/notes.c:974 builtin/remote.c:1598
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Unbekanntes Unterkommando: %s"
@@ -7237,12 +7456,12 @@ msgstr "Fehler beim Komprimieren (%d)"
 #: builtin/pack-objects.c:2397
 #, c-format
 msgid "unsupported index version %s"
-msgstr "Nicht unterstützte Bereitstellungsversion %s"
+msgstr "Nicht unterstützte Staging-Area-Version %s"
 
 #: builtin/pack-objects.c:2401
 #, c-format
 msgid "bad index version '%s'"
-msgstr "Ungültige Bereitstellungsversion '%s'"
+msgstr "Ungültige Staging-Area-Version '%s'"
 
 #: builtin/pack-objects.c:2424
 #, c-format
@@ -7328,7 +7547,7 @@ msgstr "erzeugt keine leeren Pakete"
 
 #: builtin/pack-objects.c:2481
 msgid "read revision arguments from standard input"
-msgstr "liest Argumente bezüglich Revisionen von der Standard-Eingabe"
+msgstr "liest Argumente bezüglich Commits von der Standard-Eingabe"
 
 #: builtin/pack-objects.c:2483
 msgid "limit the objects to those that are not yet packed"
@@ -7341,8 +7560,7 @@ msgstr "schließt Objekte ein, die von jeder Referenz erreichbar sind"
 #: builtin/pack-objects.c:2489
 msgid "include objects referred by reflog entries"
 msgstr ""
-"schließt Objekte ein, die von Einträgen des Referenzprotokolls referenziert "
-"werden"
+"schließt Objekte ein, die von Einträgen des Reflogs referenziert werden"
 
 #: builtin/pack-objects.c:2492
 msgid "output pack to stdout"
@@ -7350,8 +7568,7 @@ msgstr "schreibt Paket in die Standard-Ausgabe"
 
 #: builtin/pack-objects.c:2494
 msgid "include tag objects that refer to objects to be packed"
-msgstr ""
-"schließt Markierungsobjekte ein, die auf gepackte Objekte referenzieren"
+msgstr "schließt Tag-Objekte ein, die auf gepackte Objekte referenzieren"
 
 #: builtin/pack-objects.c:2496
 msgid "keep unreachable objects"
@@ -7379,7 +7596,7 @@ msgstr "Komprimierungsgrad für Paketierung"
 
 #: builtin/pack-objects.c:2507
 msgid "do not hide commits by grafts"
-msgstr "verbirgt keine Versionen mit künstlichen Vorgängern (\"grafts\")"
+msgstr "verbirgt keine Commits mit künstlichen Vorgängern (\"grafts\")"
 
 #: builtin/pack-refs.c:6
 msgid "git pack-refs [options]"
@@ -7399,7 +7616,7 @@ msgstr "git prune-packed [-n|--dry-run] [-q|--quiet]"
 
 #: builtin/prune.c:12
 msgid "git prune [-n] [-v] [--expire <time>] [--] [<head>...]"
-msgstr "git prune [-n] [-v] [--expire <Zeit>] [--] [<Zweigspitze>...]"
+msgstr "git prune [-n] [-v] [--expire <Zeit>] [--] [<head>...]"
 
 #: builtin/prune.c:132
 msgid "do not remove, show only"
@@ -7415,11 +7632,11 @@ msgstr "lässt Objekte älter als <Zeit> verfallen"
 
 #: builtin/push.c:14
 msgid "git push [<options>] [<repository> [<refspec>...]]"
-msgstr "git push [<Optionen>] [<Projektarchiv> [<Referenzspezifikation>...]]"
+msgstr "git push [<Optionen>] [<Repository> [<Refspec>...]]"
 
 #: builtin/push.c:45
 msgid "tag shorthand without <tag>"
-msgstr "Kurzschrift für Markierung ohne <Markierung>"
+msgstr "Kurzschrift für Tag ohne <Tag>"
 
 #: builtin/push.c:64
 msgid "--delete only accepts plain target ref names"
@@ -7448,19 +7665,19 @@ msgid ""
 "    git push %s %s\n"
 "%s"
 msgstr ""
-"Der Name des externen Übernahmezweiges stimmt nicht mit dem Namen Ihres\n"
-"aktuellen Zweiges überein. Um auf den Übernahmezweig in dem externen\n"
-"Projektarchiv zu versenden, benutzen Sie:\n"
+"Der Name des Upstream-Branches stimmt nicht mit dem Namen Ihres\n"
+"aktuellen Branches überein. Um auf den Upstream-Branch in dem Remote-\n"
+"Repository zu versenden, benutzen Sie:\n"
 "\n"
 "    git push %s HEAD:%s\n"
 "\n"
-"Um auf den Zweig mit dem selben Namen in dem externen Projekarchiv\n"
-"zu versenden, benutzen Sie:\n"
+"Um auf den Branch mit dem selben Namen im Remote-Repository zu versenden,\n"
+"benutzen Sie:\n"
 "\n"
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:121
+#: builtin/push.c:117
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -7469,13 +7686,13 @@ msgid ""
 "\n"
 "    git push %s HEAD:<name-of-remote-branch>\n"
 msgstr ""
-"Sie befinden sich im Moment auf keinem Zweig.\n"
-"Um die Historie, führend zum aktuellen (freistehende Zweigspitze (HEAD))\n"
+"Sie befinden sich im Moment auf keinem Branch.\n"
+"Um die Historie, führend zum aktuellen (losgelöster HEAD)\n"
 "Status zu versenden, benutzen Sie\n"
 "\n"
-"    git push %s HEAD:<Name-des-externen-Zweiges>\n"
+"    git push %s HEAD:<Name-des-Remote-Branches>\n"
 
-#: builtin/push.c:128
+#: builtin/push.c:131
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -7483,29 +7700,30 @@ msgid ""
 "\n"
 "    git push --set-upstream %s %s\n"
 msgstr ""
-"Der aktuelle Zweig %s hat keinen Zweig im externen Projektarchiv.\n"
-"Um den aktuellen Zweig zu versenden und das Fernarchiv als externes\n"
-"Projektarchiv zu verwenden, benutzen Sie\n"
+"Der aktuelle Branch %s hat keinen Upstream-Branch.\n"
+"Um den aktuellen Branch zu versenden und den Remote-Branch\n"
+"als Upstream-Branch zu setzen, benutzen Sie\n"
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:136
+#: builtin/push.c:139
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
-msgstr "Der aktuelle Zweig %s hat mehrere externe Zweige, Versand verweigert."
+msgstr ""
+"Der aktuelle Branch %s hat mehrere Upstream-Branches, \"push\" verweigert."
 
-#: builtin/push.c:139
+#: builtin/push.c:142
 #, 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 ""
-"Sie versenden nach '%s', welches kein externes Projektarchiv Ihres\n"
-"aktuellen Zweiges '%s' ist, ohne mir mitzuteilen, was ich versenden\n"
-"soll, um welchen externen Zweig zu aktualisieren."
+"Sie versenden nach '%s', welches kein Upstream-Repository Ihres aktuellen\n"
+"Branches '%s' ist, ohne mir mitzuteilen, was ich versenden soll, um welchen\n"
+"Remote-Branch zu aktualisieren."
 
-#: builtin/push.c:151
+#: builtin/push.c:165
 msgid ""
 "push.default is unset; its implicit value is changing in\n"
 "Git 2.0 from 'matching' to 'simple'. To squelch this message\n"
@@ -7526,6 +7744,7 @@ msgstr ""
 "wird in Git 2.0 von 'matching' nach 'simple' geändert. Um diese Meldung zu\n"
 "unterdrücken und das aktuelle Verhalten nach Änderung des Standardwertes\n"
 "beizubehalten, benutzen Sie:\n"
+"\n"
 "  git config --global push.default matching\n"
 "\n"
 "Um diese Meldung zu unterdrücken und das neue Verhalten jetzt zu übernehmen, "
@@ -7539,28 +7758,28 @@ msgstr ""
 "Modus 'current' anstatt 'simple', falls Sie gelegentlich ältere Versionen "
 "von Git benutzen.)"
 
-#: builtin/push.c:199
+#: builtin/push.c:225
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
-"Sie haben keine Referenzspezifikationen zum Versenden angegeben, und push."
-"default ist \"nothing\"."
+"Sie haben keine Refspec für \"push\" angegeben, und push.default ist "
+"\"nothing\"."
 
-#: builtin/push.c:206
+#: builtin/push.c:232
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
-"its remote counterpart. Merge the remote changes (e.g. 'git pull')\n"
-"before pushing again.\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 ""
 "Aktualisierungen wurden zurückgewiesen, weil die Spitze Ihres aktuellen\n"
-"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Führen Sie\n"
-"die externen Änderungen zusammen (z.B. 'git pull') bevor Sie erneut\n"
-"versenden.\n"
+"Branches hinter seinem externen Gegenstück zurückgefallen ist. Führen Sie\n"
+"die externen Änderungen zusammen (z.B. 'git pull ...') bevor Sie \"push\"\n"
+"erneut ausführen.\n"
 "Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
 "für weitere Details."
 
-#: builtin/push.c:212
+#: builtin/push.c:238
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. If you did not intend to push that branch, you may want to\n"
@@ -7568,80 +7787,79 @@ msgid ""
 "to 'simple', 'current' or 'upstream' to push only the current branch."
 msgstr ""
 "Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n"
-"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Wenn Sie "
+"Branches hinter seinem externen Gegenstück zurückgefallen ist. Wenn Sie "
 "nicht\n"
-"beabsichtigt haben, diesen Zweig zu versenden, können Sie auch den zu "
+"beabsichtigt haben, diesen Branch zu versenden, können Sie auch den zu "
 "versendenden\n"
-"Zweig spezifizieren oder die Konfigurationsvariable 'push.default' zu "
+"Branch spezifizieren oder die Konfigurationsvariable 'push.default' zu "
 "'simple', 'current'\n"
-"oder 'upstream' setzen, um nur den aktuellen Zweig zu versenden."
+"oder 'upstream' setzen, um nur den aktuellen Branch zu versenden."
 
-#: builtin/push.c:218
+#: builtin/push.c:244
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
-"counterpart. Check out this branch and merge the remote changes\n"
-"(e.g. 'git pull') before pushing again.\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 ""
 "Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n"
-"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Checken Sie\n"
-"diesen Zweig aus und führen Sie die externen Änderungen zusammen\n"
-"(z.B. 'git pull') bevor Sie erneut versenden.\n"
+"Branches hinter seinem externen Gegenstück zurückgefallen ist. Checken Sie\n"
+"diesen Branch aus und führen Sie die externen Änderungen zusammen\n"
+"(z.B. 'git pull ...') bevor Sie erneut \"push\" ausführen.\n"
 "Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
 "für weitere Details."
 
-#: builtin/push.c:224
+#: builtin/push.c:250
 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 merge the remote changes (e.g.,\n"
-"'git pull') before pushing again.\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 ""
-"Aktualisierungen wurden zurückgewiesen, weil das Fernarchiv Versionen "
+"Aktualisierungen wurden zurückgewiesen, weil das Remote-Repository Commits "
 "enthält,\n"
-"die lokal nicht vorhanden sind. Das wird üblicherweise durch das Versenden "
+"die lokal nicht vorhanden sind. Das wird üblicherweise durch einen \"push\" "
 "von\n"
-"Versionen auf dieselbe Referenz von einem anderen Projektarchiv aus "
-"verursacht.\n"
+"Commits auf dieselbe Referenz von einem anderen Repository aus verursacht.\n"
 "Vielleicht müssen Sie die externen Änderungen zusammenzuführen (z.B. 'git "
-"pull')\n"
-"bevor Sie erneut versenden.\n"
+"pull ...')\n"
+"bevor Sie erneut \"push\" ausführen.\n"
 "Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
 "für weitere Details."
 
-#: builtin/push.c:231
+#: builtin/push.c:257
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr ""
-"Aktualisierungen wurden zurückgewiesen, weil die Markierung bereits\n"
-"im Fernarchiv existiert."
+"Aktualisierungen wurden zurückgewiesen, weil der Tag bereits\n"
+"im Remote-Repository existiert."
 
-#: builtin/push.c:234
+#: builtin/push.c:260
 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 ""
-"Sie können keine externe Referenz aktualisieren, die auf ein Objekt zeigt,\n"
-"das keine Version ist, oder es auf ein solches Objekt zeigen lassen, ohne\n"
+"Sie können keine Remote-Referenz aktualisieren, die auf ein Objekt zeigt,\n"
+"das kein Commit ist, oder es auf ein solches Objekt zeigen lassen, ohne\n"
 "die Option '--force' zu verwenden.\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:320
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Versende nach %s\n"
 
-#: builtin/push.c:298
+#: builtin/push.c:324
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "Fehler beim Versenden einiger Referenzen nach '%s'"
 
-#: builtin/push.c:331
+#: builtin/push.c:357
 #, c-format
 msgid "bad repository '%s'"
-msgstr "ungültiges Projektarchiv '%s'"
+msgstr "ungültiges Repository '%s'"
 
-#: builtin/push.c:332
+#: builtin/push.c:358
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -7653,100 +7871,97 @@ msgid ""
 "\n"
 "    git push <name>\n"
 msgstr ""
-"Kein Ziel zum Versenden konfiguriert.\n"
+"Kein Ziel für \"push\" konfiguriert.\n"
 "Entweder spezifizieren Sie die URL von der Kommandozeile oder konfigurieren "
-"ein externes Projektarchiv unter Benutzung von\n"
+"ein Remote-Repository unter Benutzung von\n"
 "\n"
 "    git remote add <Name> <URL>\n"
 "\n"
-"und versenden dann unter Benutzung dieses Namens\n"
+"und führen \"push\" dann unter Benutzung dieses Namens aus\n"
 "\n"
 "    git push <Name>\n"
 
-#: builtin/push.c:347
+#: builtin/push.c:373
 msgid "--all and --tags are incompatible"
 msgstr "Die Optionen --all und --tags sind inkompatibel."
 
-#: builtin/push.c:348
+#: builtin/push.c:374
 msgid "--all can't be combined with refspecs"
-msgstr ""
-"Die Option --all kann nicht mit Referenzspezifikationen kombiniert werden."
+msgstr "Die Option --all kann nicht mit Refspecs kombiniert werden."
 
-#: builtin/push.c:353
+#: builtin/push.c:379
 msgid "--mirror and --tags are incompatible"
 msgstr "Die Optionen --mirror und --tags sind inkompatibel."
 
-#: builtin/push.c:354
+#: builtin/push.c:380
 msgid "--mirror can't be combined with refspecs"
-msgstr ""
-"Die Option --mirror kann nicht mit Referenzspezifikationen kombiniert werden."
+msgstr "Die Option --mirror kann nicht mit Refspecs kombiniert werden."
 
-#: builtin/push.c:359
+#: builtin/push.c:385
 msgid "--all and --mirror are incompatible"
 msgstr "Die Optionen --all und --mirror sind inkompatibel."
 
-#: builtin/push.c:419
+#: builtin/push.c:445
 msgid "repository"
-msgstr "Projektarchiv"
+msgstr "Repository"
 
-#: builtin/push.c:420
+#: builtin/push.c:446
 msgid "push all refs"
 msgstr "versendet alle Referenzen"
 
-#: builtin/push.c:421
+#: builtin/push.c:447
 msgid "mirror all refs"
 msgstr "spiegelt alle Referenzen"
 
-#: builtin/push.c:423
+#: builtin/push.c:449
 msgid "delete refs"
 msgstr "löscht Referenzen"
 
-#: builtin/push.c:424
+#: builtin/push.c:450
 msgid "push tags (can't be used with --all or --mirror)"
-msgstr ""
-"versendet Markierungen (kann nicht mit --all oder --mirror verwendet werden)"
+msgstr "versendet Tags (kann nicht mit --all oder --mirror verwendet werden)"
 
-#: builtin/push.c:427
+#: builtin/push.c:453
 msgid "force updates"
 msgstr "erzwingt Aktualisierung"
 
-#: builtin/push.c:428
+#: builtin/push.c:454
 msgid "check"
 msgstr ""
 
-#: builtin/push.c:429
+#: builtin/push.c:455
 msgid "control recursive pushing of submodules"
-msgstr "steuert rekursives Versenden von Unterprojekten"
+msgstr "steuert rekursiven \"push\" von Submodulen"
 
-#: builtin/push.c:431
+#: builtin/push.c:457
 msgid "use thin pack"
 msgstr "verwendet kleinere Pakete"
 
-#: builtin/push.c:432 builtin/push.c:433
+#: builtin/push.c:458 builtin/push.c:459
 msgid "receive pack program"
 msgstr "'receive pack' Programm"
 
-#: builtin/push.c:434
+#: builtin/push.c:460
 msgid "set upstream for git pull/status"
-msgstr "setzt externes Projektarchiv für \"git pull/status\""
+msgstr "setzt Upstream für \"git pull/status\""
 
-#: builtin/push.c:437
+#: builtin/push.c:463
 msgid "prune locally removed refs"
 msgstr "entfernt lokal gelöschte Referenzen"
 
-#: builtin/push.c:439
+#: builtin/push.c:465
 msgid "bypass pre-push hook"
 msgstr "umgeht \"pre-push hook\""
 
-#: builtin/push.c:440
+#: builtin/push.c:466
 msgid "push missing but relevant tags"
-msgstr "versendet fehlende, aber relevante Markierungen"
+msgstr "versendet fehlende, aber relevante Tags"
 
-#: builtin/push.c:450
+#: builtin/push.c:476
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "Die Option --delete ist inkompatibel mit --all, --mirror und --tags."
 
-#: builtin/push.c:452
+#: builtin/push.c:478
 msgid "--delete doesn't make sense without any refs"
 msgstr "Die Option --delete kann nur mit Referenzen verwendet werden."
 
@@ -7758,76 +7973,83 @@ msgid ""
 msgstr ""
 "git read-tree [[-m [--trivial] [--aggressive] | --reset | --prefix=<Prefix>] "
 "[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
-"index-output=<Datei>] (--empty | <Versionsreferenz1> [<Versionsreferenz2> "
-"[<Versionsreferenz3>]])"
+"index-output=<Datei>] (--empty | <Commit-Referenz1> [<Commit-Referenz2> "
+"[<Commit-Referenz3>]])"
 
-#: builtin/read-tree.c:108
+#: builtin/read-tree.c:109
 msgid "write resulting index to <file>"
-msgstr "schreibt resultierende Bereitstellung nach <Datei>"
+msgstr "schreibt resultierende Staging-Area nach <Datei>"
 
-#: builtin/read-tree.c:111
+#: builtin/read-tree.c:112
 msgid "only empty the index"
-msgstr "leert die Bereitstellung"
+msgstr "leert die Staging-Area"
 
-#: builtin/read-tree.c:113
+#: builtin/read-tree.c:114
 msgid "Merging"
-msgstr "Zusammenführung"
+msgstr "Merge"
 
-#: builtin/read-tree.c:115
+#: builtin/read-tree.c:116
 msgid "perform a merge in addition to a read"
-msgstr "führt eine Zusammenführung zusätzlich zum Lesen aus"
+msgstr "führt einen Merge zusätzlich zum Lesen aus"
 
-#: builtin/read-tree.c:117
+#: builtin/read-tree.c:118
 msgid "3-way merge if no file level merging required"
-msgstr ""
-"3-Wege-Zusammenführung, wenn keine Zusammenführung auf Dateiebene "
-"erforderlich ist"
+msgstr "3-Wege-Merge, wenn kein Merge auf Dateiebene erforderlich ist"
 
-#: builtin/read-tree.c:119
+#: builtin/read-tree.c:120
 msgid "3-way merge in presence of adds and removes"
-msgstr ""
-"3-Wege-Zusammenführung bei Vorhandensein von hinzugefügten/entfernten Zeilen"
+msgstr "3-Wege-Merge bei Vorhandensein von hinzugefügten/entfernten Zeilen"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:122
 msgid "same as -m, but discard unmerged entries"
 msgstr "genau wie -m, verwirft aber nicht zusammengeführte Einträge"
 
-#: builtin/read-tree.c:122
+#: builtin/read-tree.c:123
 msgid "<subdirectory>/"
 msgstr "<Unterverzeichnis>/"
 
-#: builtin/read-tree.c:123
+#: builtin/read-tree.c:124
 msgid "read the tree into the index under <subdirectory>/"
-msgstr "liest den Baum in die Bereitstellung unter <Unterverzeichnis>/"
+msgstr "liest das Verzeichnis in die Staging-Area unter <Unterverzeichnis>/"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:127
 msgid "update working tree with merge result"
-msgstr "aktualisiert Arbeitsbaum mit Ergebnis der Zusammenführung"
+msgstr "aktualisiert Arbeitsverzeichnis mit dem Ergebnis des Merges"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:129
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:129
+#: builtin/read-tree.c:130
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "erlaubt explizit ignorierte Dateien zu überschreiben"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:133
 msgid "don't check the working tree after merging"
-msgstr "prüft nicht den Arbeitsbaum nach der Zusammenführung"
+msgstr "prüft nicht das Arbeitsverzeichnis nach dem Merge"
 
-#: builtin/read-tree.c:133
+#: builtin/read-tree.c:134
 msgid "don't update the index or the work tree"
-msgstr "aktualisiert weder die Bereitstellung, noch den Arbeitsbaum"
+msgstr "aktualisiert weder die Staging-Area, noch das Arbeitsverzeichnis"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:136
 msgid "skip applying sparse checkout filter"
 msgstr "überspringt Anwendung des Filters für spärliches Auschecken"
 
-#: builtin/read-tree.c:137
+#: builtin/read-tree.c:138
 msgid "debug unpack-trees"
 msgstr "protokolliert Entpacken der Bäume"
 
+#: builtin/reflog.c:500
+#, c-format
+msgid "%s' for '%s' is not a valid timestamp"
+msgstr "'%s' für '%s' ist kein gültiger Zeitstempel"
+
+#: builtin/reflog.c:616 builtin/reflog.c:621
+#, c-format
+msgid "'%s' is not a valid timestamp"
+msgstr "'%s' ist kein gültiger Zeitstempel"
+
 #: builtin/remote.c:11
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
@@ -7837,7 +8059,7 @@ msgid ""
 "git remote add [-t <branch>] [-m <master>] [-f] [--tags|--no-tags] [--"
 "mirror=<fetch|push>] <name> <url>"
 msgstr ""
-"git remote add [-t <Zweig>] [-m <master>] [-f] [--tags|--no-tags] [--"
+"git remote add [-t <Branch>] [-m <master>] [-f] [--tags|--no-tags] [--"
 "mirror=<fetch|push>] <Name> <URL>"
 
 #: builtin/remote.c:13 builtin/remote.c:32
@@ -7850,7 +8072,7 @@ msgstr "git remote remove <Name>"
 
 #: builtin/remote.c:15 builtin/remote.c:42
 msgid "git remote set-head <name> (-a | -d | <branch>)"
-msgstr "git remote set-head <Name> (-a | -d | <Zweig>)"
+msgstr "git remote set-head <Name> (-a | -d | <Branch>)"
 
 #: builtin/remote.c:16
 msgid "git remote [-v | --verbose] show [-n] <name>"
@@ -7864,12 +8086,11 @@ msgstr "git remote prune [-n | --dry-run] <Name>"
 msgid ""
 "git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
 msgstr ""
-"git remote [-v | --verbose] update [-p | --prune] [(<Gruppe> | "
-"<externesProjektarchiv>)...]"
+"git remote [-v | --verbose] update [-p | --prune] [(<Gruppe> | <Remote>)...]"
 
 #: builtin/remote.c:19
 msgid "git remote set-branches [--add] <name> <branch>..."
-msgstr "git remote set-branches [--add] <Name> <Zweig>..."
+msgstr "git remote set-branches [--add] <Name> <Branch>..."
 
 #: builtin/remote.c:20 builtin/remote.c:68
 msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
@@ -7889,11 +8110,11 @@ msgstr "git remote add [<Optionen>] <Name> <URL>"
 
 #: builtin/remote.c:47
 msgid "git remote set-branches <name> <branch>..."
-msgstr "git remote set-branches <Name> <Zweig>..."
+msgstr "git remote set-branches <Name> <Branch>..."
 
 #: builtin/remote.c:48
 msgid "git remote set-branches --add <name> <branch>..."
-msgstr "git remote set-branches --add <Name> <Zweig>..."
+msgstr "git remote set-branches --add <Name> <Branch>..."
 
 #: builtin/remote.c:53
 msgid "git remote show [<options>] <name>"
@@ -7905,7 +8126,7 @@ msgstr "git remote prune [<Optionen>] <Name>"
 
 #: builtin/remote.c:63
 msgid "git remote update [<options>] [<group> | <remote>]..."
-msgstr "git remote update [<Optionen>] [<Gruppe> | <externesProjektarchiv>]..."
+msgstr "git remote update [<Optionen>] [<Gruppe> | <externesRepository>]..."
 
 #: builtin/remote.c:98
 #, c-format
@@ -7927,11 +8148,11 @@ msgstr "unbekanntes Argument für Option --mirror: %s"
 
 #: builtin/remote.c:163
 msgid "fetch the remote branches"
-msgstr "fordert die externen Zweige an"
+msgstr "fordert die Remote-Branches an"
 
 #: builtin/remote.c:165
 msgid "import all tags and associated objects when fetching"
-msgstr "importiert alle Markierungen und verbundene Objekte beim Anfordern"
+msgstr "importiert alle Tags und verbundene Objekte beim Anfordern"
 
 #: builtin/remote.c:168
 msgid "or do not fetch any tag at all (--no-tags)"
@@ -7939,11 +8160,11 @@ msgstr "oder fordere gar keine Zweige an (--no-tags)"
 
 #: builtin/remote.c:170
 msgid "branch(es) to track"
-msgstr "Zweige zur Übernahme"
+msgstr "Branch(es) zur Übernahme"
 
 #: builtin/remote.c:171
 msgid "master branch"
-msgstr "Hauptzweig"
+msgstr "Hauptbranch"
 
 #: builtin/remote.c:172
 msgid "push|fetch"
@@ -7952,34 +8173,35 @@ msgstr "push|fetch"
 #: builtin/remote.c:173
 msgid "set up remote as a mirror to push to or fetch from"
 msgstr ""
-"Aufsetzen des Fernarchivs als Spiegelarchiv zum Versenden und Anfordern"
+"Aufsetzen des Remote-Repositories als Spiegel-Repository für \"push\" und "
+"\"fetch\""
 
 #: builtin/remote.c:185
 msgid "specifying a master branch makes no sense with --mirror"
 msgstr ""
-"Die Option --mirror kann nicht mit der Angabe eines Hauptzweiges verwendet "
+"Die Option --mirror kann nicht mit der Angabe eines Hauptbranches verwendet "
 "werden."
 
 #: builtin/remote.c:187
 msgid "specifying branches to track makes sense only with fetch mirrors"
 msgstr ""
-"Die Angabe von zu folgenden Zweigen kann nur mit dem Anfordern von "
+"Die Angabe von zu folgenden Branches kann nur mit dem Anfordern von "
 "Spiegelarchiven verwendet werden."
 
 #: builtin/remote.c:195 builtin/remote.c:646
 #, c-format
 msgid "remote %s already exists."
-msgstr "externes Projektarchiv %s existiert bereits"
+msgstr "externes Repository %s existiert bereits"
 
 #: builtin/remote.c:199 builtin/remote.c:650
 #, c-format
 msgid "'%s' is not a valid remote name"
-msgstr "'%s' ist kein gültiger Name für ein externes Projektarchiv"
+msgstr "'%s' ist kein gültiger Name für ein Remote-Repository"
 
 #: builtin/remote.c:243
 #, c-format
 msgid "Could not setup master '%s'"
-msgstr "Konnte symbolische Referenz für Hauptzweig von '%s' nicht einrichten"
+msgstr "Konnte symbolische Referenz für Hauptbranch von '%s' nicht einrichten"
 
 #: builtin/remote.c:299
 #, c-format
@@ -7989,7 +8211,7 @@ msgstr "mehr als ein %s"
 #: builtin/remote.c:339
 #, c-format
 msgid "Could not get fetch map for refspec %s"
-msgstr "Konnte Abholungszuordnung für Referenzspezifikation %s nicht bekommen"
+msgstr "Konnte Fetch-Map für Refspec %s nicht bekommen"
 
 #: builtin/remote.c:440 builtin/remote.c:448
 msgid "(matching)"
@@ -8007,7 +8229,7 @@ msgstr "Konnte '%s' nicht an '%s' anhängen."
 #: builtin/remote.c:639 builtin/remote.c:792 builtin/remote.c:890
 #, c-format
 msgid "No such remote: %s"
-msgstr "Kein solches externes Archiv: %s"
+msgstr "Kein solches Remote-Repository: %s"
 
 #: builtin/remote.c:656
 #, c-format
@@ -8026,8 +8248,7 @@ msgid ""
 "\t%s\n"
 "\tPlease update the configuration manually if necessary."
 msgstr ""
-"Keine Aktualisierung der nicht standardmäßigen Referenzspezifikation zum "
-"Abholen\n"
+"Keine Aktualisierung der nicht standardmäßigen Refspec für \"fetch\"\n"
 "\t%s\n"
 "\tBitte aktualisieren Sie, falls notwendig, die Konfiguration manuell."
 
@@ -8054,7 +8275,7 @@ msgstr "Konnte '%s' nicht erstellen"
 #: builtin/remote.c:764
 #, c-format
 msgid "Could not remove branch %s"
-msgstr "Konnte Zweig %s nicht löschen"
+msgstr "Konnte Branch %s nicht löschen"
 
 #: builtin/remote.c:834
 msgid ""
@@ -8064,18 +8285,18 @@ msgid_plural ""
 "Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n"
 "to delete them, use:"
 msgstr[0] ""
-"Hinweis: Ein Zweig außerhalb der /refs/remotes/ Hierachie wurde nicht "
+"Hinweis: Ein Branch außerhalb der refs/remotes/ Hierachie wurde nicht "
 "gelöscht;\n"
 "um diesen zu löschen, benutzen Sie:"
 msgstr[1] ""
-"Hinweis: Einige Zweige außer der /refs/remotes/ Hierarchie wurden nicht "
+"Hinweis: Einige Branches außer der refs/remotes/ Hierarchie wurden nicht "
 "entfernt;\n"
 "um diese zu entfernen, benutzen Sie:"
 
 #: builtin/remote.c:943
 #, c-format
 msgid " new (next fetch will store in remotes/%s)"
-msgstr " neu (wird bei nächster Abholung in remotes/%s gespeichert)"
+msgstr " neu (wird bei nächstem \"fetch\" in remotes/%s gespeichert)"
 
 #: builtin/remote.c:946
 msgid " tracked"
@@ -8092,30 +8313,30 @@ msgstr " ???"
 #: builtin/remote.c:991
 #, c-format
 msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
-msgstr "ungültiges branch.%s.merge; kann nicht auf > 1 Zweig neu aufbauen"
+msgstr "ungültiges branch.%s.merge; kann Rebase nicht auf > 1 Branch ausführen"
 
 #: builtin/remote.c:998
 #, c-format
 msgid "rebases onto remote %s"
-msgstr "baut neu auf externen Zweig %s auf"
+msgstr "Rebase auf Remote-Branch %s"
 
 #: builtin/remote.c:1001
 #, c-format
 msgid " merges with remote %s"
-msgstr " führt mit externem Zweig %s zusammen"
+msgstr " führt mit Remote-Branch %s zusammen"
 
 #: builtin/remote.c:1002
 msgid "    and with remote"
-msgstr "    und mit externem Zweig"
+msgstr "    und mit Remote-Branch"
 
 #: builtin/remote.c:1004
 #, c-format
 msgid "merges with remote %s"
-msgstr "führt mit externem Zweig %s zusammen"
+msgstr "führt mit Remote-Branch %s zusammen"
 
 #: builtin/remote.c:1005
 msgid "   and with remote"
-msgstr "   und mit externem Zweig"
+msgstr "   und mit Remote-Branch"
 
 #: builtin/remote.c:1051
 msgid "create"
@@ -8159,12 +8380,12 @@ msgstr "    %-*s versendet nach %s"
 
 #: builtin/remote.c:1091
 msgid "do not query remotes"
-msgstr "keine Abfrage von Fernarchiven"
+msgstr "keine Abfrage von Remote-Repositories"
 
 #: builtin/remote.c:1118
 #, c-format
 msgid "* remote %s"
-msgstr "* externes Projektarchiv %s"
+msgstr "* Remote-Repository %s"
 
 #: builtin/remote.c:1119
 #, c-format
@@ -8183,22 +8404,22 @@ msgstr "  URL zum Versenden: %s"
 #: builtin/remote.c:1133 builtin/remote.c:1135 builtin/remote.c:1137
 #, c-format
 msgid "  HEAD branch: %s"
-msgstr "  Hauptzweig: %s"
+msgstr "  Hauptbranch: %s"
 
 #: builtin/remote.c:1139
 #, c-format
 msgid ""
 "  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
 msgstr ""
-"  Hauptzweig (externer Hauptzweig ist mehrdeutig, könnte einer der folgenden "
+"  Hauptbranch (externer HEAD ist mehrdeutig, könnte einer der folgenden "
 "sein):\n"
 
 #: builtin/remote.c:1151
 #, c-format
 msgid "  Remote branch:%s"
 msgid_plural "  Remote branches:%s"
-msgstr[0] "  externer Zweig:%s"
-msgstr[1] "  externe Zweige:%s"
+msgstr[0] "  Remote-Branch:%s"
+msgstr[1] "  Remote-Branches:%s"
 
 #: builtin/remote.c:1154 builtin/remote.c:1181
 msgid " (status not queried)"
@@ -8207,8 +8428,8 @@ msgstr " (Zustand nicht abgefragt)"
 #: builtin/remote.c:1163
 msgid "  Local branch configured for 'git pull':"
 msgid_plural "  Local branches configured for 'git pull':"
-msgstr[0] "  Lokaler Zweig konfiguriert für 'git pull':"
-msgstr[1] "  Lokale Zweige konfiguriert für 'git pull':"
+msgstr[0] "  Lokaler Branch konfiguriert für 'git pull':"
+msgstr[1] "  Lokale Branches konfiguriert für 'git pull':"
 
 #: builtin/remote.c:1171
 msgid "  Local refs will be mirrored by 'git push'"
@@ -8223,7 +8444,7 @@ msgstr[1] "  Lokale Referenzen konfiguriert für 'git push'%s:"
 
 #: builtin/remote.c:1199
 msgid "set refs/remotes/<name>/HEAD according to remote"
-msgstr "setzt refs/remotes/<Name>/HEAD gemäß dem Fernarchiv"
+msgstr "setzt refs/remotes/<Name>/HEAD gemäß dem Remote-Repository"
 
 #: builtin/remote.c:1201
 msgid "delete refs/remotes/<name>/HEAD"
@@ -8231,13 +8452,13 @@ msgstr "entfernt refs/remotes/<Name>/HEAD"
 
 #: builtin/remote.c:1216
 msgid "Cannot determine remote HEAD"
-msgstr "Kann Hauptzweig des externen Projektarchivs nicht bestimmen"
+msgstr "Kann HEAD des Remote-Repositories nicht bestimmen"
 
 #: builtin/remote.c:1218
 msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
 msgstr ""
-"Mehrere Hauptzweige im externen Projektarchiv. Bitte wählen Sie explizit "
-"einen aus mit:"
+"Mehrere Hauptbranches im Remote-Repository. Bitte wählen Sie explizit einen "
+"aus mit:"
 
 #: builtin/remote.c:1228
 #, c-format
@@ -8267,7 +8488,7 @@ msgstr " %s wurde unreferenziert!"
 #: builtin/remote.c:1281
 #, c-format
 msgid "Pruning %s"
-msgstr "entferne veraltete Zweige von %s"
+msgstr "entferne veraltete Branches von %s"
 
 #: builtin/remote.c:1282
 #, c-format
@@ -8277,33 +8498,33 @@ msgstr "URL: %s"
 #: builtin/remote.c:1295
 #, c-format
 msgid " * [would prune] %s"
-msgstr " * [würde veralteten Zweig entfernen] %s"
+msgstr " * [würde veralteten Branch entfernen] %s"
 
 #: builtin/remote.c:1298
 #, c-format
 msgid " * [pruned] %s"
-msgstr "* [veralteten Zweig entfernt] %s"
+msgstr "* [veralteten Branch entfernt] %s"
 
 #: builtin/remote.c:1321
 msgid "prune remotes after fetching"
-msgstr "entfernt veraltete Zweige im Fernarchiv nach dem Abholen"
+msgstr "entfernt veraltete Branches im Remote-Repository nach \"fetch\""
 
 #: builtin/remote.c:1387 builtin/remote.c:1461
 #, c-format
 msgid "No such remote '%s'"
-msgstr "Kein solches externes Projektarchiv '%s'"
+msgstr "Kein solches Remote-Repository '%s'"
 
 #: builtin/remote.c:1407
 msgid "add branch"
-msgstr "fügt Zweig hinzu"
+msgstr "fügt Branch hinzu"
 
 #: builtin/remote.c:1414
 msgid "no remote specified"
-msgstr "kein externes Projektarchiv angegeben"
+msgstr "kein Remote-Repository angegeben"
 
 #: builtin/remote.c:1436
 msgid "manipulate push URLs"
-msgstr "manipuliert URLs zum Versenden"
+msgstr "manipuliert URLs für \"push\""
 
 #: builtin/remote.c:1438
 msgid "add URL"
@@ -8330,7 +8551,7 @@ msgstr "Keine solche URL gefunden: %s"
 
 #: builtin/remote.c:1497
 msgid "Will not delete all non-push URLs"
-msgstr "Werde keine URLs entfernen, die nicht für den Versand bestimmt sind"
+msgstr "Werde keine URLs entfernen, die nicht für \"push\" bestimmt sind"
 
 #: builtin/remote.c:1569
 msgid "be verbose; must be placed before a subcommand"
@@ -8366,21 +8587,21 @@ msgstr "git rerere [clean | forget path... | status | remaining | diff | gc]"
 
 #: builtin/rerere.c:56
 msgid "register clean resolutions in index"
-msgstr "registriert saubere Auflösungen in der Bereitstellung"
+msgstr "registriert saubere Auflösungen in der Staging-Area"
 
 #: builtin/reset.c:25
 msgid ""
 "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
 msgstr ""
-"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<Version>]"
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<Commit>]"
 
 #: builtin/reset.c:26
 msgid "git reset [-q] <tree-ish> [--] <paths>..."
-msgstr "git reset [-q] <Versionsreferenz> [--] <Pfade>..."
+msgstr "git reset [-q] <Commit-Referenz> [--] <Pfade>..."
 
 #: builtin/reset.c:27
 msgid "git reset --patch [<tree-ish>] [--] [<paths>...]"
-msgstr "git reset --patch [<Versionsreferenz>] [--] [<Pfade>...]"
+msgstr "git reset --patch [<Commit-Referenz>] [--] [<Pfade>...]"
 
 #: builtin/reset.c:33
 msgid "mixed"
@@ -8404,110 +8625,108 @@ msgstr "keep"
 
 #: builtin/reset.c:73
 msgid "You do not have a valid HEAD."
-msgstr "Sie haben keine gültige Zweigspitze (HEAD)."
+msgstr "Sie haben keinen gültigen HEAD."
 
 #: builtin/reset.c:75
 msgid "Failed to find tree of HEAD."
-msgstr "Fehler beim Finden des Baumes der Zweigspitze (HEAD)."
+msgstr "Fehler beim Finden des \"Tree\"-Objektes von HEAD."
 
 #: builtin/reset.c:81
 #, c-format
 msgid "Failed to find tree of %s."
-msgstr "Fehler beim Finden des Baumes von %s."
+msgstr "Fehler beim Finden des \"Tree\"-Objektes von %s."
 
-#: builtin/reset.c:98
+#: builtin/reset.c:99
 #, c-format
 msgid "HEAD is now at %s"
-msgstr "Zweigspitze (HEAD) ist jetzt bei %s"
+msgstr "HEAD ist jetzt bei %s"
 
-#: builtin/reset.c:169
+#: builtin/reset.c:172
 #, c-format
 msgid "Cannot do a %s reset in the middle of a merge."
-msgstr ""
-"Kann keine '%s' Zurücksetzung durchführen, während eine Zusammenführung im "
-"Gange ist."
+msgstr "Kann keinen '%s'-Reset durchführen, während ein Merge im Gange ist."
 
-#: builtin/reset.c:248
+#: builtin/reset.c:251
 msgid "be quiet, only report errors"
 msgstr "weniger Ausgaben, meldet nur Fehler"
 
-#: builtin/reset.c:250
+#: builtin/reset.c:253
 msgid "reset HEAD and index"
-msgstr "setzt Zweigspitze (HEAD) und Bereitstellung neu"
+msgstr "setzt HEAD und Staging-Area um"
 
-#: builtin/reset.c:251
+#: builtin/reset.c:254
 msgid "reset only HEAD"
-msgstr "setzt nur Zweigspitze (HEAD) neu"
+msgstr "setzt nur HEAD um"
 
-#: builtin/reset.c:253 builtin/reset.c:255
+#: builtin/reset.c:256 builtin/reset.c:258
 msgid "reset HEAD, index and working tree"
-msgstr "setzt Zweigspitze (HEAD), Bereitstellung und Arbeitsbaum neu"
+msgstr "setzt HEAD, Staging-Area und Arbeitsverzeichnis um"
 
-#: builtin/reset.c:257
+#: builtin/reset.c:260
 msgid "reset HEAD but keep local changes"
-msgstr "setzt Zweigspitze (HEAD) neu, behält aber lokale Änderungen"
+msgstr "setzt HEAD um, behält aber lokale Änderungen"
 
-#: builtin/reset.c:275
+#: builtin/reset.c:278
 #, c-format
 msgid "Failed to resolve '%s' as a valid revision."
-msgstr "Konnte '%s' nicht als gültige Revision auflösen."
+msgstr "Konnte '%s' nicht als gültigen Commit auflösen."
 
-#: builtin/reset.c:278 builtin/reset.c:286
+#: builtin/reset.c:281 builtin/reset.c:289
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Konnte Objekt '%s' nicht parsen."
 
-#: builtin/reset.c:283
+#: builtin/reset.c:286
 #, c-format
 msgid "Failed to resolve '%s' as a valid tree."
-msgstr "Konnte '%s' nicht als gültigen Baum auflösen."
+msgstr "Konnte '%s' nicht als gültiges \"Tree\"-Objekt auflösen."
 
-#: builtin/reset.c:292
+#: builtin/reset.c:295
 msgid "--patch is incompatible with --{hard,mixed,soft}"
 msgstr "--patch ist inkompatibel mit --{hard,mixed,soft}"
 
-#: builtin/reset.c:301
+#: builtin/reset.c:304
 msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
 msgstr ""
 "--mixed mit Pfaden ist veraltet; benutzen Sie stattdessen 'git reset -- "
 "<Pfade>'."
 
-#: builtin/reset.c:303
+#: builtin/reset.c:306
 #, c-format
 msgid "Cannot do %s reset with paths."
-msgstr "Eine '%s' Zurücksetzung mit Pfaden ist nicht möglich."
+msgstr "Ein '%s'-Reset mit Pfaden ist nicht möglich."
 
-#: builtin/reset.c:313
+#: builtin/reset.c:316
 #, c-format
 msgid "%s reset is not allowed in a bare repository"
-msgstr "'%s' Zurücksetzung ist in einem bloßen Projektarchiv nicht erlaubt"
+msgstr "'%s'-Reset ist in einem Bare-Repository nicht erlaubt"
 
-#: builtin/reset.c:333
+#: builtin/reset.c:336
 #, c-format
 msgid "Could not reset index file to revision '%s'."
-msgstr "Konnte Bereitstellungsdatei nicht zu Revision '%s' setzen."
+msgstr "Konnte Staging-Area-Datei nicht zu Commit '%s' setzen."
 
-#: builtin/reset.c:339
+#: builtin/reset.c:342
 msgid "Unstaged changes after reset:"
-msgstr "Nicht bereitgestellte Änderungen nach Zurücksetzung:"
+msgstr "Nicht zum Commit vorgemerkte Änderungen nach Zurücksetzung:"
 
-#: builtin/reset.c:344
+#: builtin/reset.c:347
 msgid "Could not write new index file."
-msgstr "Konnte neue Bereitstellungsdatei nicht schreiben."
+msgstr "Konnte neue Staging-Area-Datei nicht schreiben."
 
-#: builtin/rev-parse.c:339
+#: builtin/rev-parse.c:345
 msgid "git rev-parse --parseopt [options] -- [<args>...]"
 msgstr "git rev-parse --parseopt [Optionen] -- [<Argumente>...]"
 
-#: builtin/rev-parse.c:344
+#: builtin/rev-parse.c:350
 msgid "keep the `--` passed as an arg"
 msgstr "lässt `--` als Argument"
 
-#: builtin/rev-parse.c:346
+#: builtin/rev-parse.c:352
 msgid "stop parsing after the first non-option argument"
 msgstr "stoppt das Parsen nach dem ersten Argument was keine Option ist"
 
-#: builtin/rev-parse.c:464
+#: builtin/rev-parse.c:470
 msgid ""
 "git rev-parse --parseopt [options] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -8524,7 +8743,7 @@ msgstr ""
 
 #: builtin/revert.c:22
 msgid "git revert [options] <commit-ish>..."
-msgstr "git revert [Optionen] <Versionsangabe>..."
+msgstr "git revert [Optionen] <Commit-Angabe>..."
 
 #: builtin/revert.c:23
 msgid "git revert <subcommand>"
@@ -8532,185 +8751,212 @@ msgstr "git revert <Unterkommando>"
 
 #: builtin/revert.c:28
 msgid "git cherry-pick [options] <commit-ish>..."
-msgstr "git cherry-pick [Optionen] <Versionsangabe>..."
+msgstr "git cherry-pick [Optionen] <Commit-Angabe>..."
 
 #: builtin/revert.c:29
 msgid "git cherry-pick <subcommand>"
 msgstr "git cherry-pick <Unterkommando>"
 
-#: builtin/revert.c:70 builtin/revert.c:92
+#: builtin/revert.c:71 builtin/revert.c:94
 #, c-format
 msgid "%s: %s cannot be used with %s"
 msgstr "%s: %s kann nicht mit %s verwendet werden"
 
-#: builtin/revert.c:103
+#: builtin/revert.c:105
 msgid "end revert or cherry-pick sequence"
 msgstr "beendet \"revert\" oder \"cherry-pick\" Ablauf"
 
-#: builtin/revert.c:104
+#: builtin/revert.c:106
 msgid "resume revert or cherry-pick sequence"
 msgstr "setzt \"revert\" oder \"cherry-pick\" Ablauf fort"
 
-#: builtin/revert.c:105
+#: builtin/revert.c:107
 msgid "cancel revert or cherry-pick sequence"
 msgstr "bricht \"revert\" oder \"cherry-pick\" Ablauf ab"
 
-#: builtin/revert.c:106
+#: builtin/revert.c:108
 msgid "don't automatically commit"
-msgstr "trägt nicht automatisch ein"
+msgstr "committet nicht automatisch"
 
-#: builtin/revert.c:107
+#: builtin/revert.c:109
 msgid "edit the commit message"
-msgstr "Bearbeitung der Versionsbeschreibung"
+msgstr "Bearbeitung der Commit-Beschreibung"
 
-#: builtin/revert.c:110
+#: builtin/revert.c:112
 msgid "parent number"
 msgstr "Nummer des Elternteils"
 
-#: builtin/revert.c:112
+#: builtin/revert.c:114
 msgid "merge strategy"
-msgstr "Zusammenführungsstrategie"
+msgstr "Merge-Strategie"
 
-#: builtin/revert.c:113
+#: builtin/revert.c:115
 msgid "option"
 msgstr "Option"
 
-#: builtin/revert.c:114
+#: builtin/revert.c:116
 msgid "option for merge strategy"
-msgstr "Option für Zusammenführungsstrategie"
+msgstr "Option für Merge-Strategie"
 
-#: builtin/revert.c:125
+#: builtin/revert.c:127
 msgid "append commit name"
-msgstr "hängt Versionsnamen an"
+msgstr "hängt Commit-Namen an"
 
-#: builtin/revert.c:126
+#: builtin/revert.c:128
 msgid "allow fast-forward"
 msgstr "erlaubt Vorspulen"
 
-#: builtin/revert.c:127
+#: builtin/revert.c:129
 msgid "preserve initially empty commits"
-msgstr "erhält ursprüngliche, leere Versionen"
+msgstr "erhält ursprüngliche, leere Commits"
 
-#: builtin/revert.c:128
+#: builtin/revert.c:130
 msgid "allow commits with empty messages"
-msgstr "erlaubt Version mit leerer Beschreibung"
+msgstr "erlaubt Commits mit leerer Beschreibung"
 
-#: builtin/revert.c:129
+#: builtin/revert.c:131
 msgid "keep redundant, empty commits"
-msgstr "behält redundante, leere Versionen"
+msgstr "behält redundante, leere Commits"
 
-#: builtin/revert.c:133
+#: builtin/revert.c:135
 msgid "program error"
 msgstr "Programmfehler"
 
-#: builtin/revert.c:223
+#: builtin/revert.c:225
 msgid "revert failed"
 msgstr "\"revert\" fehlgeschlagen"
 
-#: builtin/revert.c:238
+#: builtin/revert.c:240
 msgid "cherry-pick failed"
 msgstr "\"cherry-pick\" fehlgeschlagen"
 
-#: builtin/rm.c:15
+#: builtin/rm.c:16
 msgid "git rm [options] [--] <file>..."
 msgstr "git rm [Optionen] [--] [<Datei>...]"
 
-#: builtin/rm.c:64 builtin/rm.c:186
-#, c-format
+#: builtin/rm.c:64
+msgid ""
+"the following submodule (or one of its nested submodules)\n"
+"uses a .git directory:"
+msgid_plural ""
+"the following submodules (or one of its nested submodules)\n"
+"use a .git directory:"
+msgstr[0] ""
+"das folgende Submodul (oder ein geschachteltes Submodul hiervon)\n"
+"benutzt ein .git-Verzeichnis:"
+msgstr[1] ""
+"die folgenden Submodule (oder ein geschachteltes Submodul hiervon)\n"
+"benutzen ein .git-Verzeichnis:"
+
+#: builtin/rm.c:70
 msgid ""
-"submodule '%s' (or one of its nested submodules) uses a .git directory\n"
+"\n"
 "(use 'rm -rf' if you really want to remove it including all of its history)"
 msgstr ""
-"Unterprojekt '%s' (oder ein geschachteltes Unterprojekt hiervon) verwendet\n"
-"ein .git-Verzeichnis (benutzen Sie 'rm -rf' wenn Sie dieses wirklich "
-"mitsamt\n"
+"\n"
+"(benutzen Sie 'rm -rf' wenn Sie dieses Submodul wirklich mitsamt\n"
 "seiner Historie löschen möchten)"
 
-#: builtin/rm.c:174
-#, c-format
+#: builtin/rm.c:230
 msgid ""
-"'%s' has staged content different from both the file and the HEAD\n"
-"(use -f to force removal)"
-msgstr ""
-"'%s' hat bereitgestellten Inhalt unterschiedlich zu der Datei und der\n"
-"Zweigspitze (HEAD) (benutzen Sie -f um die Entfernung zu erzwingen)"
+"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] ""
+"die folgende Datei hat zum Commit vorgemerkte Änderungen unterschiedlich\n"
+"zu der Datei und HEAD:"
+msgstr[1] ""
+"die folgenden Dateien haben zum Commit vorgemerkte Änderungen "
+"unterschiedlich\n"
+"zu der Datei und HEAD:"
 
-#: builtin/rm.c:180
-#, c-format
+#: builtin/rm.c:235
 msgid ""
-"'%s' has changes staged in the index\n"
-"(use --cached to keep the file, or -f to force removal)"
+"\n"
+"(use -f to force removal)"
 msgstr ""
-"'%s' hat Änderungen in der Bereitstellung\n"
-"(benutzen Sie --cached um die Datei zu behalten, oder -f um die Entfernung "
-"zu erzwingen)"
+"\n"
+"(benutzen Sie -f um die Löschung zu erzwingen)"
 
-#: builtin/rm.c:191
-#, c-format
+#: builtin/rm.c:239
+msgid "the following file has changes staged in the index:"
+msgid_plural "the following files have changes staged in the index:"
+msgstr[0] "die folgende Datei hat zum Commit vorgemerkte Änderungen:"
+msgstr[1] "die folgenden Dateien haben zum Commit vorgemerkte Änderungen:"
+
+#: builtin/rm.c:243 builtin/rm.c:254
 msgid ""
-"'%s' has local modifications\n"
+"\n"
 "(use --cached to keep the file, or -f to force removal)"
 msgstr ""
-"'%s' hat lokale Modifikationen\n"
+"\n"
 "(benutzen Sie --cached um die Datei zu behalten, oder -f um die Entfernung "
 "zu erzwingen)"
 
-#: builtin/rm.c:207
+#: builtin/rm.c:251
+msgid "the following file has local modifications:"
+msgid_plural "the following files have local modifications:"
+msgstr[0] "die folgende Datei hat lokale Änderungen:"
+msgstr[1] "die folgenden Dateien haben lokale Änderungen:"
+
+#: builtin/rm.c:269
 msgid "do not list removed files"
 msgstr "listet keine gelöschten Dateien auf"
 
-#: builtin/rm.c:208
+#: builtin/rm.c:270
 msgid "only remove from the index"
-msgstr "entfernt nur aus der Bereitstellung"
+msgstr "entfernt nur aus der Staging-Area"
 
-#: builtin/rm.c:209
+#: builtin/rm.c:271
 msgid "override the up-to-date check"
 msgstr "überschreibt die \"up-to-date\" Prüfung"
 
-#: builtin/rm.c:210
+#: builtin/rm.c:272
 msgid "allow recursive removal"
 msgstr "erlaubt rekursive Entfernung"
 
-#: builtin/rm.c:212
+#: builtin/rm.c:274
 msgid "exit with a zero status even if nothing matched"
 msgstr "beendet mit Rückgabewert 0, wenn keine Übereinstimmung gefunden wurde"
 
-#: builtin/rm.c:283
+#: builtin/rm.c:345
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "'%s' wird nicht ohne -r rekursiv entfernt"
 
-#: builtin/rm.c:322
+#: builtin/rm.c:384
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: konnte %s nicht löschen"
 
 #: builtin/shortlog.c:13
 msgid "git shortlog [<options>] [<revision range>] [[--] [<path>...]]"
-msgstr "git shortlog [<Optionen>] [Revisionsbereich] [[--] <Pfad>...]"
+msgstr "git shortlog [<Optionen>] [Commitbereich] [[--] <Pfad>...]"
 
 #: builtin/shortlog.c:131
 #, c-format
 msgid "Missing author: %s"
 msgstr "fehlender Autor: %s"
 
-#: builtin/shortlog.c:227
+#: builtin/shortlog.c:228
 msgid "sort output according to the number of commits per author"
-msgstr "sortiert die Ausgabe entsprechend der Anzahl von Versionen pro Autor"
+msgstr "sortiert die Ausgabe entsprechend der Anzahl von Commits pro Autor"
 
-#: builtin/shortlog.c:229
+#: builtin/shortlog.c:230
 msgid "Suppress commit descriptions, only provides commit count"
-msgstr "Unterdrückt Versionsbeschreibungen, liefert nur Anzahl der Versionen"
+msgstr "Unterdrückt Commit-Beschreibungen, liefert nur Anzahl der Commits"
 
-#: builtin/shortlog.c:231
+#: builtin/shortlog.c:232
 msgid "Show the email address of each author"
 msgstr "Zeigt die Email-Adresse von jedem Autor"
 
-#: builtin/shortlog.c:232
+#: builtin/shortlog.c:233
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:233
+#: builtin/shortlog.c:234
 msgid "Linewrap output"
 msgstr "Ausgabe mit Zeilenumbrüchen"
 
@@ -8723,8 +8969,8 @@ msgid ""
 msgstr ""
 "git show-branch [-a|--all] [-r|--remotes] [--topo-order | --date-order] [--"
 "current] [--color[=<Wann>] | --no-color] [--sparse] [--more=<n> | --list | --"
-"independent | --merge-base] [--no-name | --sha1-name] [--topics] "
-"[(<Revision> | <glob>)...]"
+"independent | --merge-base] [--no-name | --sha1-name] [--topics] [(<Commit> "
+"| <glob>)...]"
 
 #: builtin/show-branch.c:10
 msgid "git show-branch (-g|--reflog)[=<n>[,<base>]] [--list] [<ref>]"
@@ -8732,19 +8978,19 @@ msgstr "git show-branch (-g|--reflog)[=<n>[,<Basis>]] [--list] [<Referenz>]"
 
 #: builtin/show-branch.c:650
 msgid "show remote-tracking and local branches"
-msgstr "zeigt externe Übernahmezweige und lokale Zweige an"
+msgstr "zeigt Remote-Tracking und lokale Branches an"
 
 #: builtin/show-branch.c:652
 msgid "show remote-tracking branches"
-msgstr "zeigt externe Übernahmezweige an"
+msgstr "zeigt Remote-Tracking-Branches an"
 
 #: builtin/show-branch.c:654
 msgid "color '*!+-' corresponding to the branch"
-msgstr "färbt '*!+-' entsprechend des Zweiges ein"
+msgstr "färbt '*!+-' entsprechend des Branches ein"
 
 #: builtin/show-branch.c:656
 msgid "show <n> more commits after the common ancestor"
-msgstr "zeigt <n> weitere Versionen nach dem gemeinsamen Vorfahren"
+msgstr "zeigt <n> weitere Commits nach dem gemeinsamen Vorgänger-Commit"
 
 #: builtin/show-branch.c:658
 msgid "synonym to more=-1"
@@ -8756,15 +9002,15 @@ msgstr "unterdrückt Namen"
 
 #: builtin/show-branch.c:661
 msgid "include the current branch"
-msgstr "bezieht den aktuellen Zweig ein"
+msgstr "bezieht den aktuellen Branch ein"
 
 #: builtin/show-branch.c:663
 msgid "name commits with their object names"
-msgstr "benennt Versionen nach ihren Objektnamen"
+msgstr "benennt Commits nach ihren Objektnamen"
 
 #: builtin/show-branch.c:665
 msgid "show possible merge bases"
-msgstr "zeigt mögliche Basen für Zusammenführung"
+msgstr "zeigt mögliche Merge-Basen an"
 
 #: builtin/show-branch.c:667
 msgid "show refs unreachable from any other ref"
@@ -8772,29 +9018,27 @@ msgstr "zeigt Referenzen die unerreichbar von allen anderen Referenzen sind"
 
 #: builtin/show-branch.c:669
 msgid "show commits in topological order"
-msgstr "zeigt Versionen in topologischer Ordnung"
+msgstr "zeigt Commits in topologischer Ordnung"
 
-#: builtin/show-branch.c:671
+#: builtin/show-branch.c:672
 msgid "show only commits not on the first branch"
-msgstr "zeigt nur Versionen, die sich nicht im ersten Zweig befinden"
+msgstr "zeigt nur Commits, die sich nicht im ersten Branch befinden"
 
-#: builtin/show-branch.c:673
+#: builtin/show-branch.c:674
 msgid "show merges reachable from only one tip"
-msgstr ""
-"zeigt Zusammenführungen, die nur von einer Zweigspitze aus erreichbar sind"
+msgstr "zeigt Merges, die nur von einem Branch aus erreichbar sind"
 
-#: builtin/show-branch.c:675
-msgid "show commits where no parent comes before its children"
-msgstr "zeigt Versionen, wo kein Elternteil vor seinem Kind kommt"
+#: builtin/show-branch.c:676
+msgid "topologically sort, maintaining date order where possible"
+msgstr "topologische Sortierung, Beibehaltung Datumsordnung wo möglich"
 
-#: builtin/show-branch.c:677
+#: builtin/show-branch.c:679
 msgid "<n>[,<base>]"
 msgstr "<n>[,<Basis>]"
 
-#: builtin/show-branch.c:678
+#: builtin/show-branch.c:680
 msgid "show <n> most recent ref-log entries starting at base"
-msgstr ""
-"zeigt die <n> jüngsten Einträge im Referenzprotokoll beginnend an der Basis"
+msgstr "zeigt die <n> jüngsten Einträge im Reflog beginnend an der Basis"
 
 #: builtin/show-ref.c:10
 msgid ""
@@ -8808,40 +9052,40 @@ msgstr ""
 msgid "git show-ref --exclude-existing[=pattern] < ref-list"
 msgstr "git show-ref --exclude-existing[=Muster] < ref-list"
 
-#: builtin/show-ref.c:165
+#: builtin/show-ref.c:168
 msgid "only show tags (can be combined with heads)"
-msgstr "zeigt nur Markierungen (kann mit \"heads\" kombiniert werden)"
+msgstr "zeigt nur Tags (kann mit \"heads\" kombiniert werden)"
 
-#: builtin/show-ref.c:166
+#: builtin/show-ref.c:169
 msgid "only show heads (can be combined with tags)"
-msgstr "zeigt nur Zweigspitzen (kann mit \"tags\" kombiniert werden)"
+msgstr "zeigt nur Branches (kann mit \"tags\" kombiniert werden)"
 
-#: builtin/show-ref.c:167
+#: builtin/show-ref.c:170
 msgid "stricter reference checking, requires exact ref path"
 msgstr "strengere Referenzprüfung, erfordert exakten Referenzpfad"
 
-#: builtin/show-ref.c:170 builtin/show-ref.c:172
-msgid "show the HEAD reference"
-msgstr "zeigt Referenz der Zweigspitze (HEAD)"
+#: builtin/show-ref.c:173 builtin/show-ref.c:176
+msgid "show the HEAD reference, even if it would be filtered out"
+msgstr "zeigt die HEAD-Referenz, selbst wenn diese ausgefiltert werden würde"
 
-#: builtin/show-ref.c:174
+#: builtin/show-ref.c:178
 msgid "dereference tags into object IDs"
-msgstr "dereferenziert Markierungen in Objekt-Identifikationen"
+msgstr "dereferenziert Tags in Objekt-Identifikationen"
 
-#: builtin/show-ref.c:176
+#: builtin/show-ref.c:180
 msgid "only show SHA1 hash using <n> digits"
 msgstr "zeigt nur SHA1 Hash mit <n> Ziffern"
 
-#: builtin/show-ref.c:180
+#: builtin/show-ref.c:184
 msgid "do not print results to stdout (useful with --verify)"
 msgstr ""
 "keine Ausgabe der Ergebnisse in die Standard-Ausgabe (nützlich mit --verify)"
 
-#: builtin/show-ref.c:182
+#: builtin/show-ref.c:186
 msgid "show refs from stdin that aren't in local repository"
 msgstr ""
 "zeigt Referenzen von der Standard-Eingabe, die sich nicht im lokalen "
-"Projektarchiv befinden, an"
+"Repository befinden, an"
 
 #: builtin/symbolic-ref.c:7
 msgid "git symbolic-ref [options] name [ref]"
@@ -8876,24 +9120,24 @@ msgstr "Grund für die Aktualisierung"
 msgid ""
 "git tag [-a|-s|-u <key-id>] [-f] [-m <msg>|-F <file>] <tagname> [<head>]"
 msgstr ""
-"git tag [-a|-s|-u <Schlüssel-id>] [-f] [-m <Nachricht>|-F <Datei>] "
-"<Markierungsname> [<Zweig>]"
+"git tag [-a|-s|-u <Schlüssel-id>] [-f] [-m <Nachricht>|-F <Datei>] <Tagname> "
+"[<Commit>]"
 
 #: builtin/tag.c:23
 msgid "git tag -d <tagname>..."
-msgstr "git tag -d <Markierungsname>..."
+msgstr "git tag -d <Tagname>..."
 
 #: builtin/tag.c:24
 msgid ""
 "git tag -l [-n[<num>]] [--contains <commit>] [--points-at <object>] \n"
 "\t\t[<pattern>...]"
 msgstr ""
-"git tag -l [-n[<Nummer>]] [--contains <Version>] [--points-at <Objekt>] \n"
+"git tag -l [-n[<Nummer>]] [--contains <Commit>] [--points-at <Objekt>] \n"
 "\t\t[<Muster>...]"
 
 #: builtin/tag.c:26
 msgid "git tag -v <tagname>..."
-msgstr "git tag -v <Markierungsname>..."
+msgstr "git tag -v <Tagname>..."
 
 #: builtin/tag.c:60
 #, c-format
@@ -8903,22 +9147,22 @@ msgstr "fehlerhaftes Objekt bei '%s'"
 #: builtin/tag.c:207
 #, c-format
 msgid "tag name too long: %.*s..."
-msgstr "Markierungsname zu lang: %.*s..."
+msgstr "Tagname zu lang: %.*s..."
 
 #: builtin/tag.c:212
 #, c-format
 msgid "tag '%s' not found."
-msgstr "Markierung '%s' nicht gefunden."
+msgstr "Tag '%s' nicht gefunden."
 
 #: builtin/tag.c:227
 #, c-format
 msgid "Deleted tag '%s' (was %s)\n"
-msgstr "Gelöschte Markierung '%s' (war %s)\n"
+msgstr "Tag '%s' gelöscht (war %s)\n"
 
 #: builtin/tag.c:239
 #, c-format
 msgid "could not verify the tag '%s'"
-msgstr "Konnte Markierung '%s' nicht verifizieren"
+msgstr "Konnte Tag '%s' nicht verifizieren"
 
 #: builtin/tag.c:249
 #, c-format
@@ -8928,7 +9172,7 @@ msgid ""
 "Lines starting with '%c' will be ignored.\n"
 msgstr ""
 "\n"
-"Geben Sie eine Markierungsbeschreibung ein.\n"
+"Geben Sie eine Tag-Beschreibung ein.\n"
 "Zeilen, die mit '%c' beginnen, werden ignoriert.\n"
 
 #: builtin/tag.c:253
@@ -8940,17 +9184,17 @@ msgid ""
 "want to.\n"
 msgstr ""
 "\n"
-"Geben Sie eine Markierungsbeschreibung ein.\n"
+"Geben Sie eine Tag-Beschreibung ein.\n"
 "Zeilen, die mit '%c' beginnen, werden behalten; Sie dürfen diese\n"
 "selbst entfernen wenn Sie möchten.\n"
 
 #: builtin/tag.c:292
 msgid "unable to sign the tag"
-msgstr "konnte Markierung nicht signieren"
+msgstr "konnte Tag nicht signieren"
 
 #: builtin/tag.c:294
 msgid "unable to write tag file"
-msgstr "konnte Markierungsdatei nicht schreiben"
+msgstr "konnte Tag-Datei nicht schreiben"
 
 #: builtin/tag.c:319
 msgid "bad object type."
@@ -8958,16 +9202,16 @@ msgstr "ungültiger Objekt-Typ"
 
 #: builtin/tag.c:332
 msgid "tag header too big."
-msgstr "Markierungskopf zu groß."
+msgstr "Tag-Kopf zu groß."
 
 #: builtin/tag.c:368
 msgid "no tag message?"
-msgstr "keine Markierungsbeschreibung?"
+msgstr "keine Tag-Beschreibung?"
 
 #: builtin/tag.c:374
 #, c-format
 msgid "The tag message has been left in %s\n"
-msgstr "Die Markierungsbeschreibung wurde gelassen in %s\n"
+msgstr "Die Tag-Beschreibung wurde gelassen in %s\n"
 
 #: builtin/tag.c:423
 msgid "switch 'points-at' requires an object"
@@ -8980,59 +9224,59 @@ msgstr "fehlerhafter Objekt-Name '%s'"
 
 #: builtin/tag.c:445
 msgid "list tag names"
-msgstr "listet Markierungsnamen auf"
+msgstr "listet Tagnamen auf"
 
 #: builtin/tag.c:447
 msgid "print <n> lines of each tag message"
-msgstr "zeigt <n> Zeilen jeder Markierungsbeschreibung"
+msgstr "zeigt <n> Zeilen jeder Tag-Beschreibung"
 
 #: builtin/tag.c:449
 msgid "delete tags"
-msgstr "löscht Markierungen"
+msgstr "löscht Tags"
 
 #: builtin/tag.c:450
 msgid "verify tags"
-msgstr "überprüft Markierungen"
+msgstr "überprüft Tags"
 
 #: builtin/tag.c:452
 msgid "Tag creation options"
-msgstr "Optionen für Erstellung von Markierungen"
+msgstr "Optionen für Erstellung von Tags"
 
 #: builtin/tag.c:454
 msgid "annotated tag, needs a message"
-msgstr "annotierte Markierung, benötigt eine Beschreibung"
+msgstr "annotierter Tag, benötigt eine Beschreibung"
 
 #: builtin/tag.c:456
 msgid "tag message"
-msgstr "Markierungsbeschreibung"
+msgstr "Tag-Beschreibung"
 
 #: builtin/tag.c:458
 msgid "annotated and GPG-signed tag"
-msgstr "annotierte und GPG-signierte Markierung"
+msgstr "annotierter und GPG-signierter Tag"
 
 #: builtin/tag.c:462
 msgid "use another key to sign the tag"
-msgstr "verwendet einen anderen Schlüssel um die Markierung zu signieren"
+msgstr "verwendet einen anderen Schlüssel um den Tag zu signieren"
 
 #: builtin/tag.c:463
 msgid "replace the tag if exists"
-msgstr "ersetzt die Markierung, wenn sie existiert"
+msgstr "ersetzt den Tag, wenn er existiert"
 
 #: builtin/tag.c:464
 msgid "show tag list in columns"
-msgstr "zeigt Liste der Markierungen in Spalten"
+msgstr "zeigt Liste der Tags in Spalten"
 
 #: builtin/tag.c:466
 msgid "Tag listing options"
-msgstr "Optionen für Auflistung der Markierungen"
+msgstr "Optionen für Auflistung der Tags"
 
 #: builtin/tag.c:469
 msgid "print only tags that contain the commit"
-msgstr "gibt nur Markierungen aus, die diese Version beinhalten"
+msgstr "gibt nur Tags aus, die diesen Commit beinhalten"
 
 #: builtin/tag.c:475
 msgid "print only tags of the object"
-msgstr "gibt nur Markierungen von dem Objekt aus"
+msgstr "gibt nur Tags von dem Objekt aus"
 
 #: builtin/tag.c:504
 msgid "--column and -n are incompatible"
@@ -9061,12 +9305,12 @@ msgstr "zu viele Parameter"
 #: builtin/tag.c:559
 #, c-format
 msgid "'%s' is not a valid tag name."
-msgstr "'%s' ist kein gültiger Markierungsname."
+msgstr "'%s' ist kein gültiger Tagname."
 
 #: builtin/tag.c:564
 #, c-format
 msgid "tag '%s' already exists"
-msgstr "Markierung '%s' existiert bereits"
+msgstr "Tag '%s' existiert bereits"
 
 #: builtin/tag.c:582
 #, c-format
@@ -9081,7 +9325,7 @@ msgstr "%s: kann Referenz nicht aktualisieren"
 #: builtin/tag.c:586
 #, c-format
 msgid "Updated tag '%s' (was %s)\n"
-msgstr "Aktualisierte Markierung '%s' (war %s)\n"
+msgstr "Tag '%s' aktualisiert (war %s)\n"
 
 #: builtin/update-index.c:401
 msgid "git update-index [options] [--] [<file>...]"
@@ -9090,12 +9334,12 @@ msgstr "git update-index [Optionen] [--] [<Datei>...]"
 #: builtin/update-index.c:718
 msgid "continue refresh even when index needs update"
 msgstr ""
-"Aktualisierung fortsetzen, auch wenn die Bereitstellung aktualisiert werden "
+"Aktualisierung fortsetzen, auch wenn die Staging-Area aktualisiert werden "
 "muss"
 
 #: builtin/update-index.c:721
 msgid "refresh: ignore submodules"
-msgstr "Aktualisierung: ignoriert Unterprojekte"
+msgstr "Aktualisierung: ignoriert Submodule"
 
 #: builtin/update-index.c:724
 msgid "do not ignore new files"
@@ -9107,12 +9351,12 @@ msgstr "lässt Dateien Verzeichnisse ersetzen, und umgedreht"
 
 #: builtin/update-index.c:728
 msgid "notice files missing from worktree"
-msgstr "beachtet fehlende Dateien im Arbeitsbaum"
+msgstr "beachtet fehlende Dateien im Arbeitsverzeichnis"
 
 #: builtin/update-index.c:730
 msgid "refresh even if index contains unmerged entries"
 msgstr ""
-"aktualisiert, auch wenn die Bereitstellung nicht zusammengeführte Einträge "
+"aktualisiert, auch wenn die Staging-Area nicht zusammengeführte Einträge "
 "beinhaltet"
 
 #: builtin/update-index.c:733
@@ -9129,7 +9373,7 @@ msgstr "<Modus> <Objekt> <Pfad>"
 
 #: builtin/update-index.c:742
 msgid "add the specified entry to the index"
-msgstr "stellt den angegebenen Eintrag zur Eintragung bereit"
+msgstr "merkt den angegebenen Eintrag zum Commit vor"
 
 #: builtin/update-index.c:746
 msgid "(+/-)x"
@@ -9158,12 +9402,13 @@ msgstr "löscht \"skip-worktree\"-Bit"
 #: builtin/update-index.c:763
 msgid "add to index only; do not add content to object database"
 msgstr ""
-"fügt nur der Bereitstellung hinzu; Inhalt wird nicht der Objekt-Datenbank "
-"hinzugefügt"
+"merkt die Änderungen nur zum Commit vor; Inhalt wird nicht der Objekt-"
+"Datenbank hinzugefügt"
 
 #: builtin/update-index.c:765
 msgid "remove named paths even if present in worktree"
-msgstr "löscht benannte Pfade, auch wenn sie sich im Arbeitsbaum befinden"
+msgstr ""
+"löscht benannte Pfade, auch wenn sie sich im Arbeitsverzeichnis befinden"
 
 #: builtin/update-index.c:767
 msgid "with --stdin: input lines are terminated by null bytes"
@@ -9175,7 +9420,7 @@ msgstr "liest Liste der zu aktualisierenden Pfade von der Standard-Eingabe"
 
 #: builtin/update-index.c:773
 msgid "add entries from standard input to the index"
-msgstr "fügt Einträge von der Standard-Eingabe der Bereitstellung hinzu"
+msgstr "merkt Einträge von der Standard-Eingabe zum Commit vor"
 
 #: builtin/update-index.c:777
 msgid "repopulate stages #2 and #3 for the listed paths"
@@ -9184,12 +9429,11 @@ msgstr ""
 
 #: builtin/update-index.c:781
 msgid "only update entries that differ from HEAD"
-msgstr ""
-"aktualisiert nur Einträge, die unterschiedlich zur Zweigspitze (HEAD) sind"
+msgstr "aktualisiert nur Einträge, die unterschiedlich zu HEAD sind"
 
 #: builtin/update-index.c:785
 msgid "ignore files missing from worktree"
-msgstr "ignoriert fehlende Dateien im Arbeitsbaum"
+msgstr "ignoriert fehlende Dateien im Arbeitsverzeichnis"
 
 #: builtin/update-index.c:788
 msgid "report actions to standard output"
@@ -9201,7 +9445,7 @@ msgstr "(für Fremdprogramme) keine gespeicherten, nicht aufgelöste Konflikte"
 
 #: builtin/update-index.c:794
 msgid "write index in this format"
-msgstr "schreibt Bereitstellungsdatei in diesem Format"
+msgstr "schreibt Staging-Area-Datei in diesem Format"
 
 #: builtin/update-ref.c:7
 msgid "git update-ref [options] -d <refname> [<oldval>]"
@@ -9241,11 +9485,11 @@ msgstr "zeigt nur Statistiken"
 
 #: builtin/verify-tag.c:17
 msgid "git verify-tag [-v|--verbose] <tag>..."
-msgstr "git verify-tag [-v|--verbose] <Markierung>..."
+msgstr "git verify-tag [-v|--verbose] <Tag>..."
 
 #: builtin/verify-tag.c:73
 msgid "print tag contents"
-msgstr "gibt Markierungsinhalte aus"
+msgstr "gibt Tag-Inhalte aus"
 
 #: builtin/write-tree.c:13
 msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
@@ -9257,13 +9501,13 @@ msgstr "<Prefix>/"
 
 #: builtin/write-tree.c:27
 msgid "write tree object for a subdirectory <prefix>"
-msgstr "schreibt das Baumobjekt für ein Unterverzeichnis <Prefix>"
+msgstr "schreibt das \"Tree\"-Objekt für ein Unterverzeichnis <Prefix>"
 
 #: builtin/write-tree.c:30
 msgid "only useful for debugging"
 msgstr "nur nützlich für Fehlersuche"
 
-#: git.c:16
+#: git.c:17
 msgid ""
 "'git help -a' and 'git help -g' lists available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -9274,25 +9518,29 @@ msgstr ""
 "oder 'git help <Konzept>' um mehr über ein spezifisches Kommando oder\n"
 "Konzept zu erfahren."
 
-#: parse-options.h:156
+#: parse-options.h:144
+msgid "expiry date"
+msgstr "Verfallsdatum"
+
+#: parse-options.h:159
 msgid "no-op (backward compatibility)"
 msgstr "Kein Effekt (Rückwärtskompatibilität)"
 
-#: parse-options.h:232
+#: parse-options.h:236
 msgid "be more verbose"
 msgstr "erweiterte Ausgaben"
 
-#: parse-options.h:234
+#: parse-options.h:238
 msgid "be more quiet"
 msgstr "weniger Ausgaben"
 
-#: parse-options.h:240
+#: parse-options.h:244
 msgid "use <n> digits to display SHA-1s"
 msgstr "benutze <n> Ziffern zur Anzeige von SHA-1s"
 
 #: common-cmds.h:8
 msgid "Add file contents to the index"
-msgstr "stellt Dateiinhalte zur Eintragung bereit"
+msgstr "merkt Dateiinhalte zum Commit vor"
 
 #: common-cmds.h:9
 msgid "Find by binary search the change that introduced a bug"
@@ -9301,27 +9549,28 @@ msgstr ""
 
 #: common-cmds.h:10
 msgid "List, create, or delete branches"
-msgstr "Zeigt an, erstellt oder entfernt Zweige"
+msgstr "Zeigt an, erstellt oder entfernt Branches"
 
 #: common-cmds.h:11
 msgid "Checkout a branch or paths to the working tree"
-msgstr "Checkt Zweige oder Pfade im Arbeitszweig aus"
+msgstr "Checkt Branches oder Pfade im Arbeitsverzeichnis aus"
 
 #: common-cmds.h:12
 msgid "Clone a repository into a new directory"
-msgstr "Klont ein Projektarchiv in einem neuen Verzeichnis"
+msgstr "Klont ein Repository in einem neuen Verzeichnis"
 
 #: common-cmds.h:13
 msgid "Record changes to the repository"
-msgstr "Trägt Änderungen in das Projektarchiv ein"
+msgstr "Trägt Änderungen in das Repository ein"
 
 #: common-cmds.h:14
 msgid "Show changes between commits, commit and working tree, etc"
-msgstr "Zeigt Änderungen zwischen Versionen, Version und Arbeitszweig, etc. an"
+msgstr ""
+"Zeigt Änderungen zwischen Commits, Commit und Arbeitsverzeichnis, etc. an"
 
 #: common-cmds.h:15
 msgid "Download objects and refs from another repository"
-msgstr "Lädt Objekte und Referenzen von einem anderen Projektarchiv herunter"
+msgstr "Lädt Objekte und Referenzen von einem anderen Repository herunter"
 
 #: common-cmds.h:16
 msgid "Print lines matching a pattern"
@@ -9330,11 +9579,11 @@ msgstr "Stellt Zeilen dar, die einem Muster entsprechen"
 #: common-cmds.h:17
 msgid "Create an empty Git repository or reinitialize an existing one"
 msgstr ""
-"Erstellt ein leeres Git-Projektarchiv oder initialisiert ein bestehendes neu"
+"Erstellt ein leeres Git-Repository oder initialisiert ein bestehendes neu"
 
 #: common-cmds.h:18
 msgid "Show commit logs"
-msgstr "Zeigt Versionshistorie an"
+msgstr "Zeigt Commit-Historie an"
 
 #: common-cmds.h:19
 msgid "Join two or more development histories together"
@@ -9343,30 +9592,30 @@ msgstr "Führt zwei oder mehr Entwicklungszweige zusammen"
 #: common-cmds.h:20
 msgid "Move or rename a file, a directory, or a symlink"
 msgstr ""
-"Verschiebt oder benennt eine Datei, ein Verzeichnis, oder eine symbolische "
-"Verknüpfung um"
+"Verschiebt oder benennt eine Datei, ein Verzeichnis, oder einen symbolischen "
+"Verweis um"
 
 #: common-cmds.h:21
-msgid "Fetch from and merge with another repository or a local branch"
+msgid "Fetch from and integrate with another repository or a local branch"
 msgstr ""
-"Fordert Objekte von einem externen Projektarchiv an und führt sie mit einem "
-"anderen Projektarchiv oder einem lokalen Zweig zusammen"
+"Fordert Objekte von einem externen Repository an und führt sie mit einem "
+"anderen Repository oder einem lokalen Branch zusammen"
 
 #: common-cmds.h:22
 msgid "Update remote refs along with associated objects"
-msgstr "Aktualisiert externe Referenzen mitsamt den verbundenen Objekten"
+msgstr "Aktualisiert Remote-Referenzen mitsamt den verbundenen Objekten"
 
 #: common-cmds.h:23
 msgid "Forward-port local commits to the updated upstream head"
-msgstr "Baut lokale Versionen auf einem aktuellerem externen Zweig neu auf"
+msgstr "Baut lokale Commits auf einem aktuellerem Upstream-Branch neu auf"
 
 #: common-cmds.h:24
 msgid "Reset current HEAD to the specified state"
-msgstr "Setzt die aktuelle Zweigspitze (HEAD) zu einem spezifizierten Zustand"
+msgstr "Setzt aktuellen HEAD zu einem spezifizierten Zustand"
 
 #: common-cmds.h:25
 msgid "Remove files from the working tree and from the index"
-msgstr "Löscht Dateien im Arbeitszweig und von der Bereitstellung"
+msgstr "Löscht Dateien im Arbeitsverzeichnis und von der Staging-Area"
 
 #: common-cmds.h:26
 msgid "Show various types of objects"
@@ -9374,54 +9623,53 @@ msgstr "Zeigt verschiedene Arten von Objekten an"
 
 #: common-cmds.h:27
 msgid "Show the working tree status"
-msgstr "Zeigt den Zustand des Arbeitszweiges an"
+msgstr "Zeigt den Zustand des Arbeitsverzeichnisses an"
 
 #: common-cmds.h:28
 msgid "Create, list, delete or verify a tag object signed with GPG"
 msgstr ""
-"Erzeugt, listet auf, löscht oder verifiziert ein mit GPG signiertes "
-"Markierungsobjekt"
+"Erzeugt, listet auf, löscht oder verifiziert ein mit GPG signiertes Tag-"
+"Objekt"
 
 #: git-am.sh:50
 msgid "You need to set your committer info first"
-msgstr "Sie müssen zuerst die Informationen des Eintragenden setzen."
+msgstr "Sie müssen zuerst die Informationen zum Commit-Ersteller setzen."
 
 #: git-am.sh:95
 msgid ""
 "You seem to have moved HEAD since the last 'am' failure.\n"
 "Not rewinding to ORIG_HEAD"
 msgstr ""
-"Sie scheinen seit dem letzten gescheiterten 'am' die Zweigspitze (HEAD)\n"
-"geändert zu haben.\n"
+"Sie scheinen seit dem letzten gescheiterten 'am' HEAD geändert zu haben.\n"
 "Keine Zurücksetzung zu ORIG_HEAD."
 
 #: git-am.sh:105
 #, sh-format
 msgid ""
-"When you have resolved this problem, run \"$cmdline --resolved\".\n"
+"When you have resolved this problem, run \"$cmdline --continue\".\n"
 "If you prefer to skip this patch, run \"$cmdline --skip\" instead.\n"
 "To restore the original branch and stop patching, run \"$cmdline --abort\"."
 msgstr ""
-"Wenn Sie das Problem gelöst haben, führen Sie \"$cmdline --resolved\" aus.\n"
+"Wenn Sie das Problem gelöst haben, führen Sie \"$cmdline --continue\" aus.\n"
 "Falls Sie diesen Patch auslassen möchten, führen Sie stattdessen\n"
 "\"$cmdline --skip\" aus.\n"
-"Um den ursprünglichen Zweig wiederherzustellen und die Anwendung der\n"
+"Um den ursprünglichen Branch wiederherzustellen und die Anwendung der\n"
 "Patches abzubrechen, führen Sie \"$cmdline --abort\" aus."
 
 #: git-am.sh:121
 msgid "Cannot fall back to three-way merge."
-msgstr "Kann nicht zu 3-Wege-Zusammenführung zurückfallen."
+msgstr "Kann nicht zu 3-Wege-Merge zurückfallen."
 
 #: git-am.sh:137
 msgid "Repository lacks necessary blobs to fall back on 3-way merge."
 msgstr ""
-"Dem Projektarchiv fehlen notwendige Blobs um auf eine 3-Wege-Zusammenführung "
+"Dem Repository fehlen notwendige Blobs um auf einen 3-Wege-Merge "
 "zurückzufallen."
 
 #: git-am.sh:139
 msgid "Using index info to reconstruct a base tree..."
 msgstr ""
-"Verwende Informationen aus der Bereitstellung um einen Basisbaum "
+"Verwende Informationen aus der Staging-Area um einen Basisverzeichnis "
 "nachzustellen"
 
 #: git-am.sh:154
@@ -9434,11 +9682,11 @@ msgstr ""
 
 #: git-am.sh:163
 msgid "Falling back to patching base and 3-way merge..."
-msgstr "Falle zurück zum Patchen der Basis und der 3-Wege-Zusammenführung..."
+msgstr "Falle zurück zum Patchen der Basis und des 3-Wege-Merges..."
 
 #: git-am.sh:179
 msgid "Failed to merge in the changes."
-msgstr "Zusammenführung der Änderungen fehlgeschlagen"
+msgstr "Merge der Änderungen fehlgeschlagen"
 
 #: git-am.sh:274
 msgid "Only one StGIT patch series can be applied at once"
@@ -9461,28 +9709,35 @@ msgstr ""
 "Die -b/--binary Option hat seit Langem keinen Effekt und wird\n"
 "entfernt. Bitte nicht mehr verwenden."
 
-#: git-am.sh:477
+#: git-am.sh:479
 #, sh-format
 msgid "previous rebase directory $dotest still exists but mbox given."
 msgstr ""
-"Vorheriges Verzeichnis des Neuaufbaus $dotest existiert noch, aber mbox "
-"gegeben."
+"Vorheriges Rebase-Verzeichnis $dotest existiert noch, aber mbox gegeben."
 
-#: git-am.sh:482
+#: git-am.sh:484
 msgid "Please make up your mind. --skip or --abort?"
 msgstr "Bitte werden Sie sich klar. --skip oder --abort?"
 
-#: git-am.sh:509
+#: git-am.sh:520
+#, sh-format
+msgid ""
+"Stray $dotest directory found.\n"
+"Use \"git am --abort\" to remove it."
+msgstr ""
+"Stray $dotest Verzeichnis gefunden.\n"
+"Benutzen Sie \"git am --abort\" um es zu entfernen."
+
+#: git-am.sh:528
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Es ist keine Auflösung im Gange, es wird nicht fortgesetzt."
 
-#: git-am.sh:575
+#: git-am.sh:594
 #, sh-format
 msgid "Dirty index: cannot apply patches (dirty: $files)"
-msgstr ""
-"Unsaubere Bereitstellung: kann Patches nicht anwenden (unsauber: $files)"
+msgstr "Geänderte Staging-Area: kann Patches nicht anwenden (geändert: $files)"
 
-#: git-am.sh:679
+#: git-am.sh:698
 #, sh-format
 msgid ""
 "Patch is empty.  Was it split wrong?\n"
@@ -9492,65 +9747,65 @@ msgstr ""
 "Patch ist leer. Wurde er falsch aufgeteilt?\n"
 "Wenn Sie diesen Patch auslassen möchten, führen Sie stattdessen\n"
 "\"$cmdline --skip\" aus.\n"
-"Um den ursprünglichen Zweig wiederherzustellen und die Anwendung der "
+"Um den ursprünglichen Branch wiederherzustellen und die Anwendung der "
 "Patches\n"
 "abzubrechen, führen Sie \"$cmdline --abort\" aus."
 
-#: git-am.sh:706
+#: git-am.sh:725
 msgid "Patch does not have a valid e-mail address."
 msgstr "Patch enthält keine gültige Email-Adresse."
 
-#: git-am.sh:753
+#: git-am.sh:772
 msgid "cannot be interactive without stdin connected to a terminal."
 msgstr ""
 "Kann nicht interaktiv sein, ohne dass die Standard-Eingabe mit einem "
 "Terminal verbunden ist."
 
-#: git-am.sh:757
+#: git-am.sh:776
 msgid "Commit Body is:"
-msgstr "Beschreibung der Eintragung ist:"
+msgstr "Commit-Beschreibung ist:"
 
 #. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
 #. in your translation. The program will only accept English
 #. input at this point.
-#: git-am.sh:764
+#: git-am.sh:783
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
 msgstr "Anwenden? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
 
-#: git-am.sh:800
+#: git-am.sh:819
 #, sh-format
 msgid "Applying: $FIRSTLINE"
 msgstr "Wende an: $FIRSTLINE"
 
-#: git-am.sh:821
+#: git-am.sh:840
 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 ""
 "Keine Änderungen - haben Sie vergessen 'git add' zu benutzen?\n"
-"Wenn keine Änderungen mehr zum Bereitstellen vorhanden sind, könnten\n"
+"Wenn keine Änderungen mehr zum Commit vorzumerken sind, könnten\n"
 "diese bereits anderweitig eingefügt worden sein; Sie könnten diesen Patch\n"
 "auslassen."
 
-#: git-am.sh:829
+#: git-am.sh:848
 msgid ""
 "You still have unmerged paths in your index\n"
 "did you forget to use 'git add'?"
 msgstr ""
-"Sie haben immer noch nicht zusammengeführte Pfade in der Bereitstellung.\n"
+"Sie haben immer noch nicht zusammengeführte Pfade in der Staging-Area.\n"
 "Haben Sie vergessen 'git add' zu benutzen?"
 
-#: git-am.sh:845
+#: git-am.sh:864
 msgid "No changes -- Patch already applied."
 msgstr "Keine Änderungen -- Patches bereits angewendet."
 
-#: git-am.sh:855
+#: git-am.sh:874
 #, sh-format
 msgid "Patch failed at $msgnum $FIRSTLINE"
 msgstr "Anwendung des Patches fehlgeschlagen bei $msgnum $FIRSTLINE"
 
-#: git-am.sh:858
+#: git-am.sh:877
 #, sh-format
 msgid ""
 "The copy of the patch that failed is found in:\n"
@@ -9559,7 +9814,7 @@ msgstr ""
 "Die Kopie des fehlgeschlagenen Patches befindet sich in:\n"
 "   $dotest/patch"
 
-#: git-am.sh:876
+#: git-am.sh:895
 msgid "applying to an empty history"
 msgstr "wende zu leerer Historie an"
 
@@ -9582,11 +9837,11 @@ msgstr "nicht erkannte Option: '$arg'"
 #: git-bisect.sh:99
 #, sh-format
 msgid "'$arg' does not appear to be a valid revision"
-msgstr "'$arg' scheint keine gültige Revision zu sein"
+msgstr "'$arg' scheint kein gültiger Commit zu sein"
 
 #: git-bisect.sh:117
 msgid "Bad HEAD - I need a HEAD"
-msgstr "Ungültige Zweigspitze (HEAD) - Zweigspitze (HEAD) wird benötigt"
+msgstr "Ungültiger HEAD - HEAD wird benötigt"
 
 #: git-bisect.sh:130
 #, sh-format
@@ -9594,15 +9849,15 @@ msgid ""
 "Checking out '$start_head' failed. Try 'git bisect reset <validbranch>'."
 msgstr ""
 "Auschecken von '$start_head' fehlgeschlagen. Versuchen Sie 'git bisect reset "
-"<gueltigerzweig>'."
+"<gueltigerbranch>'."
 
 #: git-bisect.sh:140
 msgid "won't bisect on seeked tree"
-msgstr "binäre Suche auf gesuchtem Zweig nicht möglich"
+msgstr "binäre Suche auf gesuchtem Branch nicht möglich"
 
 #: git-bisect.sh:144
 msgid "Bad HEAD - strange symbolic ref"
-msgstr "Ungültige Zweigspitze (HEAD) - merkwürdige symbolische Referenz"
+msgstr "Ungültiger HEAD - merkwürdige symbolische Referenz"
 
 #: git-bisect.sh:189
 #, sh-format
@@ -9631,7 +9886,7 @@ msgstr "'git bisect bad' kann nur ein Argument entgegennehmen."
 #. this is less optimum.
 #: git-bisect.sh:273
 msgid "Warning: bisecting only with a bad commit."
-msgstr "Warnung: binäre Suche nur mit einer fehlerhaften Version"
+msgstr "Warnung: binäre Suche nur mit einem fehlerhaften Commit"
 
 #. TRANSLATORS: Make sure to include [Y] and [n] in your
 #. translation. The program will only accept English input
@@ -9645,7 +9900,8 @@ msgid ""
 "You need to give me at least one good and one bad revisions.\n"
 "(You can use \"git bisect bad\" and \"git bisect good\" for that.)"
 msgstr ""
-"Sie müssen mindestens eine korrekte und eine fehlerhafte Revision angeben.\n"
+"Sie müssen mindestens einen korrekten und einen fehlerhaften Commit "
+"angeben.\n"
 "(Sie können dafür \"git bisect bad\" und \"git bisect good\" benutzen.)"
 
 #: git-bisect.sh:292
@@ -9655,7 +9911,7 @@ msgid ""
 "(You can use \"git bisect bad\" and \"git bisect good\" for that.)"
 msgstr ""
 "Sie müssen mit \"git bisect start\" beginnen.\n"
-"Danach müssen Sie mindestens eine korrekte und eine fehlerhafte Revision "
+"Danach müssen Sie mindestens einen korrekten und einen fehlerhaften Commit "
 "angeben.\n"
 "(Sie können dafür \"git bisect bad\" und \"git bisect good\" benutzen.)"
 
@@ -9666,7 +9922,7 @@ msgstr "keine binäre Suche im Gange"
 #: git-bisect.sh:370
 #, sh-format
 msgid "'$invalid' is not a valid commit"
-msgstr "'$invalid' ist keine gültige Version"
+msgstr "'$invalid' ist kein gültiger Commit"
 
 #: git-bisect.sh:379
 #, sh-format
@@ -9674,8 +9930,8 @@ msgid ""
 "Could not check out original HEAD '$branch'.\n"
 "Try 'git bisect reset <commit>'."
 msgstr ""
-"Konnte die ursprüngliche Zweigspitze (HEAD) '$branch' nicht auschecken.\n"
-"Versuchen Sie 'git bisect reset <Version>'."
+"Konnte den ursprünglichen HEAD '$branch' nicht auschecken.\n"
+"Versuchen Sie 'git bisect reset <Commit>'."
 
 #: git-bisect.sh:406
 msgid "No logfile given"
@@ -9728,10 +9984,9 @@ msgid ""
 "as appropriate to mark resolution, or use 'git commit -a'."
 msgstr ""
 "\"pull\" ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben.\n"
-"Bitte korrigieren Sie dies im Arbeitsbaum und benutzen Sie dann 'git add/rm "
-"<Datei>'\n"
-"um die Auflösung entsprechend zu markieren, oder benutzen Sie 'git commit -"
-"a'."
+"Bitte korrigieren Sie dies im Arbeitsverzeichnis und benutzen Sie dann \n"
+"'git add/rm <Datei>' um die Auflösung entsprechend zu markieren, oder\n"
+"benutzen Sie 'git commit -a'."
 
 #: git-pull.sh:25
 msgid "Pull is not possible because you have unmerged files."
@@ -9741,8 +9996,8 @@ msgstr ""
 #: git-pull.sh:203
 msgid "updating an unborn branch with changes added to the index"
 msgstr ""
-"Aktualisiere eine ungeborenen Zweig mit Änderungen, die zur Bereitstellung "
-"hinzugefügt wurden"
+"Aktualisiere einen ungeborenen Branch mit Änderungen, die zum Commit "
+"vorgemerkt sind"
 
 #. The fetch involved updating the current branch.
 #. The working tree and the index file is still based on the
@@ -9755,18 +10010,18 @@ msgid ""
 "Warning: fast-forwarding your working tree from\n"
 "Warning: commit $orig_head."
 msgstr ""
-"Warnung: Die Anforderung aktualisierte die Spitze des aktuellen Zweiges.\n"
-"Warnung: Spule Ihren Arbeitszweig von Version $orig_head vor."
+"Warnung: \"fetch\" aktualisierte die Spitze des aktuellen Branches.\n"
+"Warnung: Spule Ihr Arbeitsverzeichnis von Commit $orig_head vor."
 
 #: git-pull.sh:260
 msgid "Cannot merge multiple branches into empty head"
-msgstr "Kann nicht mehrere Zweige in einen ungeborenen Zweig zusammenführen"
+msgstr "Kann nicht mehrere Branches in einen ungeborenen Branch zusammenführen"
 
 #: git-pull.sh:264
 msgid "Cannot rebase onto multiple branches"
-msgstr "kann nicht auf mehrere Zweige neu aufbauen"
+msgstr "kann Rebase nicht auf mehrere Branches ausführen"
 
-#: git-rebase.sh:53
+#: git-rebase.sh:54
 msgid ""
 "When you have resolved this problem, run \"git rebase --continue\".\n"
 "If you prefer to skip this patch, run \"git rebase --skip\" instead.\n"
@@ -9777,50 +10032,68 @@ msgstr ""
 "aus.\n"
 "Falls Sie diesen Patch auslassen möchten, führen Sie stattdessen \"git "
 "rebase --skip\" aus.\n"
-"Um den ursprünglichen Zweig wiederherzustellen und den Neuaufbau "
-"abzubrechen,\n"
+"Um den ursprünglichen Branch wiederherzustellen und den Rebase abzubrechen,\n"
 "führen Sie \"git rebase --abort\" aus."
 
+#: git-rebase.sh:156
+msgid "Applied autostash."
+msgstr "\"autostash\" angewendet."
+
+#: git-rebase.sh:159
+#, sh-format
+msgid "Cannot store $stash_sha1"
+msgstr "Kann $stash_sha1 nicht speichern."
+
 #: git-rebase.sh:160
+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 ""
+"Anwendung von \"autostash\" resultierte in Konflikten.\n"
+"Ihre Änderungen sind im Stash sicher.\n"
+"Sie können jederzeit \"git stash pop\" oder \"git stash drop\" ausführen.\n"
+
+#: git-rebase.sh:190
 msgid "The pre-rebase hook refused to rebase."
-msgstr "Der \"pre-rebase hook\" hat den Neuaufbau zurückgewiesen."
+msgstr "Der \"pre-rebase hook\" hat den Rebase zurückgewiesen."
 
-#: git-rebase.sh:165
+#: git-rebase.sh:195
 msgid "It looks like git-am is in progress. Cannot rebase."
-msgstr "\"git-am\" scheint im Gange zu sein. Kann nicht neu aufbauen."
+msgstr "\"git-am\" scheint im Gange zu sein. Kann Rebase nicht durchführen."
 
-#: git-rebase.sh:296
+#: git-rebase.sh:329
 msgid "The --exec option must be used with the --interactive option"
 msgstr "Die Option --exec muss mit --interactive verwendet werden."
 
-#: git-rebase.sh:301
+#: git-rebase.sh:334
 msgid "No rebase in progress?"
-msgstr "Kein Neuaufbau im Gange?"
+msgstr "Kein Rebase im Gange?"
 
-#: git-rebase.sh:312
+#: git-rebase.sh:345
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr ""
-"Die --edit-todo Aktion kann nur während eines interaktiven Neuaufbaus "
-"verwendet werden."
+"Die --edit-todo Aktion kann nur während eines interaktiven Rebase verwendet "
+"werden."
 
-#: git-rebase.sh:319
+#: git-rebase.sh:352
 msgid "Cannot read HEAD"
-msgstr "Kann Zweigspitze (HEAD) nicht lesen"
+msgstr "Kann HEAD nicht lesen"
 
-#: git-rebase.sh:322
+#: git-rebase.sh:355
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
 msgstr ""
-"Sie müssen alle Zusammenführungskonflikte editieren und diese dann\n"
+"Sie müssen alle Merge-Konflikte editieren und diese dann\n"
 "mittels \"git add\" als aufgelöst markieren"
 
-#: git-rebase.sh:340
+#: git-rebase.sh:373
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "Konnte nicht zu $head_name zurückgehen"
 
-#: git-rebase.sh:359
+#: git-rebase.sh:392
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -9833,7 +10106,7 @@ msgid ""
 "valuable there."
 msgstr ""
 "Es sieht so aus, als ob es das Verzeichnis $state_dir_base bereits gibt\n"
-"und es könnte ein anderer Neuaufbau im Gange sein. Wenn das der Fall ist,\n"
+"und es könnte ein anderer Rebase im Gange sein. Wenn das der Fall ist,\n"
 "probieren Sie bitte\n"
 "\t$cmd_live_rebase\n"
 "Wenn das nicht der Fall ist, probieren Sie bitte\n"
@@ -9841,59 +10114,68 @@ msgstr ""
 "und führen Sie dieses Kommando nochmal aus. Es wird angehalten, falls noch\n"
 "etwas Schützenswertes vorhanden ist."
 
-#: git-rebase.sh:404
+#: git-rebase.sh:437
 #, sh-format
 msgid "invalid upstream $upstream_name"
-msgstr "ungültiger Übernahmezweig $upstream_name"
+msgstr "ungültiger Upstream-Branch $upstream_name"
 
-#: git-rebase.sh:428
+#: git-rebase.sh:461
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
-msgstr "$onto_name: es gibt mehr als eine Zusammenführungsbasis"
+msgstr "$onto_name: es gibt mehr als eine Merge-Basis"
 
-#: git-rebase.sh:431 git-rebase.sh:435
+#: git-rebase.sh:464 git-rebase.sh:468
 #, sh-format
 msgid "$onto_name: there is no merge base"
-msgstr "$onto_name: es gibt keine Zusammenführungsbasis"
+msgstr "$onto_name: es gibt keine Merge-Basis"
 
-#: git-rebase.sh:440
+#: git-rebase.sh:473
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
-msgstr "$onto_name zeigt auf keine gültige Version"
+msgstr "$onto_name zeigt auf keinen gültigen Commit"
 
-#: git-rebase.sh:463
+#: git-rebase.sh:496
 #, sh-format
 msgid "fatal: no such branch: $branch_name"
-msgstr "fatal: Zweig $branch_name nicht gefunden"
+msgstr "fatal: Branch $branch_name nicht gefunden"
+
+#: git-rebase.sh:519
+msgid "Cannot autostash"
+msgstr "Kann \"autostash\" nicht ausführen."
+
+#: git-rebase.sh:524
+#, sh-format
+msgid "Created autostash: $stash_abbrev"
+msgstr "\"autostash\" erzeugt: $stash_abbrev"
 
-#: git-rebase.sh:483
+#: git-rebase.sh:528
 msgid "Please commit or stash them."
-msgstr "Bitte tragen Sie die Änderungen ein oder benutzen Sie \"stash\"."
+msgstr "Bitte committen Sie die Änderungen oder benutzen Sie \"stash\"."
 
-#: git-rebase.sh:501
+#: git-rebase.sh:548
 #, sh-format
 msgid "Current branch $branch_name is up to date."
-msgstr "Aktueller Zweig $branch_name ist auf dem neusten Stand."
+msgstr "Aktueller Branch $branch_name ist auf dem neusten Stand."
 
-#: git-rebase.sh:504
+#: git-rebase.sh:552
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr ""
-"Aktueller Zweig $branch_name ist auf dem neusten Stand, Neuaufbau erzwungen."
+"Aktueller Branch $branch_name ist auf dem neusten Stand, Rebase erzwungen."
 
-#: git-rebase.sh:515
+#: git-rebase.sh:563
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "Änderungen von $mb zu $onto:"
 
 #. Detach HEAD and reset the tree
-#: git-rebase.sh:524
+#: git-rebase.sh:572
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr ""
-"Zunächst wird die Zweigspitze zurückgespult, um Ihre Änderungen\n"
+"Zunächst wird der Branch zurückgespult, um Ihre Änderungen\n"
 "darauf neu anzuwenden..."
 
-#: git-rebase.sh:532
+#: git-rebase.sh:582
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "$branch_name zu $onto_name vorgespult."
@@ -9904,15 +10186,15 @@ msgstr "git stash clear mit Parametern ist nicht implementiert"
 
 #: git-stash.sh:74
 msgid "You do not have the initial commit yet"
-msgstr "Sie haben bisher noch keine initiale Version"
+msgstr "Sie haben bisher noch keinen initialen Commit"
 
 #: git-stash.sh:89
 msgid "Cannot save the current index state"
-msgstr "Kann den aktuellen Zustand der Bereitstellung nicht speichern"
+msgstr "Kann den aktuellen Zustand der Staging-Area nicht speichern"
 
 #: git-stash.sh:123 git-stash.sh:136
 msgid "Cannot save the current worktree state"
-msgstr "Kann den aktuellen Zustand des Arbeitsbaumes nicht speichern"
+msgstr "Kann den aktuellen Zustand des Arbeitsverzeichnisses nicht speichern"
 
 #: git-stash.sh:140
 msgid "No changes selected"
@@ -9920,11 +10202,16 @@ msgstr "Keine Änderungen ausgewählt"
 
 #: git-stash.sh:143
 msgid "Cannot remove temporary index (can't happen)"
-msgstr "Kann temporäre Bereitstellung nicht löschen (kann nicht passieren)"
+msgstr "Kann temporäre Staging-Area nicht löschen (kann nicht passieren)"
 
 #: git-stash.sh:156
 msgid "Cannot record working tree state"
-msgstr "Kann Zustand des Arbeitsbaumes nicht aufzeichnen"
+msgstr "Kann Zustand des Arbeitsverzeichnisses nicht aufzeichnen"
+
+#: git-stash.sh:190
+#, sh-format
+msgid "Cannot update $ref_stash with $w_commit"
+msgstr "Kann $ref_stash nicht mit $w_commit aktualisieren."
 
 #. TRANSLATORS: $option is an invalid option, like
 #. `--blah-blah'. The 7 spaces at the beginning of the
@@ -9936,7 +10223,7 @@ msgstr "Kann Zustand des Arbeitsbaumes nicht aufzeichnen"
 #. $ git stash save --blah-blah 2>&1 | head -n 2
 #. error: unknown option for 'stash save': --blah-blah
 #. To provide a message, use git stash save -- '--blah-blah'
-#: git-stash.sh:202
+#: git-stash.sh:241
 #, sh-format
 msgid ""
 "error: unknown option for 'stash save': $option\n"
@@ -9946,122 +10233,140 @@ msgstr ""
 "        Um eine Beschreibung anzugeben, benutzen Sie \"git stash save -- "
 "'$option'\""
 
-#: git-stash.sh:223
+#: git-stash.sh:262
 msgid "No local changes to save"
 msgstr "Keine lokalen Änderungen zum Speichern"
 
-#: git-stash.sh:227
+#: git-stash.sh:268
+msgid ""
+"The following untracked files would NOT be saved but need to be removed by "
+"stash save:"
+msgstr ""
+"Die folgenden unbeobachteten Dateien würden NICHT gespeichert werden,\n"
+"müssen aber durch \"stash save\" entfernt werden:"
+
+#: git-stash.sh:270
+msgid ""
+"Aborting. Consider using either the --force or --include-untracked option."
+msgstr ""
+"Abgebrochen. Benutzen Sie entweder die Option --force oder --include-"
+"untracked."
+
+#: git-stash.sh:274
 msgid "Cannot initialize stash"
 msgstr "Kann \"stash\" nicht initialisieren"
 
-#: git-stash.sh:235
+#: git-stash.sh:278
 msgid "Cannot save the current status"
 msgstr "Kann den aktuellen Status nicht speichern"
 
-#: git-stash.sh:253
+#: git-stash.sh:296
 msgid "Cannot remove worktree changes"
-msgstr "Kann Änderungen am Arbeitsbaum nicht löschen"
+msgstr "Kann Änderungen im Arbeitsverzeichnis nicht löschen"
 
-#: git-stash.sh:352
+#: git-stash.sh:395
 msgid "No stash found."
 msgstr "Kein \"stash\" gefunden."
 
-#: git-stash.sh:359
+#: git-stash.sh:402
 #, sh-format
 msgid "Too many revisions specified: $REV"
-msgstr "Zu viele Revisionen angegeben: $REV"
+msgstr "Zu viele Commits angegeben: $REV"
 
-#: git-stash.sh:365
+#: git-stash.sh:408
 #, sh-format
 msgid "$reference is not valid reference"
 msgstr "$reference ist keine gültige Referenz"
 
-#: git-stash.sh:393
+#: git-stash.sh:436
 #, sh-format
 msgid "'$args' is not a stash-like commit"
-msgstr "'$args' ist keine \"stash\"-artige Version"
+msgstr "'$args' ist kein \"stash\"-artiger Commit"
 
-#: git-stash.sh:404
+#: git-stash.sh:447
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "'$args' ist keine \"stash\"-Referenz"
 
-#: git-stash.sh:412
+#: git-stash.sh:455
 msgid "unable to refresh index"
-msgstr "unfähig die Bereitstellung zu aktualisieren"
+msgstr "unfähig die Staging-Area zu aktualisieren"
 
-#: git-stash.sh:416
+#: git-stash.sh:459
 msgid "Cannot apply a stash in the middle of a merge"
-msgstr ""
-"Kann \"stash\" nicht anwenden, solang eine Zusammenführung im Gange ist"
+msgstr "Kann \"stash\" nicht anwenden, solang ein Merge im Gange ist"
 
-#: git-stash.sh:424
+#: git-stash.sh:467
 msgid "Conflicts in index. Try without --index."
-msgstr "Konflikte in der Bereitstellung. Versuchen Sie es ohne --index."
+msgstr "Konflikte in der Staging-Area. Versuchen Sie es ohne --index."
 
-#: git-stash.sh:426
+#: git-stash.sh:469
 msgid "Could not save index tree"
-msgstr "Konnte Bereitstellungsbaum nicht speichern"
+msgstr "Konnte Staging-Area-Verzeichnis nicht speichern"
 
-#: git-stash.sh:460
+#: git-stash.sh:503
 msgid "Cannot unstage modified files"
-msgstr "Kann geänderte Dateien nicht aus der Bereitstellung herausnehmen"
+msgstr "Kann geänderte Dateien nicht aus der Staging-Area entfernen"
 
-#: git-stash.sh:475
+#: git-stash.sh:518
 msgid "Index was not unstashed."
-msgstr "Bereitstellung wurde nicht ausgelagert."
+msgstr "Staging-Area wurde nicht aus dem Stash zurückgeladen."
 
-#: git-stash.sh:492
+#: git-stash.sh:535
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "Gelöscht ${REV} ($s)"
 
-#: git-stash.sh:493
+#: git-stash.sh:536
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}: Konnte \"stash\"-Eintrag nicht löschen"
 
-#: git-stash.sh:500
+#: git-stash.sh:543
 msgid "No branch name specified"
-msgstr "Kein Zweigname spezifiziert"
+msgstr "Kein Branchname spezifiziert"
 
-#: git-stash.sh:571
+#: git-stash.sh:615
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(Zur Wiederherstellung geben Sie \"git stash apply\" ein)"
 
-#: git-submodule.sh:91
+#: git-submodule.sh:95
 #, sh-format
 msgid "cannot strip one component off url '$remoteurl'"
 msgstr "Kann eine Komponente von URL '$remoteurl' nicht extrahieren"
 
-#: git-submodule.sh:196
+#: git-submodule.sh:237
 #, sh-format
 msgid "No submodule mapping found in .gitmodules for path '$sm_path'"
-msgstr ""
-"Keine Unterprojekt-Zuordnung in .gitmodules für Pfad '$sm_path' gefunden"
+msgstr "Keine Submodul-Zuordnung in .gitmodules für Pfad '$sm_path' gefunden"
 
-#: git-submodule.sh:239
+#: git-submodule.sh:281
 #, sh-format
 msgid "Clone of '$url' into submodule path '$sm_path' failed"
-msgstr "Klonen von '$url' in Unterprojekt-Pfad '$sm_path' fehlgeschlagen"
+msgstr "Klonen von '$url' in Submodul-Pfad '$sm_path' fehlgeschlagen"
 
-#: git-submodule.sh:251
+#: git-submodule.sh:293
 #, sh-format
 msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa"
+msgstr "Git-Verzeichnis '$a' ist Teil des Submodul-Pfades '$b', oder umgekehrt"
+
+#: git-submodule.sh:403
+msgid "Relative path can only be used from the toplevel of the working tree"
 msgstr ""
-"Git-Verzeichnis '$a' ist Teil des Unterprojekt-Pfades '$b', oder umgekehrt"
+"Relative Pfade können nur von der obersten Ebene des Arbeitsverzeichnisses "
+"benutzt werden."
 
-#: git-submodule.sh:349
+#: git-submodule.sh:413
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "repo URL: '$repo' muss absolut sein oder mit ./|../ beginnen"
 
-#: git-submodule.sh:366
+#: git-submodule.sh:430
 #, sh-format
 msgid "'$sm_path' already exists in the index"
-msgstr "'$sm_path' existiert bereits in der Bereitstellung"
+msgstr "'$sm_path' ist bereits zum Commit vorgemerkt"
 
-#: git-submodule.sh:370
+#: git-submodule.sh:434
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -10072,25 +10377,24 @@ msgstr ""
 "$sm_path\n"
 "Benutzen Sie -f wenn Sie diesen wirklich hinzufügen möchten."
 
-#: git-submodule.sh:388
+#: git-submodule.sh:452
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
-msgstr ""
-"Füge existierendes Projektarchiv in '$sm_path' der Bereitstellung hinzu."
+msgstr "Füge existierendes Repository in '$sm_path' der Staging-Area hinzu."
 
-#: git-submodule.sh:390
+#: git-submodule.sh:454
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
-msgstr "'$sm_path' existiert bereits und ist kein gültiges Git-Projektarchiv"
+msgstr "'$sm_path' existiert bereits und ist kein gültiges Git-Repository"
 
-#: git-submodule.sh:398
+#: git-submodule.sh:462
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr ""
-"Ein Git-Verzeichnis für '$sm_name' wurde lokal gefunden mit den Fernarchiv"
-"(en):"
+"Ein Git-Verzeichnis für '$sm_name' wurde lokal gefunden mit den Remote-"
+"Repositories:"
 
-#: git-submodule.sh:400
+#: git-submodule.sh:464
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from"
@@ -10098,15 +10402,15 @@ msgstr ""
 "Wenn Sie dieses lokale Git-Verzeichnis wiederverwenden möchtest, anstatt "
 "erneut zu klonen"
 
-#: git-submodule.sh:402
+#: git-submodule.sh:466
 #, sh-format
 msgid ""
 "use the '--force' option. If the local git directory is not the correct repo"
 msgstr ""
 "benutzen Sie die Option '--force'. Wenn das lokale Git-Verzeichnis nicht das "
-"korrekte Projektarchiv ist"
+"korrekte Repository ist"
 
-#: git-submodule.sh:403
+#: git-submodule.sh:467
 #, sh-format
 msgid ""
 "or you are unsure what this means choose another name with the '--name' "
@@ -10115,228 +10419,282 @@ msgstr ""
 "oder Sie sich unsicher sind, was das bedeutet, wählen Sie einen anderen "
 "Namenmit der Option '--name'."
 
-#: git-submodule.sh:405
+#: git-submodule.sh:469
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
-msgstr "Reaktiviere lokales Git-Verzeichnis für Unterprojekt '$sm_name'."
+msgstr "Reaktiviere lokales Git-Verzeichnis für Submodul '$sm_name'."
 
-#: git-submodule.sh:417
+#: git-submodule.sh:481
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
-msgstr "Unfähig Unterprojekt '$sm_path' auszuchecken"
+msgstr "Unfähig Submodul '$sm_path' auszuchecken"
 
-#: git-submodule.sh:422
+#: git-submodule.sh:486
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
-msgstr "Hinzufügen von Unterprojekt '$sm_path' fehlgeschlagen"
+msgstr "Hinzufügen von Submodul '$sm_path' fehlgeschlagen"
 
-#: git-submodule.sh:431
+#: git-submodule.sh:495
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
-msgstr ""
-"Fehler beim Eintragen von Unterprojekt '$sm_path' in die Konfiguration."
+msgstr "Fehler beim Eintragen von Submodul '$sm_path' in die Konfiguration."
 
-#: git-submodule.sh:474
+#: git-submodule.sh:539
 #, sh-format
-msgid "Entering '$prefix$sm_path'"
-msgstr "Betrete '$prefix$sm_path'"
+msgid "Entering '$prefix$displaypath'"
+msgstr "Betrete '$prefix$displaypath'"
 
-#: git-submodule.sh:488
+#: git-submodule.sh:554
 #, sh-format
-msgid "Stopping at '$sm_path'; script returned non-zero status."
-msgstr "Stoppe bei '$sm_path'; Skript gab nicht-Null Status zurück."
+msgid "Stopping at '$prefix$displaypath'; script returned non-zero status."
+msgstr "Stoppe bei '$prefix$displaypath'; Skript gab nicht-Null Status zurück."
 
-#: git-submodule.sh:532
+#: git-submodule.sh:600
 #, sh-format
-msgid "No url found for submodule path '$sm_path' in .gitmodules"
-msgstr "Keine URL für Unterprojekt-Pfad '$sm_path' in .gitmodules gefunden"
+msgid "No url found for submodule path '$displaypath' in .gitmodules"
+msgstr "Keine URL für Submodul-Pfad '$displaypath' in .gitmodules gefunden"
 
-#: git-submodule.sh:541
+#: git-submodule.sh:609
 #, sh-format
-msgid "Failed to register url for submodule path '$sm_path'"
+msgid "Failed to register url for submodule path '$displaypath'"
 msgstr ""
-"Fehler beim Eintragen der URL für Unterprojekt-Pfad '$sm_path' in die "
+"Fehler beim Eintragen der URL für Submodul-Pfad '$displaypath' in die "
 "Konfiguration."
 
-#: git-submodule.sh:543
+#: git-submodule.sh:611
 #, sh-format
-msgid "Submodule '$name' ($url) registered for path '$sm_path'"
+msgid "Submodule '$name' ($url) registered for path '$displaypath'"
 msgstr ""
-"Unterprojekt '$name' ($url) für Pfad '$sm_path' in die Konfiguration "
-"eingetragen"
+"Submodul '$name' ($url) für Pfad '$displaypath' in die Konfiguration "
+"eingetragen."
 
-#: git-submodule.sh:551
+#: git-submodule.sh:619
 #, sh-format
-msgid "Failed to register update mode for submodule path '$sm_path'"
+msgid "Failed to register update mode for submodule path '$displaypath'"
 msgstr ""
-"Fehler bei Änderung des Aktualisierungsmodus für Unterprojekt-Pfad "
-"'$sm_path' in der Konfiguration."
+"Fehler bei Änderung des Aktualisierungsmodus für Submodul-Pfad "
+"'$displaypath' in der Konfiguration."
 
-#: git-submodule.sh:588
+#: git-submodule.sh:656
 #, sh-format
 msgid "Use '.' if you really want to deinitialize all submodules"
 msgstr ""
-"Verwenden Sie '.' wenn Sie wirklich alle Unterprojekte\n"
+"Verwenden Sie '.' wenn Sie wirklich alle Submodule\n"
 "deinitialisieren möchten."
 
-#: git-submodule.sh:603
+#: git-submodule.sh:673
 #, sh-format
-msgid "Submodule work tree '$sm_path' contains a .git directory"
+msgid "Submodule work tree '$displaypath' contains a .git directory"
 msgstr ""
-"Arbeitsbaum des Unterprojekts in '$sm_path' enthält ein .git-Verzeichnis"
+"Arbeitsverzeichnis des Submoduls in '$displaypath' enthält ein .git-"
+"Verzeichnis"
 
-#: git-submodule.sh:604
+#: git-submodule.sh:674
 #, sh-format
 msgid ""
 "(use 'rm -rf' if you really want to remove it including all of its history)"
 msgstr ""
-"(benutzen Sie 'rm -rf' wenn Sie dieses Unterprojekt wirklich mitsamt\n"
+"(benutzen Sie 'rm -rf' wenn Sie dieses Submodul wirklich mitsamt\n"
 "seiner Historie löschen möchten)"
 
-#: git-submodule.sh:610
+#: git-submodule.sh:680
 #, sh-format
 msgid ""
-"Submodule work tree '$sm_path' contains local modifications; use '-f' to "
+"Submodule work tree '$displaypath' contains local modifications; use '-f' to "
 "discard them"
 msgstr ""
-"Arbeitsbaum von Unterprojekt in '$sm_path' enthält lokale Änderungen; "
+"Arbeitsverzeichnis von Submodul in '$displaypath' enthält lokale Änderungen; "
 "verwenden Sie '-f' um diese zu verwerfen"
 
-#: git-submodule.sh:613
+#: git-submodule.sh:683
 #, sh-format
-msgid "Cleared directory '$sm_path'"
-msgstr "Verzeichnis '$sm_path' bereinigt."
+msgid "Cleared directory '$displaypath'"
+msgstr "Verzeichnis '$displaypath' bereinigt."
 
-#: git-submodule.sh:614
+#: git-submodule.sh:684
 #, sh-format
-msgid "Could not remove submodule work tree '$sm_path'"
-msgstr "Konnte Arbeitsbaum des Unterprojektes in '$sm_path' nicht löschen."
+msgid "Could not remove submodule work tree '$displaypath'"
+msgstr ""
+"Konnte Arbeitsverzeichnis des Submoduls in '$displaypath' nicht löschen."
 
-#: git-submodule.sh:617
+#: git-submodule.sh:687
 #, sh-format
-msgid "Could not create empty submodule directory '$sm_path'"
+msgid "Could not create empty submodule directory '$displaypath'"
 msgstr ""
-"Konnte kein leeres Verzeichnis für Unterprojekt in '$sm_path' erstellen."
+"Konnte kein leeres Verzeichnis für Submodul in '$displaypath' erstellen."
 
-#: git-submodule.sh:626
+#: git-submodule.sh:696
 #, sh-format
-msgid "Submodule '$name' ($url) unregistered for path '$sm_path'"
+msgid "Submodule '$name' ($url) unregistered for path '$displaypath'"
 msgstr ""
-"Unterprojekt '$name' ($url) für Pfad '$sm_path' wurde aus der Konfiguration "
+"Submodul '$name' ($url) für Pfad '$displaypath' wurde aus der Konfiguration "
 "entfernt."
 
-#: git-submodule.sh:731
+#: git-submodule.sh:811
 #, sh-format
 msgid ""
-"Submodule path '$prefix$sm_path' not initialized\n"
+"Submodule path '$displaypath' not initialized\n"
 "Maybe you want to use 'update --init'?"
 msgstr ""
-"Unterprojekt-Pfad '$prefix$sm_path' ist nicht initialisiert.\n"
+"Submodul-Pfad '$displaypath' ist nicht initialisiert.\n"
 "Vielleicht möchten Sie 'update --init' benutzen?"
 
-#: git-submodule.sh:744
+#: git-submodule.sh:824
 #, sh-format
-msgid "Unable to find current revision in submodule path '$prefix$sm_path'"
-msgstr ""
-"Konnte aktuelle Revision in Unterprojekt-Pfad '$prefix$sm_path' nicht finden."
+msgid "Unable to find current revision in submodule path '$displaypath'"
+msgstr "Konnte aktuellen Commit in Submodul-Pfad '$displaypath' nicht finden."
 
-#: git-submodule.sh:753
+#: git-submodule.sh:833
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
-msgstr "Konnte in Unterprojekt-Pfad '$sm_path' nicht anfordern"
+msgstr "Konnte \"fetch\" in Submodul-Pfad '$sm_path' nicht ausführen"
 
-#: git-submodule.sh:777
+#: git-submodule.sh:857
 #, sh-format
-msgid "Unable to fetch in submodule path '$prefix$sm_path'"
-msgstr "Konnte in Unterprojekt-Pfad '$prefix$sm_path' nicht anfordern"
+msgid "Unable to fetch in submodule path '$displaypath'"
+msgstr "Konnte \"fetch\" in Submodul-Pfad '$displaypath' nicht ausführen"
 
-#: git-submodule.sh:791
+#: git-submodule.sh:871
 #, sh-format
-msgid "Unable to rebase '$sha1' in submodule path '$prefix$sm_path'"
-msgstr ""
-"Neuaufbau von '$sha1' in Unterprojekt-Pfad '$prefix$sm_path' nicht möglich"
+msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
+msgstr "Rebase auf '$sha1' in Submodul-Pfad '$displaypath' nicht möglich"
 
-#: git-submodule.sh:792
+#: git-submodule.sh:872
 #, sh-format
-msgid "Submodule path '$prefix$sm_path': rebased into '$sha1'"
-msgstr "Unterprojekt-Pfad '$prefix$sm_path': neu aufgebaut in '$sha1'"
+msgid "Submodule path '$displaypath': rebased into '$sha1'"
+msgstr "Submodul-Pfad '$displaypath': Rebase auf '$sha1'"
 
-#: git-submodule.sh:797
+#: git-submodule.sh:877
 #, sh-format
-msgid "Unable to merge '$sha1' in submodule path '$prefix$sm_path'"
+msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
+msgstr "Merge von '$sha1' in Submodul-Pfad '$displaypath' fehlgeschlagen"
+
+#: git-submodule.sh:878
+#, sh-format
+msgid "Submodule path '$displaypath': merged in '$sha1'"
+msgstr "Submodul-Pfad '$displaypath': zusammengeführt in '$sha1'"
+
+#: git-submodule.sh:883
+#, sh-format
+msgid ""
+"Execution of '$command $sha1' failed in submodule  path '$prefix$sm_path'"
 msgstr ""
-"Zusammenführung von '$sha1' in Unterprojekt-Pfad '$prefix$sm_path' "
+"Ausführung von '$command $sha1' in Submodul-Pfad '$prefix$sm_path' "
 "fehlgeschlagen"
 
-#: git-submodule.sh:798
+#: git-submodule.sh:884
 #, sh-format
-msgid "Submodule path '$prefix$sm_path': merged in '$sha1'"
-msgstr "Unterprojekt-Pfad '$prefix$sm_path': zusammengeführt in '$sha1'"
+msgid "Submodule path '$prefix$sm_path': '$command $sha1'"
+msgstr "Submodul-Pfad '$prefix$sm_path': '$command $sha1'"
 
-#: git-submodule.sh:803
+#: git-submodule.sh:889
 #, sh-format
-msgid "Unable to checkout '$sha1' in submodule path '$prefix$sm_path'"
-msgstr ""
-"Konnte '$sha1' in Unterprojekt-Pfad '$prefix$sm_path' nicht auschecken."
+msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
+msgstr "Konnte '$sha1' in Submodul-Pfad '$displaypath' nicht auschecken."
 
-#: git-submodule.sh:804
+#: git-submodule.sh:890
 #, sh-format
-msgid "Submodule path '$prefix$sm_path': checked out '$sha1'"
-msgstr "Unterprojekt-Pfad: '$prefix$sm_path': '$sha1' ausgecheckt"
+msgid "Submodule path '$displaypath': checked out '$sha1'"
+msgstr "Submodul-Pfad: '$displaypath': '$sha1' ausgecheckt"
 
-#: git-submodule.sh:831
+#: git-submodule.sh:917
 #, sh-format
-msgid "Failed to recurse into submodule path '$prefix$sm_path'"
-msgstr "Fehler bei Rekursion in Unterprojekt-Pfad '$prefix$sm_path'"
+msgid "Failed to recurse into submodule path '$displaypath'"
+msgstr "Fehler bei Rekursion in Submodul-Pfad '$displaypath'"
 
-#: git-submodule.sh:939
+#: git-submodule.sh:1025
 msgid "The --cached option cannot be used with the --files option"
 msgstr ""
 "Die Optionen --cached und --files können nicht gemeinsam verwendet werden."
 
 #. unexpected type
-#: git-submodule.sh:979
+#: git-submodule.sh:1066
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "unerwarteter Modus $mod_dst"
 
-#: git-submodule.sh:997
+#: git-submodule.sh:1086
 #, sh-format
-msgid "  Warn: $name doesn't contain commit $sha1_src"
-msgstr "  Warnung: $name beinhaltet nicht Version $sha1_src"
+msgid "  Warn: $display_name doesn't contain commit $sha1_src"
+msgstr "  Warnung: $display_name beinhaltet nicht Commit $sha1_src"
 
-#: git-submodule.sh:1000
+#: git-submodule.sh:1089
 #, sh-format
-msgid "  Warn: $name doesn't contain commit $sha1_dst"
-msgstr "  Warnung: $name beinhaltet nicht Version $sha1_dst"
+msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
+msgstr "  Warnung: $display_name beinhaltet nicht Commit $sha1_dst"
 
-#: git-submodule.sh:1003
+#: git-submodule.sh:1092
 #, sh-format
-msgid "  Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
+msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
 msgstr ""
-"  Warnung: $name beinhaltet nicht die Versionen $sha1_src und $sha1_dst"
+"  Warnung: $display_name beinhaltet nicht die Commits $sha1_src und $sha1_dst"
 
-#: git-submodule.sh:1028
+#: git-submodule.sh:1117
 msgid "blob"
 msgstr "Blob"
 
-#: git-submodule.sh:1066
+#: git-submodule.sh:1155
 msgid "Submodules changed but not updated:"
-msgstr "Unterprojekte geändert, aber nicht aktualisiert:"
+msgstr "Submodule geändert, aber nicht aktualisiert:"
 
-#: git-submodule.sh:1068
+#: git-submodule.sh:1157
 msgid "Submodule changes to be committed:"
-msgstr "Änderungen in Unterprojekt zum Eintragen:"
+msgstr "Änderungen in Submodul zum Committen:"
 
-#: git-submodule.sh:1153
+#: git-submodule.sh:1242
 #, sh-format
 msgid "Failed to recurse into submodule path '$sm_path'"
-msgstr "Fehler bei Rekursion in Unterprojekt-Pfad '$sm_path'"
+msgstr "Fehler bei Rekursion in Submodul-Pfad '$sm_path'"
 
-#: git-submodule.sh:1216
+#: git-submodule.sh:1306
 #, sh-format
-msgid "Synchronizing submodule url for '$prefix$sm_path'"
-msgstr "Synchronisiere Unterprojekt-URL für '$prefix$sm_path'"
+msgid "Synchronizing submodule url for '$displaypath'"
+msgstr "Synchronisiere Submodul-URL für '$displaypath'"
+
+#~ msgid "  (fix conflicts and then run \"git am --resolved\")"
+#~ msgstr ""
+#~ "  (beheben Sie die Konflikte und führen Sie dann \"git am --resolved\" "
+#~ "aus)"
+
+#~ msgid "  (all conflicts fixed: run \"git commit\")"
+#~ msgstr "  (alle Konflikte behoben: führen Sie \"git commit\" aus)"
+
+#~ msgid "more than %d trees given: '%s'"
+#~ msgstr "Mehr als %d \"Tree\"-Objekte angegeben: '%s'"
+
+#~ msgid "You cannot combine --no-ff with --ff-only."
+#~ msgstr "Sie können --no-ff nicht mit --ff--only kombinieren."
+
+#~ msgid ""
+#~ "submodule '%s' (or one of its nested submodules) uses a .git directory\n"
+#~ "(use 'rm -rf' if you really want to remove it including all of its "
+#~ "history)"
+#~ msgstr ""
+#~ "Submodul '%s' (oder ein geschachteltes Submodul hiervon) verwendet\n"
+#~ "ein .git-Verzeichnis (benutzen Sie 'rm -rf' wenn Sie dieses wirklich "
+#~ "mitsamt\n"
+#~ "seiner Historie löschen möchten)"
+
+#~ msgid ""
+#~ "'%s' has changes staged in the index\n"
+#~ "(use --cached to keep the file, or -f to force removal)"
+#~ msgstr ""
+#~ "'%s' hat zum Commit vorgemerkte Änderungen\n"
+#~ "(benutzen Sie --cached um die Datei zu behalten, oder -f um die "
+#~ "Entfernung zu erzwingen)"
+
+#~ msgid "show commits where no parent comes before its children"
+#~ msgstr ""
+#~ "zeigt Commits, bei denen kein Eltern-Commit vor seinem Kind-Commit kommt"
+
+#~ msgid "show the HEAD reference"
+#~ msgstr "zeigt Referenz von HEAD"
+
+#~ msgid "Unable to fetch in submodule path '$prefix$sm_path'"
+#~ msgstr "Konnte \"fetch\" in Submodul-Pfad '$prefix$sm_path' nicht ausführen"
+
+#~ msgid "Failed to recurse into submodule path '$prefix$sm_path'"
+#~ msgstr "Fehler bei Rekursion in Submodul-Pfad '$prefix$sm_path'"
 
 #~ msgid "It took %.2f seconds to enumerate untracked files.  'status -uno'"
 #~ msgstr ""
diff --git a/po/fr.po b/po/fr.po
new file mode 100644 (file)
index 0000000..2cdb6f9
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,9823 @@
+# French translations for Git.
+# Copyright (C) 2013 Jean-Noël Avila <jn.avila@free.fr>
+# This file is distributed under the same license as the Git package.
+# Jean-Noël Avila <jn.avila@free.fr>, 2013.
+# Sébastien Helleu <flashcode@flashtux.org>, 2013.
+#
+# French translations of common Git words used in this file:
+#
+#   English          |  French
+#   -----------------+---------------------------------
+#   #NN              |  n°NN
+#   a commit         |  un commit
+#   backward         |
+#     compatibility  |  rétrocompatibilité
+#   bare repository  |  dépôt nu
+#   bisect           |  bissection
+#   blob             |  blob
+#   bug              |  bogue
+#   bundle           |  colis
+#   cherry-pick      |  picorer
+#   dangling         |  en suspens
+#   debugging        |  débogage
+#   fast-forward     |  avance rapide
+#   fast-forwarded   |  mis à jour en avance rapide
+#   glob             |  glob
+#   hash             |  hachage
+#   HEAD             |  HEAD (genre féminin)
+#   hook             |  hook
+#   hunk             |  section
+#   merge            |  fusion
+#   pattern          |  motif
+#   repository       |  dépôt
+#   remote           |  distante (ou serveur distant)
+#   revision         |  révision
+#   stash            |  remisage
+#   tag              |  étiquette
+#   template         |  modèle
+#   to checkout      |  extraire
+#   to commit        |  valider
+#   to fetch         |  rapatrier
+#   to prune         |  élaguer
+#   to push          |  pousser
+#   to rebase        |  rebaser
+#   to stash         |  remiser
+#   to track         |  suivre
+#   to unstage       |  désindexer
+#   tree-ish         |  arbre
+#   upstream         |  amont
+#   worktree /       |
+#   work(ing) tree   |  copie de travail
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: git\n"
+"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
+"POT-Creation-Date: 2013-04-30 08:25+0800\n"
+"PO-Revision-Date: 2013-08-27 19:43+0200\n"
+"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
+"Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
+"Language: fr\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 ?0 : 1;\n"
+"X-Generator: Poedit 1.5.4\n"
+
+#: advice.c:53
+#, c-format
+msgid "hint: %.*s\n"
+msgstr "astuce: %.*s\n"
+
+#.
+#. * Message used both when 'git commit' fails and when
+#. * other commands doing a merge do.
+#.
+#: advice.c:83
+msgid ""
+"Fix them up in the work tree,\n"
+"and then use 'git add/rm <file>' as\n"
+"appropriate to mark resolution and make a commit,\n"
+"or use 'git commit -a'."
+msgstr ""
+"Corrigez-les dans la copie de travail,\n"
+"et utilisez 'git add/rm <fichier>' si\n"
+"nécessaire pour marquer la résolution et valider,\n"
+"ou utilisez 'git commit -a'."
+
+#: archive.c:10
+msgid "git archive [options] <tree-ish> [<path>...]"
+msgstr "git archive [options] <arbre> [<chemin>...]"
+
+#: archive.c:11
+msgid "git archive --list"
+msgstr "git archive --list"
+
+#: archive.c:12
+msgid ""
+"git archive --remote <repo> [--exec <cmd>] [options] <tree-ish> [<path>...]"
+msgstr "git archive --remote <dépôt> [--exec <commande>] [options] <arbre> [<chemin>...]"
+
+#: archive.c:13
+msgid "git archive --remote <repo> [--exec <cmd>] --list"
+msgstr "git archive --remote <dépôt> [--exec <commande>] --list"
+
+#: archive.c:323
+msgid "fmt"
+msgstr "fmt"
+
+#: archive.c:323
+msgid "archive format"
+msgstr "format d'archive"
+
+#: archive.c:324 builtin/log.c:1126
+msgid "prefix"
+msgstr "préfixe"
+
+#: archive.c:325
+msgid "prepend prefix to each pathname in the archive"
+msgstr "préfixer chaque chemin de fichier dans l'archive"
+
+#: archive.c:326 builtin/archive.c:88 builtin/blame.c:2371
+#: builtin/blame.c:2372 builtin/config.c:55 builtin/fast-export.c:665
+#: builtin/fast-export.c:667 builtin/grep.c:715 builtin/hash-object.c:77
+#: builtin/ls-files.c:490 builtin/ls-files.c:493 builtin/notes.c:536
+#: builtin/notes.c:693 builtin/read-tree.c:107 parse-options.h:149
+msgid "file"
+msgstr "fichier"
+
+#: archive.c:327 builtin/archive.c:89
+msgid "write the archive to this file"
+msgstr "écrire l'archive dans ce fichier"
+
+#: archive.c:329
+msgid "read .gitattributes in working directory"
+msgstr "lire .gitattributes dans le répertoire de travail"
+
+#: archive.c:330
+msgid "report archived files on stderr"
+msgstr "afficher les fichiers archivés sur stderr"
+
+#: archive.c:331
+msgid "store only"
+msgstr "stockage seulement"
+
+#: archive.c:332
+msgid "compress faster"
+msgstr "compression rapide"
+
+#: archive.c:340
+msgid "compress better"
+msgstr "compression efficace"
+
+#: archive.c:343
+msgid "list supported archive formats"
+msgstr "lister les formats d'archive supportés"
+
+#: archive.c:345 builtin/archive.c:90 builtin/clone.c:86
+msgid "repo"
+msgstr "dépôt"
+
+#: archive.c:346 builtin/archive.c:91
+msgid "retrieve the archive from remote repository <repo>"
+msgstr "récupérer l'archive depuis le dépôt distant <dépôt>"
+
+#: archive.c:347 builtin/archive.c:92 builtin/notes.c:615
+msgid "command"
+msgstr "commande"
+
+#: archive.c:348 builtin/archive.c:93
+msgid "path to the remote git-upload-archive command"
+msgstr "chemin vers la commande distante git-upload-archive"
+
+#: attr.c:259
+msgid ""
+"Negative patterns are ignored in git attributes\n"
+"Use '\\!' for literal leading exclamation."
+msgstr ""
+"Les motifs de négation sont ignorés dans les attributs git\n"
+"Utilisez '\\!' pour un point d'exclamation littéral."
+
+#: branch.c:60
+#, c-format
+msgid "Not setting branch %s as its own upstream."
+msgstr "La branche %s ne peut pas être sa propre branche amont."
+
+#: branch.c:82
+#, c-format
+msgid "Branch %s set up to track remote branch %s from %s by rebasing."
+msgstr "La branche %s est paramétrée pour suivre la branche distante %s de %s en rebasant."
+
+#: branch.c:83
+#, c-format
+msgid "Branch %s set up to track remote branch %s from %s."
+msgstr "La branche %s est paramétrée pour suivre la branche distante %s depuis %s."
+
+#: branch.c:87
+#, c-format
+msgid "Branch %s set up to track local branch %s by rebasing."
+msgstr "La branche %s est paramétrée pour suivre la branche locale %s en rebasant."
+
+#: branch.c:88
+#, c-format
+msgid "Branch %s set up to track local branch %s."
+msgstr "La branche %s est paramétrée pour suivre la branche locale %s."
+
+#: branch.c:92
+#, c-format
+msgid "Branch %s set up to track remote ref %s by rebasing."
+msgstr "La branche %s est paramétrée pour suivre la référence distante %s en rebasant."
+
+#: branch.c:93
+#, c-format
+msgid "Branch %s set up to track remote ref %s."
+msgstr "La branche %s est paramétrée pour suivre la référence distante %s."
+
+#: branch.c:97
+#, c-format
+msgid "Branch %s set up to track local ref %s by rebasing."
+msgstr "La branche %s est paramétrée pour suivre la référence locale %s en rebasant."
+
+#: branch.c:98
+#, c-format
+msgid "Branch %s set up to track local ref %s."
+msgstr "La branche %s est paramétrée pour suivre la référence locale %s."
+
+#: branch.c:118
+#, c-format
+msgid "Tracking not set up: name too long: %s"
+msgstr "Suivi de branche non paramétré : le nom est trop long : %s"
+
+#: branch.c:137
+#, c-format
+msgid "Not tracking: ambiguous information for ref %s"
+msgstr "Pas de suivi : information ambiguë pour la référence %s"
+
+#: branch.c:182
+#, c-format
+msgid "'%s' is not a valid branch name."
+msgstr "'%s' n'est pas un nom de branche valide."
+
+#: branch.c:187
+#, c-format
+msgid "A branch named '%s' already exists."
+msgstr "Une branche nommée '%s' existe déjà."
+
+#: branch.c:195
+msgid "Cannot force update the current branch."
+msgstr "Impossible de forcer la mise à jour de la branche courante."
+
+#: branch.c:201
+#, c-format
+msgid "Cannot setup tracking information; starting point '%s' is not a branch."
+msgstr "Impossible de paramétrer le suivi de branche ; le point de départ '%s' n'est pas une branche."
+
+#: branch.c:203
+#, c-format
+msgid "the requested upstream branch '%s' does not exist"
+msgstr "la branche amont demandée '%s' n'existe pas"
+
+#: branch.c:205
+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 ""
+"\n"
+"Si vous comptez baser votre travail sur une branche\n"
+"amont qui existe déjà sur le serveur distant, vous pourriez\n"
+"devoir lancer \"git fetch\" pour la récupérer.\n"
+"\n"
+"Si vous comptez pousser une nouvelle branche locale qui suivra\n"
+"sa jumelle distante, vous souhaiterez utiliser \"git push -u\"\n"
+"pour paramétrer le suivi distant en même temps que vous poussez."
+
+#: branch.c:250
+#, c-format
+msgid "Not a valid object name: '%s'."
+msgstr "Nom d'objet invalide : '%s'."
+
+#: branch.c:270
+#, c-format
+msgid "Ambiguous object name: '%s'."
+msgstr "Nom d'objet ambigu : '%s'."
+
+#: branch.c:275
+#, c-format
+msgid "Not a valid branch point: '%s'."
+msgstr "Point d'embranchement invalide : '%s'."
+
+#: branch.c:281
+msgid "Failed to lock ref for update"
+msgstr "Échec du verrouillage de la référence pour mise à jour"
+
+#: branch.c:299
+msgid "Failed to write ref"
+msgstr "Échec de l'écriture de la référence"
+
+#: bundle.c:36
+#, c-format
+msgid "'%s' does not look like a v2 bundle file"
+msgstr "'%s' ne semble pas être un fichier bundle v2"
+
+#: bundle.c:63
+#, c-format
+msgid "unrecognized header: %s%s (%d)"
+msgstr "en-tête non reconnu : %s%s (%d)"
+
+#: bundle.c:89 builtin/commit.c:676
+#, c-format
+msgid "could not open '%s'"
+msgstr "impossible d'ouvrir '%s'"
+
+#: bundle.c:140
+msgid "Repository lacks these prerequisite commits:"
+msgstr "Le dépôt ne dispose pas des commits prérequis :"
+
+#: bundle.c:164 sequencer.c:651 sequencer.c:1101 builtin/log.c:300
+#: builtin/log.c:770 builtin/log.c:1344 builtin/log.c:1570 builtin/merge.c:349
+#: builtin/shortlog.c:155
+msgid "revision walk setup failed"
+msgstr "échec de la préparation du parcours des révisions"
+
+#: bundle.c:186
+#, c-format
+msgid "The bundle contains this ref:"
+msgid_plural "The bundle contains these %d refs:"
+msgstr[0] "Le colis contient cette référence :"
+msgstr[1] "Le colis contient ces %d références :"
+
+#: bundle.c:193
+msgid "The bundle records a complete history."
+msgstr "Le colis enregistre l'historique complet."
+
+#: bundle.c:195
+#, c-format
+msgid "The bundle requires this ref:"
+msgid_plural "The bundle requires these %d refs:"
+msgstr[0] "Le colis exige cette référence :"
+msgstr[1] "Le colis exige ces %d références :"
+
+#: bundle.c:294
+msgid "rev-list died"
+msgstr "rev-list a disparu"
+
+#: bundle.c:300 builtin/log.c:1255 builtin/shortlog.c:258
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "argument non reconnu : %s"
+
+#: bundle.c:335
+#, 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:380
+msgid "Refusing to create empty bundle."
+msgstr "Refus de créer un colis vide."
+
+#: bundle.c:398
+msgid "Could not spawn pack-objects"
+msgstr "Impossible de créer des objets groupés"
+
+#: bundle.c:416
+msgid "pack-objects died"
+msgstr "les objets groupés ont disparu"
+
+#: bundle.c:419
+#, c-format
+msgid "cannot create '%s'"
+msgstr "impossible de créer '%s'"
+
+#: bundle.c:441
+msgid "index-pack died"
+msgstr "l'index de groupe a disparu"
+
+#: commit.c:50
+#, c-format
+msgid "could not parse %s"
+msgstr "impossible d'analyser %s"
+
+#: commit.c:52
+#, c-format
+msgid "%s %s is not a commit!"
+msgstr "%s %s n'est pas un commit !"
+
+#: compat/obstack.c:406 compat/obstack.c:408
+msgid "memory exhausted"
+msgstr "plus de mémoire"
+
+#: connected.c:39
+msgid "Could not run 'git rev-list'"
+msgstr "Impossible de lancer 'git rev-list'"
+
+#: connected.c:48
+#, c-format
+msgid "failed write to rev-list: %s"
+msgstr "impossible d'écrire dans la rev-list : %s"
+
+#: connected.c:56
+#, c-format
+msgid "failed to close rev-list's stdin: %s"
+msgstr "impossible de fermer le stdin du rev-list : %s"
+
+#: date.c:95
+msgid "in the future"
+msgstr "dans le futur"
+
+#: date.c:101
+#, c-format
+msgid "%lu second ago"
+msgid_plural "%lu seconds ago"
+msgstr[0] "il y a %lu seconde"
+msgstr[1] "il y a %lu secondes"
+
+#: date.c:108
+#, c-format
+msgid "%lu minute ago"
+msgid_plural "%lu minutes ago"
+msgstr[0] "il y a %lu minute"
+msgstr[1] "il y a %lu minutes"
+
+#: date.c:115
+#, c-format
+msgid "%lu hour ago"
+msgid_plural "%lu hours ago"
+msgstr[0] "il y a %lu heure"
+msgstr[1] "il y a %lu heures"
+
+#: date.c:122
+#, c-format
+msgid "%lu day ago"
+msgid_plural "%lu days ago"
+msgstr[0] "il y a %lu jour"
+msgstr[1] "il y a %lu jours"
+
+#: date.c:128
+#, c-format
+msgid "%lu week ago"
+msgid_plural "%lu weeks ago"
+msgstr[0] "il y a %lu semaine"
+msgstr[1] "il y a %lu semaines"
+
+#: date.c:135
+#, c-format
+msgid "%lu month ago"
+msgid_plural "%lu months ago"
+msgstr[0] "il y a %lu mois"
+msgstr[1] "il y a %lu mois"
+
+#: date.c:146
+#, c-format
+msgid "%lu year"
+msgid_plural "%lu years"
+msgstr[0] "%lu an"
+msgstr[1] "%lu ans"
+
+#: date.c:149
+#, c-format
+msgid "%s, %lu month ago"
+msgid_plural "%s, %lu months ago"
+msgstr[0] "il y a %s et %lu mois"
+msgstr[1] "il y a %s et %lu mois"
+
+#: date.c:154 date.c:159
+#, c-format
+msgid "%lu year ago"
+msgid_plural "%lu years ago"
+msgstr[0] "il y a %lu an"
+msgstr[1] "il y a %lu ans"
+
+#: diff.c:112
+#, c-format
+msgid "  Failed to parse dirstat cut-off percentage '%s'\n"
+msgstr "  Impossible d'analyser le pourcentage de modification de dirstat '%s'\n"
+
+#: diff.c:117
+#, c-format
+msgid "  Unknown dirstat parameter '%s'\n"
+msgstr "  Paramètre dirstat inconnu '%s'\n"
+
+#: diff.c:210
+#, c-format
+msgid "Unknown value for 'diff.submodule' config variable: '%s'"
+msgstr "Valeur inconnue pour la variable de configuration 'diff.submodule' : '%s'"
+
+#: diff.c:260
+#, c-format
+msgid ""
+"Found errors in 'diff.dirstat' config variable:\n"
+"%s"
+msgstr "Erreurs dans la variable de configuration 'diff.dirstat' :\n"
+"%s"
+
+#: diff.c:3481
+#, c-format
+msgid ""
+"Failed to parse --dirstat/-X option parameter:\n"
+"%s"
+msgstr "Impossible d'analyser le paramètre de l'option --dirstat/-X :\n"
+"%s"
+
+#: diff.c:3495
+#, c-format
+msgid "Failed to parse --submodule option parameter: '%s'"
+msgstr "Impossible d'analyser le paramètre de l'option --submodule : '%s'"
+
+#: gpg-interface.c:59 gpg-interface.c:131
+msgid "could not run gpg."
+msgstr "impossible de lancer gpg."
+
+#: gpg-interface.c:71
+msgid "gpg did not accept the data"
+msgstr "gpg n'a pas accepté les données"
+
+#: gpg-interface.c:82
+msgid "gpg failed to sign the data"
+msgstr "gpg n'a pas pu signer les données"
+
+#: gpg-interface.c:115
+#, c-format
+msgid "could not create temporary file '%s': %s"
+msgstr "impossible de créer un fichier temporaire '%s' : %s"
+
+#: gpg-interface.c:118
+#, c-format
+msgid "failed writing detached signature to '%s': %s"
+msgstr "impossible d'écrire la signature détachée dans '%s' : %s"
+
+#: grep.c:1623
+#, c-format
+msgid "'%s': unable to read %s"
+msgstr "'%s' : lecture de %s impossible"
+
+#: grep.c:1640
+#, c-format
+msgid "'%s': %s"
+msgstr "'%s' : %s"
+
+#: grep.c:1651
+#, c-format
+msgid "'%s': short read %s"
+msgstr "'%s' : lecture tronquée %s"
+
+#: help.c:212
+#, c-format
+msgid "available git commands in '%s'"
+msgstr "commandes git disponibles dans '%s'"
+
+#: help.c:219
+msgid "git commands available from elsewhere on your $PATH"
+msgstr "commandes git disponibles depuis un autre endroit de votre $PATH"
+
+#: help.c:235
+msgid "The most commonly used git commands are:"
+msgstr "Les commandes git les plus utilisées sont :"
+
+#: help.c:292
+#, 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' semble être une commande git, mais elle n'a pas pu\n"
+"être exécutée. Peut-être git-%s est-elle cassée ?"
+
+#: help.c:349
+msgid "Uh oh. Your system reports no Git commands at all."
+msgstr "Ahem. Votre système n'indique aucune commande Git."
+
+#: help.c:371
+#, c-format
+msgid ""
+"WARNING: You called a Git command named '%s', which does not exist.\n"
+"Continuing under the assumption that you meant '%s'"
+msgstr "ATTENTION : vous avez invoqué une commande Git nommée '%s' qui n'existe pas.\n"
+"Poursuite en supposant que vous avez voulu dire '%s'"
+
+#: help.c:376
+#, c-format
+msgid "in %0.1f seconds automatically..."
+msgstr "dans %0.1f secondes automatiquement..."
+
+#: help.c:383
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr "git : '%s' n'est pas une commande git. Voir 'git --help'."
+
+#: help.c:387
+msgid ""
+"\n"
+"Did you mean this?"
+msgid_plural ""
+"\n"
+"Did you mean one of these?"
+msgstr[0] "\n"
+"Vouliez-vous dire cela ?"
+msgstr[1] "\nVouliez-vous dire un de ceux-là ?"
+
+#: merge.c:56
+msgid "failed to read the cache"
+msgstr "impossible de lire le cache"
+
+#: merge.c:110 builtin/checkout.c:365 builtin/checkout.c:566
+#: builtin/clone.c:645
+msgid "unable to write new index file"
+msgstr "impossible d'écrire le nouveau fichier d'index"
+
+#: merge-recursive.c:190
+#, c-format
+msgid "(bad commit)\n"
+msgstr "(mauvais commit)\n"
+
+#: merge-recursive.c:206
+#, c-format
+msgid "addinfo_cache failed for path '%s'"
+msgstr "échec de addinfo_cache pour le chemin '%s'"
+
+#: merge-recursive.c:268
+msgid "error building trees"
+msgstr "erreur de construction des arbres"
+
+#: merge-recursive.c:672
+#, c-format
+msgid "failed to create path '%s'%s"
+msgstr "impossible de créer le chemin '%s' %s"
+
+#: merge-recursive.c:683
+#, 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"
+
+#. something else exists
+#. .. but not some other error (who really cares what?)
+#: merge-recursive.c:697 merge-recursive.c:718
+msgid ": perhaps a D/F conflict?"
+msgstr ": peut-être un conflit D/F ?"
+
+#: merge-recursive.c:708
+#, c-format
+msgid "refusing to lose untracked file at '%s'"
+msgstr "refus de perdre le fichier non suivi '%s'"
+
+#: merge-recursive.c:748
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "impossible de lire l'objet %s '%s'"
+
+#: merge-recursive.c:750
+#, c-format
+msgid "blob expected for %s '%s'"
+msgstr "blob attendu pour %s '%s'"
+
+#: merge-recursive.c:773 builtin/clone.c:313
+#, c-format
+msgid "failed to open '%s'"
+msgstr "échec à l'ouverture de '%s'"
+
+#: merge-recursive.c:781
+#, c-format
+msgid "failed to symlink '%s'"
+msgstr "échec à la création du lien symbolique '%s'"
+
+#: merge-recursive.c:784
+#, c-format
+msgid "do not know what to do with %06o %s '%s'"
+msgstr "ne sait pas traiter %06o %s '%s'"
+
+#: merge-recursive.c:922
+msgid "Failed to execute internal merge"
+msgstr "Échec à l'exécution de la fusion interne"
+
+#: merge-recursive.c:926
+#, c-format
+msgid "Unable to add %s to database"
+msgstr "Impossible d'ajouter %s à la base de données"
+
+#: merge-recursive.c:942
+msgid "unsupported object type in the tree"
+msgstr "type d'objet non supporté dans l'arbre"
+
+#: merge-recursive.c:1021 merge-recursive.c:1035
+#, 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:1027 merge-recursive.c:1040
+#, 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:1081
+msgid "rename"
+msgstr "renommage"
+
+#: merge-recursive.c:1081
+msgid "renamed"
+msgstr "renommé"
+
+#: merge-recursive.c:1137
+#, c-format
+msgid "%s is a directory in %s adding as %s instead"
+msgstr "%s est un répertoire dans %s ajouté plutôt comme %s"
+
+#: merge-recursive.c:1159
+#, c-format
+msgid ""
+"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
+"\"->\"%s\" in \"%s\"%s"
+msgstr "CONFLIT (renommage/renommage) : Renommage de \"%s\"->\"%s\" dans la branche \"%s\" et renommage \"%s\"->\"%s\" dans \"%s\"%s"
+
+#: merge-recursive.c:1164
+msgid " (left unresolved)"
+msgstr " (laissé non résolu)"
+
+#: merge-recursive.c:1218
+#, c-format
+msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
+msgstr "CONFLIT (renommage/renommage) : renommage '%s'->'%s' dans %s. Renommage '%s'->'%s' dans %s"
+
+#: merge-recursive.c:1248
+#, c-format
+msgid "Renaming %s to %s and %s to %s instead"
+msgstr "Renommage de %s en %s et de %s en %s à la place"
+
+#: merge-recursive.c:1447
+#, c-format
+msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
+msgstr "CONFLIT (renommage/ajout) : Renommage de %s->%s dans %s. %s ajouté dans %s"
+
+#: merge-recursive.c:1457
+#, c-format
+msgid "Adding merged %s"
+msgstr "Ajout de %s fusionné"
+
+#: merge-recursive.c:1462 merge-recursive.c:1660
+#, c-format
+msgid "Adding as %s instead"
+msgstr "Ajout plutôt comme %s"
+
+#: merge-recursive.c:1513
+#, c-format
+msgid "cannot read object %s"
+msgstr "impossible de lire l'objet %s"
+
+#: merge-recursive.c:1516
+#, c-format
+msgid "object %s is not a blob"
+msgstr "l'objet %s n'est pas un blob"
+
+#: merge-recursive.c:1564
+msgid "modify"
+msgstr "modification"
+
+#: merge-recursive.c:1564
+msgid "modified"
+msgstr "modifié"
+
+#: merge-recursive.c:1574
+msgid "content"
+msgstr "contenu"
+
+#: merge-recursive.c:1581
+msgid "add/add"
+msgstr "ajout/ajout"
+
+#: merge-recursive.c:1615
+#, c-format
+msgid "Skipped %s (merged same as existing)"
+msgstr "%s ignoré (fusion identique à l'existant)"
+
+#: merge-recursive.c:1629
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Fusion automatique de %s"
+
+#: merge-recursive.c:1633 git-submodule.sh:1029
+msgid "submodule"
+msgstr "sous-module"
+
+#: merge-recursive.c:1634
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "CONFLIT (%s) : Conflit de fusion dans %s"
+
+#: merge-recursive.c:1724
+#, c-format
+msgid "Removing %s"
+msgstr "Suppression de %s"
+
+#: merge-recursive.c:1749
+msgid "file/directory"
+msgstr "fichier/répertoire"
+
+#: merge-recursive.c:1755
+msgid "directory/file"
+msgstr "répertoire/fichier"
+
+#: merge-recursive.c:1760
+#, c-format
+msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
+msgstr "CONFLIT (%s) : Il y a un répertoire nommé %s dans %s. Ajout de %s comme %s"
+
+#: merge-recursive.c:1770
+#, c-format
+msgid "Adding %s"
+msgstr "Ajout de %s"
+
+#: merge-recursive.c:1787
+msgid "Fatal merge failure, shouldn't happen."
+msgstr "Échec fatal de fusion, qui ne devrait jamais arriver."
+
+#: merge-recursive.c:1806
+msgid "Already up-to-date!"
+msgstr "Déjà à jour !"
+
+#: merge-recursive.c:1815
+#, c-format
+msgid "merging of trees %s and %s failed"
+msgstr "échec de fusion des arbres %s et %s"
+
+#: merge-recursive.c:1845
+#, c-format
+msgid "Unprocessed path??? %s"
+msgstr "Chemin non traité ??? %s"
+
+#: merge-recursive.c:1890
+msgid "Merging:"
+msgstr "Fusion :"
+
+#: merge-recursive.c:1903
+#, 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:1940
+msgid "merge returned no commit"
+msgstr "la fusion n'a pas retourné de commit"
+
+#: merge-recursive.c:1997
+#, c-format
+msgid "Could not parse object '%s'"
+msgstr "Impossible d'analyser l'objet '%s'"
+
+#: merge-recursive.c:2009 builtin/merge.c:658
+msgid "Unable to write index."
+msgstr "Impossible d'écrire l'index."
+
+#: object.c:195
+#, c-format
+msgid "unable to parse object: %s"
+msgstr "impossible d'analyser l'objet : %s"
+
+#: parse-options.c:489
+msgid "..."
+msgstr "..."
+
+#: parse-options.c:507
+#, c-format
+msgid "usage: %s"
+msgstr "usage : %s"
+
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation
+#: parse-options.c:511
+#, c-format
+msgid "   or: %s"
+msgstr "   ou : %s"
+
+#: parse-options.c:514
+#, c-format
+msgid "    %s"
+msgstr "    %s"
+
+#: parse-options.c:548
+msgid "-NUM"
+msgstr "-NUM"
+
+#: pathspec.c:83
+#, c-format
+msgid "Path '%s' is in submodule '%.*s'"
+msgstr "Le chemin '%s' est dans le sous-module '%.*s'"
+
+#: pathspec.c:99
+#, c-format
+msgid "'%s' is beyond a symbolic link"
+msgstr "'%s' est au delà d'un lien symbolique"
+
+#: remote.c:1781
+#, 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:1787
+msgid "  (use \"git push\" to publish your local commits)\n"
+msgstr "  (utilisez \"git push\" pour publier vos commits locaux)\n"
+
+#: remote.c:1790
+#, 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:1798
+msgid "  (use \"git pull\" to update your local branch)\n"
+msgstr "  (utilisez \"git pull\" pour mettre à jour votre branche locale)\n"
+
+#: remote.c:1801
+#, 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:1811
+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"
+
+#: sequencer.c:206 builtin/merge.c:776 builtin/merge.c:889 builtin/merge.c:999
+#: builtin/merge.c:1009
+#, c-format
+msgid "Could not open '%s' for writing"
+msgstr "Impossible d'ouvrir '%s' en écriture"
+
+#: sequencer.c:208 builtin/merge.c:335 builtin/merge.c:779
+#: builtin/merge.c:1001 builtin/merge.c:1014
+#, c-format
+msgid "Could not write to '%s'"
+msgstr "Impossible d'écrire dans '%s'"
+
+#: sequencer.c:229
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+msgstr "après résolution des conflits, marquez les chemins corrigés\n"
+"avec 'git add <chemins>' ou 'git rm <chemins>'"
+
+#: sequencer.c:232
+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 ""
+"après résolution des conflits, marquez les chemins corrigés\n"
+"avec 'git add <chemins>' ou 'git rm <chemins>'\n"
+"puis validez le résultat avec 'git commit'"
+
+#: sequencer.c:245 sequencer.c:859 sequencer.c:942
+#, c-format
+msgid "Could not write to %s"
+msgstr "Impossible d'écrire dans %s"
+
+#: sequencer.c:248
+#, c-format
+msgid "Error wrapping up %s"
+msgstr "Erreur à l'emballage de %s"
+
+#: sequencer.c:263
+msgid "Your local changes would be overwritten by cherry-pick."
+msgstr "Vos modifications locales seraient écrasées par cherry-pick."
+
+#: sequencer.c:265
+msgid "Your local changes would be overwritten by revert."
+msgstr "Vos modifications locales seraient écrasées par revert."
+
+#: sequencer.c:268
+msgid "Commit your changes or stash them to proceed."
+msgstr "Validez vos modifications ou remisez-les pour continuer."
+
+#. TRANSLATORS: %s will be "revert" or "cherry-pick"
+#: sequencer.c:319
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s: Impossible d'écrire le nouveau fichier index"
+
+#: sequencer.c:350
+msgid "Could not resolve HEAD commit\n"
+msgstr "Impossible de résoudre le commit HEAD\n"
+
+#: sequencer.c:371
+msgid "Unable to update cache tree\n"
+msgstr "Impossible de mettre à jour l'arbre de cache\n"
+
+#: sequencer.c:416
+#, c-format
+msgid "Could not parse commit %s\n"
+msgstr "Impossible d'analyser le commit %s\n"
+
+#: sequencer.c:421
+#, c-format
+msgid "Could not parse parent commit %s\n"
+msgstr "Impossible d'analyser le commit parent %s\n"
+
+#: sequencer.c:487
+msgid "Your index file is unmerged."
+msgstr "Votre fichier d'index n'est pas fusionné."
+
+#: sequencer.c:506
+#, 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:514
+#, c-format
+msgid "Commit %s does not have parent %d"
+msgstr "Le commit %s n'a pas le parent %d"
+
+#: sequencer.c:518
+#, c-format
+msgid "Mainline was specified but commit %s is not a merge."
+msgstr "Une branche principale a été spécifiée mais le commit %s n'est pas une fusion."
+
+#. TRANSLATORS: The first %s will be "revert" or
+#. "cherry-pick", the second %s a SHA1
+#: sequencer.c:531
+#, c-format
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s : impossible d'analyser le commit parent %s"
+
+#: sequencer.c:535
+#, c-format
+msgid "Cannot get commit message for %s"
+msgstr "Impossible d'obtenir un message de validation pour %s"
+
+#: sequencer.c:621
+#, c-format
+msgid "could not revert %s... %s"
+msgstr "impossible d'annuler %s... %s"
+
+#: sequencer.c:622
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "impossible d'appliquer %s... %s"
+
+#: sequencer.c:654
+msgid "empty commit set passed"
+msgstr "l'ensemble de commits spéficifié est vide"
+
+#: sequencer.c:662
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s : échec à la lecture de l'index"
+
+#: sequencer.c:667
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s : échec du raffraîchissement de l'index"
+
+#: sequencer.c:725
+#, c-format
+msgid "Cannot %s during a %s"
+msgstr "Impossible de %s pendant un %s"
+
+#: sequencer.c:747
+#, c-format
+msgid "Could not parse line %d."
+msgstr "Impossible d'analyser la ligne %d."
+
+#: sequencer.c:752
+msgid "No commits parsed."
+msgstr "Aucun commit analysé."
+
+#: sequencer.c:765
+#, c-format
+msgid "Could not open %s"
+msgstr "Impossible d'ouvrir %s"
+
+#: sequencer.c:769
+#, c-format
+msgid "Could not read %s."
+msgstr "Impossible de lire %s."
+
+#: sequencer.c:776
+#, c-format
+msgid "Unusable instruction sheet: %s"
+msgstr "Feuille d'instruction inutilisable : %s"
+
+#: sequencer.c:804
+#, c-format
+msgid "Invalid key: %s"
+msgstr "Clé invalide: %s"
+
+#: sequencer.c:807
+#, c-format
+msgid "Invalid value for %s: %s"
+msgstr "Valeur invalide pour %s : %s"
+
+#: sequencer.c:819
+#, c-format
+msgid "Malformed options sheet: %s"
+msgstr "Feuille d'options malformée : %s"
+
+#: sequencer.c:840
+msgid "a cherry-pick or revert is already in progress"
+msgstr "un picorage ou un retour est déjà en cours"
+
+#: sequencer.c:841
+msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
+msgstr "essayez \"git cherry-pick (--continue|--quit|-- abort)\""
+
+#: sequencer.c:845
+#, c-format
+msgid "Could not create sequencer directory %s"
+msgstr "Impossible de créer le répertoire de séquenceur %s"
+
+#: sequencer.c:861 sequencer.c:946
+#, c-format
+msgid "Error wrapping up %s."
+msgstr "Erreur lors de l'emballage de %s."
+
+#: sequencer.c:880 sequencer.c:1014
+msgid "no cherry-pick or revert in progress"
+msgstr "aucun picorage ou retour en cours"
+
+#: sequencer.c:882
+msgid "cannot resolve HEAD"
+msgstr "impossible de résoudre HEAD"
+
+#: sequencer.c:884
+msgid "cannot abort from a branch yet to be born"
+msgstr "impossible d'abandonner depuis une branche non encore créée"
+
+#: sequencer.c:906 builtin/apply.c:4060
+#, c-format
+msgid "cannot open %s: %s"
+msgstr "impossible d'ouvrir %s : %s"
+
+#: sequencer.c:909
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "impossible de lire %s : %s"
+
+#: sequencer.c:910
+msgid "unexpected end of file"
+msgstr "fin de fichier inattendue"
+
+#: sequencer.c:916
+#, 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:939
+#, c-format
+msgid "Could not format %s."
+msgstr "Impossible de formater %s."
+
+#: sequencer.c:1083
+#, c-format
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s : impossible de picorer un %s"
+
+#: sequencer.c:1085
+#, c-format
+msgid "%s: bad revision"
+msgstr "%s : mauvaise révision"
+
+#: sequencer.c:1119
+msgid "Can't revert as initial commit"
+msgstr "Impossible d'annuler en tant que commit initial"
+
+#: sequencer.c:1120
+msgid "Can't cherry-pick into empty head"
+msgstr "Impossible de picorer vers une HEAD vide"
+
+#: sha1_name.c:1036
+msgid "HEAD does not point to a branch"
+msgstr "HEAD ne pointe pas sur une branche"
+
+#: sha1_name.c:1039
+#, c-format
+msgid "No such branch: '%s'"
+msgstr "Branche inconnue : '%s'"
+
+#: sha1_name.c:1041
+#, c-format
+msgid "No upstream configured for branch '%s'"
+msgstr "Aucune branche amont configurée pour la branche '%s'"
+
+#: sha1_name.c:1044
+#, 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"
+
+#: wrapper.c:408
+#, c-format
+msgid "unable to access '%s': %s"
+msgstr "impossible d'accéder à '%s' : %s"
+
+#: wrapper.c:423
+#, c-format
+msgid "unable to access '%s'"
+msgstr "impossible d'accéder à '%s'"
+
+#: wrapper.c:434
+#, c-format
+msgid "unable to look up current user in the passwd file: %s"
+msgstr "impossible de rechercher l'utilisateur actuel dans le fichier de mots de passe : %s"
+
+#: wrapper.c:435
+msgid "no such user"
+msgstr "utilisateur inconnu"
+
+#: wt-status.c:140
+msgid "Unmerged paths:"
+msgstr "Chemins non fusionnés :"
+
+#: wt-status.c:167 wt-status.c:194
+#, c-format
+msgid "  (use \"git reset %s <file>...\" to unstage)"
+msgstr "  (utilisez \"git reset %s <fichier>...\" pour désindexer)"
+
+#: wt-status.c:169 wt-status.c:196
+msgid "  (use \"git rm --cached <file>...\" to unstage)"
+msgstr "  (utilisez \"git rm --cached <fichier>...\" pour désindexer)"
+
+#: wt-status.c:173
+msgid "  (use \"git add <file>...\" to mark resolution)"
+msgstr "  (utilisez \"git add <fichier>...\" pour marquer comme résolu)"
+
+#: wt-status.c:175 wt-status.c:179
+msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
+msgstr "  (utilisez \"git add/rm <fichier>...\" si nécessaire pour marquer comme résolu)"
+
+#: wt-status.c:177
+msgid "  (use \"git rm <file>...\" to mark resolution)"
+msgstr "  (utilisez \"git rm <fichier>...\" pour marquer comme résolu)"
+
+#: wt-status.c:188
+msgid "Changes to be committed:"
+msgstr "Modifications qui seront validées :"
+
+#: wt-status.c:206
+msgid "Changes not staged for commit:"
+msgstr "Modifications qui ne seront pas validées :"
+
+#: wt-status.c:210
+msgid "  (use \"git add <file>...\" to update what will be committed)"
+msgstr "  (utilisez \"git add <fichier>...\" pour mettre à jour ce qui sera validé)"
+
+#: wt-status.c:212
+msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
+msgstr "  (utilisez \"git add/rm <fichier>...\" pour mettre à jour ce qui sera validé)"
+
+#: wt-status.c:213
+msgid ""
+"  (use \"git checkout -- <file>...\" to discard changes in working directory)"
+msgstr "  (utilisez \"git checkout -- <fichier>...\" pour annuler les modifications dans la copie de travail)"
+
+#: wt-status.c:215
+msgid "  (commit or discard the untracked or modified content in submodules)"
+msgstr "  (valider ou annuler le contenu non suivi ou modifié dans les sous-modules)"
+
+#: wt-status.c:227
+#, c-format
+msgid "  (use \"git %s <file>...\" to include in what will be committed)"
+msgstr "  (utilisez \"git %s <fichier>...\" pour inclure dans ce qui sera validé)"
+
+#: wt-status.c:244
+msgid "bug"
+msgstr "bogue"
+
+#: wt-status.c:249
+msgid "both deleted:"
+msgstr "supprimé des deux côtés :"
+
+#: wt-status.c:250
+msgid "added by us:"
+msgstr "ajouté par nous :"
+
+#: wt-status.c:251
+msgid "deleted by them:"
+msgstr "supprimé par eux :"
+
+#: wt-status.c:252
+msgid "added by them:"
+msgstr "ajouté par eux :"
+
+#: wt-status.c:253
+msgid "deleted by us:"
+msgstr "supprimé par nous :"
+
+#: wt-status.c:254
+msgid "both added:"
+msgstr "ajouté de deux côtés :"
+
+#: wt-status.c:255
+msgid "both modified:"
+msgstr "modifié des deux côtés :"
+
+#: wt-status.c:285
+msgid "new commits, "
+msgstr "nouveaux commits, "
+
+#: wt-status.c:287
+msgid "modified content, "
+msgstr "contenu modifié, "
+
+#: wt-status.c:289
+msgid "untracked content, "
+msgstr "contenu non suivi, "
+
+#: wt-status.c:306
+#, c-format
+msgid "new file:   %s"
+msgstr "nouveau :   %s"
+
+#: wt-status.c:309
+#, c-format
+msgid "copied:     %s -> %s"
+msgstr "copié :     %s -> %s"
+
+#: wt-status.c:312
+#, c-format
+msgid "deleted:    %s"
+msgstr "supprimé :  %s"
+
+#: wt-status.c:315
+#, c-format
+msgid "modified:   %s"
+msgstr "modifié :   %s"
+
+#: wt-status.c:318
+#, c-format
+msgid "renamed:    %s -> %s"
+msgstr "renommé :   %s -> %s"
+
+#: wt-status.c:321
+#, c-format
+msgid "typechange: %s"
+msgstr "nv type :   %s"
+
+#: wt-status.c:324
+#, c-format
+msgid "unknown:    %s"
+msgstr "inconnu :   %s"
+
+#: wt-status.c:327
+#, c-format
+msgid "unmerged:   %s"
+msgstr "non fus. :  %s"
+
+#: wt-status.c:330
+#, c-format
+msgid "bug: unhandled diff status %c"
+msgstr "bogue : état de diff non géré %c"
+
+#: wt-status.c:803
+msgid "You have unmerged paths."
+msgstr "Vous avez des chemins non fusionnés."
+
+#: wt-status.c:806 wt-status.c:958
+msgid "  (fix conflicts and run \"git commit\")"
+msgstr "  (réglez les conflits et lancez \"git commit\")"
+
+#: wt-status.c:809
+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:812
+msgid "  (use \"git commit\" to conclude merge)"
+msgstr "  (utilisez \"git commit\" pour terminer la fusion)"
+
+#: wt-status.c:822
+msgid "You are in the middle of an am session."
+msgstr "Vous êtes au milieu d'une session am."
+
+#: wt-status.c:825
+msgid "The current patch is empty."
+msgstr "Le patch actuel est vide."
+
+#: wt-status.c:829
+msgid "  (fix conflicts and then run \"git am --resolved\")"
+msgstr "  (réglez les conflits puis lancez \"git am --resolved\")"
+
+#: wt-status.c:831
+msgid "  (use \"git am --skip\" to skip this patch)"
+msgstr "  (utilisez \"git am --skip\" pour sauter ce patch)"
+
+#: wt-status.c:833
+msgid "  (use \"git am --abort\" to restore the original branch)"
+msgstr "  (utilisez \"git am --abort\" pour restaurer la branche d'origine)"
+
+#: wt-status.c:893 wt-status.c:910
+#, 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:898 wt-status.c:915
+msgid "You are currently rebasing."
+msgstr "Vous êtes en train de rebaser."
+
+#: wt-status.c:901
+msgid "  (fix conflicts and then run \"git rebase --continue\")"
+msgstr "  (résolvez les conflits puis lancez \"git rebase --continue\")"
+
+#: wt-status.c:903
+msgid "  (use \"git rebase --skip\" to skip this patch)"
+msgstr "  (utilisez \"git rebase --skip\" pour sauter ce patch)"
+
+#: wt-status.c:905
+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:918
+msgid "  (all conflicts fixed: run \"git rebase --continue\")"
+msgstr "  (tous les conflits sont résolus : lancez \"git rebase --continue\")"
+
+#: wt-status.c:922
+#, c-format
+msgid ""
+"You are currently splitting a commit while rebasing branch '%s' on '%s'."
+msgstr "Vous êtes actuellement en train de fractionner un commit pendant un rebasage de la branche '%s' sur '%s'."
+
+#: wt-status.c:927
+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:930
+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:934
+#, 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:939
+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:942
+msgid "  (use \"git commit --amend\" to amend the current commit)"
+msgstr "  (utilisez \"git commit --amend\" pour corriger le commit actuel)"
+
+#: wt-status.c:944
+msgid ""
+"  (use \"git rebase --continue\" once you are satisfied with your changes)"
+msgstr "  (utilisez \"git rebase --continue\" quand vous êtes satisfait de vos modifications)"
+
+#: wt-status.c:954
+msgid "You are currently cherry-picking."
+msgstr "Vous êtes actuellement en train de picorer."
+
+#: wt-status.c:961
+msgid "  (all conflicts fixed: run \"git commit\")"
+msgstr "  (tous les conflits sont résolus : lancez \"git commit\")"
+
+#: wt-status.c:970
+#, c-format
+msgid "You are currently reverting commit %s."
+msgstr "Vous êtes actuellement en train de rétablir le commit %s."
+
+#: wt-status.c:975
+msgid "  (fix conflicts and run \"git revert --continue\")"
+msgstr "  (résolvez les conflits et lancez \"git revert --continue\")"
+
+#: wt-status.c:978
+msgid "  (all conflicts fixed: run \"git revert --continue\")"
+msgstr "  (tous les conflits sont résolus : lancez \"git revert --continue\")"
+
+#: wt-status.c:980
+msgid "  (use \"git revert --abort\" to cancel the revert operation)"
+msgstr "  (utilisez \"git revert --abort\" pour annuler le rétablissement)"
+
+#: wt-status.c:991
+#, 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:995
+msgid "You are currently bisecting."
+msgstr "Vous êtes en cours de bissection."
+
+#: wt-status.c:998
+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:1173
+msgid "On branch "
+msgstr "Sur la branche "
+
+#: wt-status.c:1184
+msgid "HEAD detached at "
+msgstr "HEAD détachée sur "
+
+#: wt-status.c:1186
+msgid "HEAD detached from "
+msgstr "HEAD détachée depuis "
+
+#: wt-status.c:1189
+msgid "Not currently on any branch."
+msgstr "Actuellement sur aucun branche."
+
+#: wt-status.c:1206
+msgid "Initial commit"
+msgstr "Validation initiale"
+
+#: wt-status.c:1220
+msgid "Untracked files"
+msgstr "Fichiers non suivis"
+
+#: wt-status.c:1222
+msgid "Ignored files"
+msgstr "Fichiers ignorés"
+
+#: wt-status.c:1226
+#, 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 "L'énumération des fichiers non suivis a duré %.2f secondes. 'status -uno'\n"
+"peut l'accélerer, mais vous devez alors faire attention à ne pas\n"
+"oublier d'ajouter les nouveaux fichiers par vous-même (voir 'git help status')."
+
+#: wt-status.c:1232
+#, c-format
+msgid "Untracked files not listed%s"
+msgstr "Fichiers non suivis non listés%s"
+
+#: wt-status.c:1234
+msgid " (use -u option to show untracked files)"
+msgstr " (utilisez -u pour afficher les fichiers non suivis)"
+
+#: wt-status.c:1240
+msgid "No changes"
+msgstr "Aucune modification"
+
+#: wt-status.c:1245
+#, 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:1248
+#, c-format
+msgid "no changes added to commit\n"
+msgstr "aucune modification ajoutée à la validation\n"
+
+#: wt-status.c:1251
+#, c-format
+msgid ""
+"nothing added to commit but untracked files present (use \"git add\" to "
+"track)\n"
+msgstr "aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez \"git add\" pour les suivre)\n"
+
+#: wt-status.c:1254
+#, 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:1257
+#, 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:1260 wt-status.c:1265
+#, c-format
+msgid "nothing to commit\n"
+msgstr "rien à valider\n"
+
+#: wt-status.c:1263
+#, 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:1267
+#, c-format
+msgid "nothing to commit, working directory clean\n"
+msgstr "rien à valider, la copie de travail est propre\n"
+
+#: wt-status.c:1375
+msgid "HEAD (no branch)"
+msgstr "HEAD (aucune branche)"
+
+#: wt-status.c:1381
+msgid "Initial commit on "
+msgstr "Validation initiale sur "
+
+#: wt-status.c:1396
+msgid "behind "
+msgstr "derrière "
+
+#: wt-status.c:1399 wt-status.c:1402
+msgid "ahead "
+msgstr "devant "
+
+#: wt-status.c:1404
+msgid ", behind "
+msgstr ", derrière "
+
+#: compat/precompose_utf8.c:58 builtin/clone.c:352
+#, c-format
+msgid "failed to unlink '%s'"
+msgstr "echec lors de l'unlink de '%s'"
+
+#: builtin/add.c:20
+msgid "git add [options] [--] <pathspec>..."
+msgstr "git add [options] [--] <chemin>..."
+
+#.
+#. * To be consistent with "git add -p" and most Git
+#. * commands, we should default to being tree-wide, but
+#. * this is not the original behavior and can't be
+#. * changed until users trained themselves not to type
+#. * "git add -u" or "git add -A". For now, we warn and
+#. * keep the old behavior. Later, the behavior can be changed
+#. * to tree-wide, keeping the warning for a while, and
+#. * eventually we can drop the warning.
+#.
+#: builtin/add.c:58
+#, c-format
+msgid ""
+"The behavior of 'git add %s (or %s)' with no path argument from a\n"
+"subdirectory of the tree will change in Git 2.0 and should not be used "
+"anymore.\n"
+"To add content for the whole tree, run:\n"
+"\n"
+"  git add %s :/\n"
+"  (or git add %s :/)\n"
+"\n"
+"To restrict the command to the current directory, run:\n"
+"\n"
+"  git add %s .\n"
+"  (or git add %s .)\n"
+"\n"
+"With the current Git version, the command is restricted to the current "
+"directory.\n"
+msgstr ""
+"Le comportement de 'git add %s (ou %s)' sans argument de chemin depuis un\n"
+"sous-répertoire du projet va changer dans Git 2.0 et ne doit plus être utilisé.\n"
+"Pour ajouter le contenu de toute l'arborescence, lancez :\n"
+"\n"
+"  git add %s :/\n"
+"  (ou git add %s :/)\n"
+"\n"
+"Pour restreindre la commande au répertoire courant, lancez :\n"
+"\n"
+"  git add %s .\n"
+"  (ou git add %s .)\n"
+"\n"
+"Avec la version actuelle de Git, la commande est restreinte au répertoire courant.\n"
+
+#: builtin/add.c:100
+#, c-format
+msgid ""
+"You ran 'git add' with neither '-A (--all)' or '--ignore-removal',\n"
+"whose behaviour will change in Git 2.0 with respect to paths you removed.\n"
+"Paths like '%s' that are\n"
+"removed from your working tree are ignored with this version of Git.\n"
+"\n"
+"* 'git add --ignore-removal <pathspec>', which is the current default,\n"
+"  ignores paths you removed from your working tree.\n"
+"\n"
+"* 'git add --all <pathspec>' will let you also record the removals.\n"
+"\n"
+"Run 'git status' to check the paths you removed from your working tree.\n"
+msgstr ""
+"Vous avez lancé 'git add' sans '-A (--all)' ni '--ignore-removal',\n"
+"dont le comportement va changer dans Git 2.0 avec le respect des chemins que vous supprimez.\n"
+"Les chemins tels que '%s' qui ont été\n"
+"retirés de votre copie de travail sont ignorés avec cette version de Git.\n"
+"\n"
+"* 'git add --ignore-removal <chemin>', qui est l'option par défaut actuelle,\n"
+"  ignore les chemins que vous avez supprimés de votre copie de travail.\n"
+"\n"
+"* 'git add --all <chemin>' permet d'enregistrer aussi les suppressions.\n"
+"\n"
+"Lancez 'git status' pour vérifier les chemins que vous avez supprimés de votre copie de travail.\n"
+
+#: builtin/add.c:144
+#, c-format
+msgid "unexpected diff status %c"
+msgstr "status de diff inattendu %c"
+
+#: builtin/add.c:149 builtin/commit.c:233
+msgid "updating files failed"
+msgstr "échec de la mise à jour des fichiers"
+
+#: builtin/add.c:163
+#, c-format
+msgid "remove '%s'\n"
+msgstr "suppression de '%s'\n"
+
+#: builtin/add.c:253
+msgid "Unstaged changes after refreshing the index:"
+msgstr "Modifications non indexées après rafraîchissement de l'index :"
+
+#: builtin/add.c:256 builtin/add.c:572 builtin/rm.c:275
+#, c-format
+msgid "pathspec '%s' did not match any files"
+msgstr "le chemin '%s' ne correspond à aucun fichier"
+
+#: builtin/add.c:339
+msgid "Could not read the index"
+msgstr "Impossible de lire l'index"
+
+#: builtin/add.c:349
+#, c-format
+msgid "Could not open '%s' for writing."
+msgstr "Impossible d'ouvrir '%s' en écriture."
+
+#: builtin/add.c:353
+msgid "Could not write patch"
+msgstr "Impossible d'écrire le patch"
+
+#: builtin/add.c:358
+#, c-format
+msgid "Could not stat '%s'"
+msgstr "Stat de '%s' impossible"
+
+#: builtin/add.c:360
+msgid "Empty patch. Aborted."
+msgstr "Patch vide. Abandon."
+
+#: builtin/add.c:366
+#, c-format
+msgid "Could not apply '%s'"
+msgstr "Impossible d'appliquer '%s'"
+
+#: builtin/add.c:376
+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:393 builtin/clean.c:161 builtin/fetch.c:78 builtin/mv.c:63
+#: builtin/prune-packed.c:76 builtin/push.c:425 builtin/remote.c:1253
+#: builtin/rm.c:206
+msgid "dry run"
+msgstr "à vide"
+
+#: builtin/add.c:394 builtin/apply.c:4409 builtin/check-ignore.c:19
+#: builtin/commit.c:1152 builtin/count-objects.c:95 builtin/fsck.c:613
+#: builtin/log.c:1518 builtin/mv.c:62 builtin/read-tree.c:112
+msgid "be verbose"
+msgstr "mode verbeux"
+
+#: builtin/add.c:396
+msgid "interactive picking"
+msgstr "sélection interactive"
+
+#: builtin/add.c:397 builtin/checkout.c:1063 builtin/reset.c:258
+msgid "select hunks interactively"
+msgstr "sélection interactive des sections"
+
+#: builtin/add.c:398
+msgid "edit current diff and apply"
+msgstr "édition du diff actuel et application"
+
+#: builtin/add.c:399
+msgid "allow adding otherwise ignored files"
+msgstr "permettre l'ajout de fichiers ignorés"
+
+#: builtin/add.c:400
+msgid "update tracked files"
+msgstr "mettre à jour les fichiers suivis"
+
+#: builtin/add.c:401
+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:402
+msgid "add changes from all tracked and untracked files"
+msgstr "ajouter les modifications de tous les fichiers suivis et non suivis"
+
+#. takes no arguments
+#: builtin/add.c:405
+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:407
+msgid "don't add, only refresh the index"
+msgstr "ne pas ajouter, juste rafraîchir l'index"
+
+#: builtin/add.c:408
+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:409
+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:431
+#, c-format
+msgid "Use -f if you really want to add them.\n"
+msgstr "Utilisez -f si vous voulez réellement les ajouter.\n"
+
+#: builtin/add.c:432
+msgid "no files added"
+msgstr "aucun fichier ajouté"
+
+#: builtin/add.c:438
+msgid "adding files failed"
+msgstr "échec de l'ajout de fichiers"
+
+#: builtin/add.c:477
+msgid "-A and -u are mutually incompatible"
+msgstr "-A et -u sont mutuellement incompatibles"
+
+#: builtin/add.c:495
+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:525
+#, c-format
+msgid "Nothing specified, nothing added.\n"
+msgstr "Rien de spécifié, rien n'a été ajouté.\n"
+
+#: builtin/add.c:526
+#, c-format
+msgid "Maybe you wanted to say 'git add .'?\n"
+msgstr "Vous vouliez sûrement dire 'git add .' ?\n"
+
+#: builtin/add.c:532 builtin/check-ignore.c:66 builtin/clean.c:204
+#: builtin/commit.c:293 builtin/mv.c:82 builtin/rm.c:235
+msgid "index file corrupt"
+msgstr "fichier d'index corrompu"
+
+#: builtin/add.c:604 builtin/apply.c:4505 builtin/mv.c:229 builtin/rm.c:370
+msgid "Unable to write new index file"
+msgstr "Impossible d'écrire le nouveau fichier d'index"
+
+#: builtin/apply.c:57
+msgid "git apply [options] [<patch>...]"
+msgstr "git apply [options] [<patch>...]"
+
+#: builtin/apply.c:110
+#, c-format
+msgid "unrecognized whitespace option '%s'"
+msgstr "option d'espace non reconnue '%s'"
+
+#: builtin/apply.c:125
+#, c-format
+msgid "unrecognized whitespace ignore option '%s'"
+msgstr "option d'ignorance d'espce non reconnue '%s'"
+
+#: builtin/apply.c:823
+#, c-format
+msgid "Cannot prepare timestamp regexp %s"
+msgstr "Impossible de préparer la regexp d'horodatage %s"
+
+#: builtin/apply.c:832
+#, c-format
+msgid "regexec returned %d for input: %s"
+msgstr "regexec a retourné %d pour l'entrée : %s"
+
+#: builtin/apply.c:913
+#, c-format
+msgid "unable to find filename in patch at line %d"
+msgstr "nom de fichier du patch introuvable à la ligne %d"
+
+#: builtin/apply.c:945
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
+msgstr "git apply : mauvais format de git-diff - /dev/null attendu, %s trouvé à la ligne %d"
+
+#: builtin/apply.c:949
+#, c-format
+msgid "git apply: bad git-diff - inconsistent new filename on line %d"
+msgstr "git apply : mauvais format de git-diff - nouveau nom de fichier inconsistant à la ligne %d"
+
+#: builtin/apply.c:950
+#, c-format
+msgid "git apply: bad git-diff - inconsistent old filename on line %d"
+msgstr "git apply : mauvais format de git-diff - ancien nom de fichier inconsistant à la ligne %d"
+
+#: builtin/apply.c:957
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null on line %d"
+msgstr "git apply : mauvais format de git-diff - /dev/null attendu à la ligne %d"
+
+#: builtin/apply.c:1422
+#, c-format
+msgid "recount: unexpected line: %.*s"
+msgstr "recount : ligne inattendue : %.*s"
+
+#: builtin/apply.c:1479
+#, c-format
+msgid "patch fragment without header at line %d: %.*s"
+msgstr "fragment de patch sans en-tête à la ligne %d : %.*s"
+
+#: builtin/apply.c:1496
+#, c-format
+msgid ""
+"git diff header lacks filename information when removing %d leading pathname "
+"component (line %d)"
+msgid_plural ""
+"git diff header lacks filename information when removing %d leading pathname "
+"components (line %d)"
+msgstr[0] "information de nom de fichier manquante dans l'en-tête de git diff lors de la suppression de %d composant de préfixe de chemin (ligne %d)"
+msgstr[1] "information de nom de fichier manquante dans l'en-tête de git diff lors de la suppression de %d composants de préfixe de chemin (ligne %d)"
+
+#: builtin/apply.c:1656
+msgid "new file depends on old contents"
+msgstr "le nouveau fichier dépend de contenus anciens"
+
+#: builtin/apply.c:1658
+msgid "deleted file still has contents"
+msgstr "le fichier supprimé a encore du contenu"
+
+#: builtin/apply.c:1684
+#, c-format
+msgid "corrupt patch at line %d"
+msgstr "patch corrompu à la ligne %d"
+
+#: builtin/apply.c:1720
+#, c-format
+msgid "new file %s depends on old contents"
+msgstr "le nouveau fichier %s dépend de contenus anciens"
+
+#: builtin/apply.c:1722
+#, c-format
+msgid "deleted file %s still has contents"
+msgstr "le fichier supprimé %s a encore du contenu"
+
+#: builtin/apply.c:1725
+#, c-format
+msgid "** warning: file %s becomes empty but is not deleted"
+msgstr "** attention : le fichier %s devient vide mais n'est pas supprimé"
+
+#: builtin/apply.c:1871
+#, c-format
+msgid "corrupt binary patch at line %d: %.*s"
+msgstr "patch binaire corrompu à la ligne %d : %.*s"
+
+#. there has to be one hunk (forward hunk)
+#: builtin/apply.c:1900
+#, c-format
+msgid "unrecognized binary patch at line %d"
+msgstr "patch binaire non reconnu à la ligne %d"
+
+#: builtin/apply.c:1986
+#, c-format
+msgid "patch with only garbage at line %d"
+msgstr "patch totalement incompréhensible à la ligne %d"
+
+#: builtin/apply.c:2076
+#, c-format
+msgid "unable to read symlink %s"
+msgstr "lecture du lien symbolique %s impossible"
+
+#: builtin/apply.c:2080
+#, c-format
+msgid "unable to open or read %s"
+msgstr "ouverture ou lecture de %s impossible"
+
+#: builtin/apply.c:2688
+#, c-format
+msgid "invalid start of line: '%c'"
+msgstr "début de ligne invalide : '%c'"
+
+#: builtin/apply.c:2806
+#, c-format
+msgid "Hunk #%d succeeded at %d (offset %d line)."
+msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
+msgstr[0] "La section n°%d a réussi à la ligne %d (offset %d ligne)."
+msgstr[1] "La section n°%d a réussi à la ligne %d (offset %d lignes)."
+
+#: builtin/apply.c:2818
+#, c-format
+msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
+msgstr "Contexte réduit à (%ld/%ld) pour appliquer le fragment à la ligne %d"
+
+#: builtin/apply.c:2824
+#, c-format
+msgid ""
+"while searching for:\n"
+"%.*s"
+msgstr "pendant la recherche de :\n"
+"%.*s"
+
+#: builtin/apply.c:2843
+#, c-format
+msgid "missing binary patch data for '%s'"
+msgstr "données de patch binaire manquantes pour '%s'"
+
+#: builtin/apply.c:2946
+#, c-format
+msgid "binary patch does not apply to '%s'"
+msgstr "le patch binaire ne s'applique par correctement à '%s'"
+
+#: builtin/apply.c:2952
+#, c-format
+msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
+msgstr "le patch binaire sur '%s' crée un résultat incorrect (%s attendu, mais %s trouvé)"
+
+#: builtin/apply.c:2973
+#, c-format
+msgid "patch failed: %s:%ld"
+msgstr "le patch a échoué : %s:%ld"
+
+#: builtin/apply.c:3095
+#, c-format
+msgid "cannot checkout %s"
+msgstr "extraction de %s impossible"
+
+#: builtin/apply.c:3140 builtin/apply.c:3149 builtin/apply.c:3193
+#, c-format
+msgid "read of %s failed"
+msgstr "echec de la lecture de %s"
+
+#: builtin/apply.c:3173 builtin/apply.c:3395
+#, c-format
+msgid "path %s has been renamed/deleted"
+msgstr "le chemin %s a été renommé/supprimé"
+
+#: builtin/apply.c:3254 builtin/apply.c:3409
+#, c-format
+msgid "%s: does not exist in index"
+msgstr "%s : n'existe pas dans l'index"
+
+#: builtin/apply.c:3258 builtin/apply.c:3401 builtin/apply.c:3423
+#, c-format
+msgid "%s: %s"
+msgstr "%s : %s"
+
+#: builtin/apply.c:3263 builtin/apply.c:3417
+#, c-format
+msgid "%s: does not match index"
+msgstr "%s : ne correspond pas à l'index"
+
+#: builtin/apply.c:3365
+msgid "removal patch leaves file contents"
+msgstr "le patch de suppression laisse un contenu dans le fichier"
+
+#: builtin/apply.c:3434
+#, c-format
+msgid "%s: wrong type"
+msgstr "%s : type erroné"
+
+#: builtin/apply.c:3436
+#, c-format
+msgid "%s has type %o, expected %o"
+msgstr "%s est de type %o, mais %o attendu"
+
+#: builtin/apply.c:3537
+#, c-format
+msgid "%s: already exists in index"
+msgstr "%s : existe déjà dans l'index"
+
+#: builtin/apply.c:3540
+#, c-format
+msgid "%s: already exists in working directory"
+msgstr "%s : existe déjà dans la copie de travail"
+
+#: builtin/apply.c:3560
+#, c-format
+msgid "new mode (%o) of %s does not match old mode (%o)"
+msgstr "le nouveau mode (%o) de %s ne correspond pas à l'ancien mode (%o)"
+
+#: builtin/apply.c:3565
+#, c-format
+msgid "new mode (%o) of %s does not match old mode (%o) of %s"
+msgstr "le nouveau mode (%o) de %s ne correspond pas à l'ancien mode (%o) de %s"
+
+#: builtin/apply.c:3573
+#, c-format
+msgid "%s: patch does not apply"
+msgstr "%s : le patch ne s'applique pas"
+
+#: builtin/apply.c:3586
+#, c-format
+msgid "Checking patch %s..."
+msgstr "Vérification du patch %s..."
+
+#: builtin/apply.c:3679 builtin/checkout.c:216 builtin/reset.c:124
+#, c-format
+msgid "make_cache_entry failed for path '%s'"
+msgstr "echec de make_cache_entry pour le chemin '%s'"
+
+#: builtin/apply.c:3822
+#, c-format
+msgid "unable to remove %s from index"
+msgstr "suppression de %s dans l'index impossible"
+
+#: builtin/apply.c:3850
+#, c-format
+msgid "corrupt patch for subproject %s"
+msgstr "patch corrompu pour le sous-projet %s"
+
+#: builtin/apply.c:3854
+#, c-format
+msgid "unable to stat newly created file '%s'"
+msgstr "stat du fichier nouvellement créé '%s' impossible"
+
+#: builtin/apply.c:3859
+#, c-format
+msgid "unable to create backing store for newly created file %s"
+msgstr "création du magasin de stockage pour le fichier nouvellement créé %s impossible"
+
+#: builtin/apply.c:3862 builtin/apply.c:3970
+#, c-format
+msgid "unable to add cache entry for %s"
+msgstr "ajout de l'entrée de cache %s impossible"
+
+#: builtin/apply.c:3895
+#, c-format
+msgid "closing file '%s'"
+msgstr "fermeture du fichier '%s'"
+
+#: builtin/apply.c:3944
+#, c-format
+msgid "unable to write file '%s' mode %o"
+msgstr "écriture du fichier '%s' mode %o impossible"
+
+#: builtin/apply.c:4031
+#, c-format
+msgid "Applied patch %s cleanly."
+msgstr "Patch %s appliqué proprement."
+
+#: builtin/apply.c:4039
+msgid "internal error"
+msgstr "erreur interne"
+
+#. Say this even without --verbose
+#: builtin/apply.c:4042
+#, c-format
+msgid "Applying patch %%s with %d reject..."
+msgid_plural "Applying patch %%s with %d rejects..."
+msgstr[0] "Application du patch %%s avec %d rejet..."
+msgstr[1] "Application du patch %%s avec %d rejets..."
+
+#: builtin/apply.c:4052
+#, c-format
+msgid "truncating .rej filename to %.*s.rej"
+msgstr "troncature du nom de fichier .rej en %.*s.rej"
+
+#: builtin/apply.c:4073
+#, c-format
+msgid "Hunk #%d applied cleanly."
+msgstr "Section n°%d appliquée proprement."
+
+#: builtin/apply.c:4076
+#, c-format
+msgid "Rejected hunk #%d."
+msgstr "Section n°%d rejetée."
+
+#: builtin/apply.c:4226
+msgid "unrecognized input"
+msgstr "entrée non reconnue"
+
+#: builtin/apply.c:4237
+msgid "unable to read index file"
+msgstr "lecture du fichier d'index impossible"
+
+#: builtin/apply.c:4356 builtin/apply.c:4359 builtin/clone.c:92
+#: builtin/fetch.c:63
+msgid "path"
+msgstr "chemin"
+
+#: builtin/apply.c:4357
+msgid "don't apply changes matching the given path"
+msgstr "ne pas appliquer les modifications qui correspondent au chemin donné"
+
+#: builtin/apply.c:4360
+msgid "apply changes matching the given path"
+msgstr "appliquer les modifications qui correspondent au chemin donné"
+
+#: builtin/apply.c:4362
+msgid "num"
+msgstr "num"
+
+#: builtin/apply.c:4363
+msgid "remove <num> leading slashes from traditional diff paths"
+msgstr "supprimer <num> barres obliques des chemins traditionnels de diff"
+
+#: builtin/apply.c:4366
+msgid "ignore additions made by the patch"
+msgstr "ignorer les additions réalisées par le patch"
+
+#: builtin/apply.c:4368
+msgid "instead of applying the patch, output diffstat for the input"
+msgstr "au lieu d'appliquer le patch, afficher le diffstat de l'entrée"
+
+#: builtin/apply.c:4372
+msgid "show number of added and deleted lines in decimal notation"
+msgstr "afficher le nombre de lignes ajoutées et supprimées en notation décimale"
+
+#: builtin/apply.c:4374
+msgid "instead of applying the patch, output a summary for the input"
+msgstr "au lieu d'appliquer le patch, afficher un résumer de l'entrée"
+
+#: builtin/apply.c:4376
+msgid "instead of applying the patch, see if the patch is applicable"
+msgstr "au lieu d'appliquer le patch, voir si le patch est applicable"
+
+#: builtin/apply.c:4378
+msgid "make sure the patch is applicable to the current index"
+msgstr "s'assurer que le patch est applicable sur l'index actuel"
+
+#: builtin/apply.c:4380
+msgid "apply a patch without touching the working tree"
+msgstr "appliquer les patch sans toucher à la copie de travail"
+
+#: builtin/apply.c:4382
+msgid "also apply the patch (use with --stat/--summary/--check)"
+msgstr "appliquer aussi le patch (à utiliser avec ---stat/--summary/--check)"
+
+#: builtin/apply.c:4384
+msgid "attempt three-way merge if a patch does not apply"
+msgstr "tenter une fusion à 3 points si le patch ne s'applique pas proprement"
+
+#: builtin/apply.c:4386
+msgid "build a temporary index based on embedded index information"
+msgstr "construire un index temporaire fondé sur l'information de l'index embarqué"
+
+#: builtin/apply.c:4388 builtin/checkout-index.c:197 builtin/ls-files.c:456
+msgid "paths are separated with NUL character"
+msgstr "les chemins sont séparés par un caractère NUL"
+
+#: builtin/apply.c:4391
+msgid "ensure at least <n> lines of context match"
+msgstr "s'assurer d'au moins <n> lignes de correspondance de contexte"
+
+#: builtin/apply.c:4392
+msgid "action"
+msgstr "action"
+
+#: builtin/apply.c:4393
+msgid "detect new or modified lines that have whitespace errors"
+msgstr "détecter des lignes nouvelles ou modifiées qui contiennent des erreurs d'espace"
+
+#: builtin/apply.c:4396 builtin/apply.c:4399
+msgid "ignore changes in whitespace when finding context"
+msgstr "ignorer des modifications d'espace lors de la recherche de contexte"
+
+#: builtin/apply.c:4402
+msgid "apply the patch in reverse"
+msgstr "appliquer le patch en sens inverse"
+
+#: builtin/apply.c:4404
+msgid "don't expect at least one line of context"
+msgstr "ne pas s'attendre à au moins une ligne de contexte"
+
+#: builtin/apply.c:4406
+msgid "leave the rejected hunks in corresponding *.rej files"
+msgstr "laisser les sections rejetées dans les fichiers *.rej correspondants"
+
+#: builtin/apply.c:4408
+msgid "allow overlapping hunks"
+msgstr "accepter les recouvrements de sections"
+
+#: builtin/apply.c:4411
+msgid "tolerate incorrectly detected missing new-line at the end of file"
+msgstr "tolérer des erreurs de détection de retours chariot manquants en fin de fichier"
+
+#: builtin/apply.c:4414
+msgid "do not trust the line counts in the hunk headers"
+msgstr "ne pas se fier au compte de lignes dans les en-têtes de section"
+
+#: builtin/apply.c:4416
+msgid "root"
+msgstr "racine"
+
+#: builtin/apply.c:4417
+msgid "prepend <root> to all filenames"
+msgstr "préfixer tous les noms de fichier avec <root>"
+
+#: builtin/apply.c:4439
+msgid "--3way outside a repository"
+msgstr "--3way hors d'un dépôt"
+
+#: builtin/apply.c:4447
+msgid "--index outside a repository"
+msgstr "--index hors d'un dépôt"
+
+#: builtin/apply.c:4450
+msgid "--cached outside a repository"
+msgstr "--cached hors d'un dépôt"
+
+#: builtin/apply.c:4466
+#, c-format
+msgid "can't open patch '%s'"
+msgstr "ouverture impossible du patch '%s'"
+
+#: builtin/apply.c:4480
+#, c-format
+msgid "squelched %d whitespace error"
+msgid_plural "squelched %d whitespace errors"
+msgstr[0] "%d erreur d'espace ignorée"
+msgstr[1] "%d erreurs d'espace ignorées"
+
+#: builtin/apply.c:4486 builtin/apply.c:4496
+#, c-format
+msgid "%d line adds whitespace errors."
+msgid_plural "%d lines add whitespace errors."
+msgstr[0] "%d ligne a ajouté des erreurs d'espace."
+msgstr[1] "%d lignes ont ajouté des erreurs d'espace."
+
+#: builtin/archive.c:17
+#, c-format
+msgid "could not create archive file '%s'"
+msgstr "création impossible du fichier d'archive '%s'"
+
+#: builtin/archive.c:20
+msgid "could not redirect output"
+msgstr "impossible de rediriger la sortie"
+
+#: builtin/archive.c:37
+msgid "git archive: Remote with no URL"
+msgstr "git archive : Dépôt distant sans URL"
+
+#: builtin/archive.c:58
+msgid "git archive: expected ACK/NAK, got EOF"
+msgstr "git archive : ACK/NACK attendu, EOF reçu"
+
+#: builtin/archive.c:61
+#, c-format
+msgid "git archive: NACK %s"
+msgstr "git archive : NACK %s"
+
+#: builtin/archive.c:63
+#, c-format
+msgid "remote error: %s"
+msgstr "erreur distante : %s"
+
+#: builtin/archive.c:64
+msgid "git archive: protocol error"
+msgstr "git archive : erreur de protocole"
+
+#: builtin/archive.c:68
+msgid "git archive: expected a flush"
+msgstr "git archive : vidage attendu"
+
+#: builtin/bisect--helper.c:7
+msgid "git bisect--helper --next-all [--no-checkout]"
+msgstr "git bisect --helper --next-all [--no-checkout]"
+
+#: builtin/bisect--helper.c:17
+msgid "perform 'git bisect next'"
+msgstr "effectuer 'git bisect next'"
+
+#: builtin/bisect--helper.c:19
+msgid "update BISECT_HEAD instead of checking out the current commit"
+msgstr "mettre à jour BISECT_HEAD au lieu d'extraire le commit actuel"
+
+#: builtin/blame.c:25
+msgid "git blame [options] [rev-opts] [rev] [--] file"
+msgstr "git blame [options] [options-de-révision] [rev] [--] fichier"
+
+#: builtin/blame.c:30
+msgid "[rev-opts] are documented in git-rev-list(1)"
+msgstr "[options-de-révision] sont documentés dans git-rev-list(1)"
+
+#: builtin/blame.c:2355
+msgid "Show blame entries as we find them, incrementally"
+msgstr "Montrer les entrée de blâme au fur et à mesure de leur découverte, de manière incrémentale"
+
+#: builtin/blame.c:2356
+msgid "Show blank SHA-1 for boundary commits (Default: off)"
+msgstr "Montrer un SHA-1 blanc pour les commits de limite (Défaut : désactivé)"
+
+#: builtin/blame.c:2357
+msgid "Do not treat root commits as boundaries (Default: off)"
+msgstr "Ne pas traiter les commits racine comme des limites (Défaut : désactivé)"
+
+#: builtin/blame.c:2358
+msgid "Show work cost statistics"
+msgstr "Montrer les statistiques de coût d'activité"
+
+#: builtin/blame.c:2359
+msgid "Show output score for blame entries"
+msgstr "Montrer le score de sortie pour les entrées de blâme"
+
+#: builtin/blame.c:2360
+msgid "Show original filename (Default: auto)"
+msgstr "Montrer les noms de fichier originaux (Défaut : auto)"
+
+#: builtin/blame.c:2361
+msgid "Show original linenumber (Default: off)"
+msgstr "Montrer les numéros de lignes originaux (Défaut : désactivé)"
+
+#: builtin/blame.c:2362
+msgid "Show in a format designed for machine consumption"
+msgstr "Afficher dans un format propice à la consommation par machine"
+
+#: builtin/blame.c:2363
+msgid "Show porcelain format with per-line commit information"
+msgstr "Afficher en format porcelaine avec l'information de commit par ligne"
+
+#: builtin/blame.c:2364
+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:2365
+msgid "Show raw timestamp (Default: off)"
+msgstr "Afficher les horodatages bruts (Défaut: désactivé)"
+
+#: builtin/blame.c:2366
+msgid "Show long commit SHA1 (Default: off)"
+msgstr "Afficher les longs SHA1 de commits (Défaut : désactivé)"
+
+#: builtin/blame.c:2367
+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:2368
+msgid "Show author email instead of name (Default: off)"
+msgstr "Afficher l'e-mail de l'auteur au lieu du nom (Défaut : désactivé)"
+
+#: builtin/blame.c:2369
+msgid "Ignore whitespace differences"
+msgstr "Ignorer les différences d'espace"
+
+#: builtin/blame.c:2370
+msgid "Spend extra cycles to find better match"
+msgstr "Dépenser des cycles supplémentaires pour trouver une meilleure correspondance"
+
+#: builtin/blame.c:2371
+msgid "Use revisions from <file> instead of calling git-rev-list"
+msgstr "Utiliser les révisions du fichier <fichier> au lieu d'appeler git-rev-list"
+
+#: builtin/blame.c:2372
+msgid "Use <file>'s contents as the final image"
+msgstr "Utiliser le contenu de <fichier> comme image finale"
+
+#: builtin/blame.c:2373 builtin/blame.c:2374
+msgid "score"
+msgstr "score"
+
+#: builtin/blame.c:2373
+msgid "Find line copies within and across files"
+msgstr "Trouver les copies de ligne dans et entre les fichiers"
+
+#: builtin/blame.c:2374
+msgid "Find line movements within and across files"
+msgstr "Trouver les mouvements de ligne dans et entre les fichiers"
+
+#: builtin/blame.c:2375
+msgid "n,m"
+msgstr "n,m"
+
+#: builtin/blame.c:2375
+msgid "Process only line range n,m, counting from 1"
+msgstr "Traiter seulement l'intervalle de ligne n,m en commençant le compte à 1"
+
+#: builtin/branch.c:24
+msgid "git branch [options] [-r | -a] [--merged | --no-merged]"
+msgstr "git branch [options] [-r | -a] [--merged | --no-merged]"
+
+#: builtin/branch.c:25
+msgid "git branch [options] [-l] [-f] <branchname> [<start-point>]"
+msgstr "git branch [options] [-l] [-f] <nomdebranch> [<point-de-départ>]"
+
+#: builtin/branch.c:26
+msgid "git branch [options] [-r] (-d | -D) <branchname>..."
+msgstr "git branch [options] [-r] (-d | -D) <nomdebranche>..."
+
+#: builtin/branch.c:27
+msgid "git branch [options] (-m | -M) [<oldbranch>] <newbranch>"
+msgstr "git branch [options] (-m | -M) [<anciennebranche>] <nouvellebranche>"
+
+#: builtin/branch.c:150
+#, c-format
+msgid ""
+"deleting branch '%s' that has been merged to\n"
+"         '%s', but not yet merged to HEAD."
+msgstr ""
+"suppression de la branche '%s' qui a été fusionnée dans\n"
+"         '%s', mais pas dans HEAD."
+
+#: builtin/branch.c:154
+#, c-format
+msgid ""
+"not deleting branch '%s' that is not yet merged to\n"
+"         '%s', even though it is merged to HEAD."
+msgstr ""
+"branche '%s' non supprimée car elle n'a pas été fusionnée dans\n"
+"         '%s', même si elle est fusionnée dans HEAD."
+
+#: builtin/branch.c:168
+#, c-format
+msgid "Couldn't look up commit object for '%s'"
+msgstr "Impossible de rechercher l'objet commit pour '%s'"
+
+#: builtin/branch.c:172
+#, 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 ""
+"La branche '%s' n'est pas totalement fusionnée.\n"
+"Si vous êtes sur que vous voulez la supprimer, lancez 'git branch -D %s'."
+
+#: builtin/branch.c:185
+msgid "Update of config-file failed"
+msgstr "Échec de la mise à jour du fichier de config"
+
+#: builtin/branch.c:213
+msgid "cannot use -a with -d"
+msgstr "impossible d'utiliser -a avec -d"
+
+#: builtin/branch.c:219
+msgid "Couldn't look up commit object for HEAD"
+msgstr "Impossible de rechercher l'objet commit pour HEAD"
+
+#: builtin/branch.c:227
+#, c-format
+msgid "Cannot delete the branch '%s' which you are currently on."
+msgstr "Impossible de supprimer la branche '%s' sur laquelle vous êtes."
+
+#: builtin/branch.c:240
+#, c-format
+msgid "remote branch '%s' not found."
+msgstr "branche distante %s' non trouvée."
+
+#: builtin/branch.c:241
+#, c-format
+msgid "branch '%s' not found."
+msgstr "branche '%s' non trouvée."
+
+#: builtin/branch.c:255
+#, c-format
+msgid "Error deleting remote branch '%s'"
+msgstr "Erreur lors de la suppression de la branche distante '%s'"
+
+#: builtin/branch.c:256
+#, c-format
+msgid "Error deleting branch '%s'"
+msgstr "Erreur lors de la suppression de la branche '%s'"
+
+#: builtin/branch.c:263
+#, c-format
+msgid "Deleted remote branch %s (was %s).\n"
+msgstr "Branche distante %s supprimée (précédemment %s).\n"
+
+#: builtin/branch.c:264
+#, c-format
+msgid "Deleted branch %s (was %s).\n"
+msgstr "Branche %s supprimée (précédemment %s).\n"
+
+#: builtin/branch.c:366
+#, c-format
+msgid "branch '%s' does not point at a commit"
+msgstr "la branche '%s' ne pointe pas sur un commit"
+
+#: builtin/branch.c:453
+#, c-format
+msgid "[%s: behind %d]"
+msgstr "[%s: en retard de %d]"
+
+#: builtin/branch.c:455
+#, c-format
+msgid "[behind %d]"
+msgstr "[en retard de %d]"
+
+#: builtin/branch.c:459
+#, c-format
+msgid "[%s: ahead %d]"
+msgstr "[%s : en avance de %d]"
+
+#: builtin/branch.c:461
+#, c-format
+msgid "[ahead %d]"
+msgstr "[en avance de %d]"
+
+#: builtin/branch.c:464
+#, c-format
+msgid "[%s: ahead %d, behind %d]"
+msgstr "[%s : en avance de %d, en retard de %d]"
+
+#: builtin/branch.c:467
+#, c-format
+msgid "[ahead %d, behind %d]"
+msgstr "[en avance de %d, en retard de %d]"
+
+#: builtin/branch.c:490
+msgid " **** invalid ref ****"
+msgstr " **** référence invalide ****"
+
+#: builtin/branch.c:582
+#, c-format
+msgid "(no branch, rebasing %s)"
+msgstr "(aucune branche, rebasage de %s)"
+
+#: builtin/branch.c:585
+#, c-format
+msgid "(no branch, bisect started on %s)"
+msgstr "(aucune branche, bisect a démarré sur %s)"
+
+#: builtin/branch.c:588
+#, c-format
+msgid "(detached from %s)"
+msgstr "(détaché de %s)"
+
+#: builtin/branch.c:591
+msgid "(no branch)"
+msgstr "(aucune branche)"
+
+#: builtin/branch.c:637
+#, c-format
+msgid "object '%s' does not point to a commit"
+msgstr "l'objet '%s' ne pointe pas sur un commit"
+
+#: builtin/branch.c:669
+msgid "some refs could not be read"
+msgstr "des références n'ont pas pu être lues"
+
+#: builtin/branch.c:682
+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:692
+#, c-format
+msgid "Invalid branch name: '%s'"
+msgstr "Nom de branche invalide : '%s'"
+
+#: builtin/branch.c:707
+msgid "Branch rename failed"
+msgstr "Echec de renommage de la branche"
+
+#: builtin/branch.c:711
+#, c-format
+msgid "Renamed a misnamed branch '%s' away"
+msgstr "Renommage d'un branche mal nommée '%s'"
+
+#: builtin/branch.c:715
+#, 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:722
+msgid "Branch is renamed, but update of config-file failed"
+msgstr "La branche est renommée, mais la mise à jour du fichier de config a échoué"
+
+#: builtin/branch.c:737
+#, c-format
+msgid "malformed object name %s"
+msgstr "nom d'objet malformé %s"
+
+#: builtin/branch.c:761
+#, c-format
+msgid "could not write branch description template: %s"
+msgstr "impossible d'écrire le modèle de description de branche : %s"
+
+#: builtin/branch.c:791
+msgid "Generic options"
+msgstr "Options génériques"
+
+#: builtin/branch.c:793
+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:794
+msgid "suppress informational messages"
+msgstr "supprimer les messages d'information"
+
+#: builtin/branch.c:795
+msgid "set up tracking mode (see git-pull(1))"
+msgstr "régler le mode de suivi (voir git-pull(1))"
+
+#: builtin/branch.c:797
+msgid "change upstream info"
+msgstr "modifier l'information amont"
+
+#: builtin/branch.c:801
+msgid "use colored output"
+msgstr "utiliser la coloration dans la sortie"
+
+#: builtin/branch.c:802
+msgid "act on remote-tracking branches"
+msgstr "agir sur les branches de suivi distantes"
+
+#: builtin/branch.c:805 builtin/branch.c:811 builtin/branch.c:832
+#: builtin/branch.c:838 builtin/commit.c:1368 builtin/commit.c:1369
+#: builtin/commit.c:1370 builtin/commit.c:1371 builtin/tag.c:468
+msgid "commit"
+msgstr "valider"
+
+#: builtin/branch.c:806 builtin/branch.c:812
+msgid "print only branches that contain the commit"
+msgstr "afficher seulement les branches qui contiennent le commit"
+
+#: builtin/branch.c:818
+msgid "Specific git-branch actions:"
+msgstr "Actions spécifiques à git-branch :"
+
+#: builtin/branch.c:819
+msgid "list both remote-tracking and local branches"
+msgstr "afficher à la fois les branches de suivi et les branches locales"
+
+#: builtin/branch.c:821
+msgid "delete fully merged branch"
+msgstr "supprimer une branche totalement fusionnée"
+
+#: builtin/branch.c:822
+msgid "delete branch (even if not merged)"
+msgstr "supprimer une branche (même non fusionnée)"
+
+#: builtin/branch.c:823
+msgid "move/rename a branch and its reflog"
+msgstr "déplacer/renommer une branche et son reflog"
+
+#: builtin/branch.c:824
+msgid "move/rename a branch, even if target exists"
+msgstr "déplacer/renommer une branche, même si la cible existe"
+
+#: builtin/branch.c:825
+msgid "list branch names"
+msgstr "afficher les noms des branches"
+
+#: builtin/branch.c:826
+msgid "create the branch's reflog"
+msgstr "créer le reflog de la branche"
+
+#: builtin/branch.c:828
+msgid "edit the description for the branch"
+msgstr "éditer la description de la branche"
+
+#: builtin/branch.c:829
+msgid "force creation (when already exists)"
+msgstr "forcer la création (même si la cible existe)"
+
+#: builtin/branch.c:832
+msgid "print only not merged branches"
+msgstr "afficher seulement les branches non fusionnées"
+
+#: builtin/branch.c:838
+msgid "print only merged branches"
+msgstr "afficher seulement les branches fusionnées"
+
+#: builtin/branch.c:842
+msgid "list branches in columns"
+msgstr "afficher les branches en colonnes"
+
+#: builtin/branch.c:855
+msgid "Failed to resolve HEAD as a valid ref."
+msgstr "Échec de résolution de HEAD comme référence valide."
+
+#: builtin/branch.c:860 builtin/clone.c:619
+msgid "HEAD not found below refs/heads!"
+msgstr "HEAD non trouvée sous refs/heads !"
+
+#: builtin/branch.c:883
+msgid "--column and --verbose are incompatible"
+msgstr "--column et --verbose sont incompatibles"
+
+#: builtin/branch.c:889 builtin/branch.c:928
+msgid "branch name required"
+msgstr "le nom de branche est requis"
+
+#: builtin/branch.c:904
+msgid "Cannot give description to detached HEAD"
+msgstr "Impossible de décrire une HEAD détachée"
+
+#: builtin/branch.c:909
+msgid "cannot edit description of more than one branch"
+msgstr "impossible d'éditer la description de plus d'une branche"
+
+#: builtin/branch.c:916
+#, c-format
+msgid "No commit on branch '%s' yet."
+msgstr "Aucun commit sur la branche '%s'."
+
+#: builtin/branch.c:919
+#, c-format
+msgid "No branch named '%s'."
+msgstr "Aucune branche nommée '%s'."
+
+#: builtin/branch.c:934
+msgid "too many branches for a rename operation"
+msgstr "trop de branches pour une opération de renommage"
+
+#: builtin/branch.c:939
+msgid "too many branches to set new upstream"
+msgstr "trop de branches pour spécifier une branche amont"
+
+#: builtin/branch.c:943
+#, c-format
+msgid ""
+"could not set upstream of HEAD to %s when it does not point to any branch."
+msgstr "impossible de spécifier une branche amont de HEAD par %s qui ne pointe sur aucune branche."
+
+#: builtin/branch.c:946 builtin/branch.c:968 builtin/branch.c:990
+#, c-format
+msgid "no such branch '%s'"
+msgstr "pas de branche '%s'"
+
+#: builtin/branch.c:950
+#, c-format
+msgid "branch '%s' does not exist"
+msgstr "la branche '%s' n'existe pas"
+
+#: builtin/branch.c:962
+msgid "too many branches to unset upstream"
+msgstr "trop de branches pour désactiver un amont"
+
+#: builtin/branch.c:966
+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:972
+#, c-format
+msgid "Branch '%s' has no upstream information"
+msgstr "La branche '%s' n'a aucune information de branche amont"
+
+#: builtin/branch.c:987
+msgid "it does not make sense to create 'HEAD' manually"
+msgstr "créer manuellement 'HEAD' n'a aucun sens"
+
+#: builtin/branch.c:993
+msgid "-a and -r options to 'git branch' do not make sense with a branch name"
+msgstr "les options -a et -r de 'git branch' n'ont pas de sens avec un nom de branche"
+
+#: builtin/branch.c:996
+#, c-format
+msgid ""
+"The --set-upstream flag is deprecated and will be removed. Consider using --"
+"track or --set-upstream-to\n"
+msgstr "l'option --set-upstream est obsolète et va disparaître. Utilisez plutôt --track ou --set-upstream-to\n"
+
+#: builtin/branch.c:1013
+#, c-format
+msgid ""
+"\n"
+"If you wanted to make '%s' track '%s', do this:\n"
+"\n"
+msgstr "\n"
+"Si vous vouliez que '%s' suive '%s', faîtes ceci :\n"
+"\n"
+
+#: builtin/branch.c:1014
+#, c-format
+msgid "    git branch -d %s\n"
+msgstr "    git branch -d %s\n"
+
+#: builtin/branch.c:1015
+#, c-format
+msgid "    git branch --set-upstream-to %s\n"
+msgstr "    git branch -set-upstream-to %s\n"
+
+#: builtin/bundle.c:47
+#, c-format
+msgid "%s is okay\n"
+msgstr "%s est correct\n"
+
+#: builtin/bundle.c:56
+msgid "Need a repository to create a bundle."
+msgstr "La création d'un colis requiert un dépôt."
+
+#: builtin/bundle.c:60
+msgid "Need a repository to unbundle."
+msgstr "Le dépaquetage d'un colis requiert un dépôt."
+
+#: builtin/cat-file.c:176
+msgid "git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>"
+msgstr "git cat-file (-t|-s|-e|-p|<type>|--textconv) <objet>"
+
+#: builtin/cat-file.c:177
+msgid "git cat-file (--batch|--batch-check) < <list_of_objects>"
+msgstr "git cat-file (--batch|--batch-check) < <liste_d_objets>"
+
+#: builtin/cat-file.c:195
+msgid "<type> can be one of: blob, tree, commit, tag"
+msgstr "<type> peut être : blob, tree, commit ou tag"
+
+#: builtin/cat-file.c:196
+msgid "show object type"
+msgstr "afficher le type de l'objet"
+
+#: builtin/cat-file.c:197
+msgid "show object size"
+msgstr "afficher la taille de l'objet"
+
+#: builtin/cat-file.c:199
+msgid "exit with zero when there's no error"
+msgstr "sortir avec un code d'erreur nul quand il n'y a aucune erreur"
+
+#: builtin/cat-file.c:200
+msgid "pretty-print object's content"
+msgstr "afficher avec mise en forme le contenu de l'objet"
+
+#: builtin/cat-file.c:202
+msgid "for blob objects, run textconv on object's content"
+msgstr "pour les objets blob, lancer textconv sur le contenu de l'objet"
+
+#: builtin/cat-file.c:204
+msgid "show info and content of objects fed from the standard input"
+msgstr "afficher l'information et le contenu des objets passés en entrée standard"
+
+#: builtin/cat-file.c:207
+msgid "show info about objects fed from the standard input"
+msgstr "afficher l'information des objets passés en entrée standard"
+
+#: builtin/check-attr.c:11
+msgid "git check-attr [-a | --all | attr...] [--] pathname..."
+msgstr "git check-attr [-a | --all | attr...] [--] chemin..."
+
+#: builtin/check-attr.c:12
+msgid "git check-attr --stdin [-z] [-a | --all | attr...] < <list-of-paths>"
+msgstr "git check-attr --stdin [-z] [-a | --all | attr...] < <liste-de-chemins>"
+
+#: builtin/check-attr.c:19
+msgid "report all attributes set on file"
+msgstr "afficher tous les attributs associés au fichier"
+
+#: builtin/check-attr.c:20
+msgid "use .gitattributes only from the index"
+msgstr "utiliser .gitattributes seulement depuis l'index"
+
+#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:75
+msgid "read file names from stdin"
+msgstr "lire les noms de fichier depuis stdin"
+
+#: builtin/check-attr.c:23 builtin/check-ignore.c:24
+msgid "input paths are terminated by a null character"
+msgstr "les chemins en entrée sont terminés par le caractère nul"
+
+#: builtin/check-ignore.c:18 builtin/checkout.c:1044 builtin/gc.c:177
+msgid "suppress progress reporting"
+msgstr "supprimer l'état d'avancement"
+
+#: builtin/check-ignore.c:146
+msgid "cannot specify pathnames with --stdin"
+msgstr "impossible de spécifier les chemins avec --stdin"
+
+#: builtin/check-ignore.c:149
+msgid "-z only makes sense with --stdin"
+msgstr "-z n'a de sens qu'avec l'option --stdin"
+
+#: builtin/check-ignore.c:151
+msgid "no path specified"
+msgstr "aucun chemin spécifié"
+
+#: builtin/check-ignore.c:155
+msgid "--quiet is only valid with a single pathname"
+msgstr "--quiet n'est valide qu'avec un seul chemin"
+
+#: builtin/check-ignore.c:157
+msgid "cannot have both --quiet and --verbose"
+msgstr "impossible d'avoir --quiet et --verbose"
+
+#: builtin/checkout-index.c:126
+msgid "git checkout-index [options] [--] [<file>...]"
+msgstr "git checkout-index [options] [--] [<fichier>...]"
+
+#: builtin/checkout-index.c:187
+msgid "check out all files in the index"
+msgstr "extraire tous les fichiers présents dans l'index"
+
+#: builtin/checkout-index.c:188
+msgid "force overwrite of existing files"
+msgstr "forcer l'écrasement des fichiers existants"
+
+#: builtin/checkout-index.c:190
+msgid "no warning for existing files and files not in index"
+msgstr "pas d'avertissement pour les fichiers existants et les fichiers absents de l'index"
+
+#: builtin/checkout-index.c:192
+msgid "don't checkout new files"
+msgstr "ne pas extraire les nouveaux fichiers"
+
+#: builtin/checkout-index.c:194
+msgid "update stat information in the index file"
+msgstr "mettre à jour l'information de stat dans le fichier d'index"
+
+#: builtin/checkout-index.c:200
+msgid "read list of paths from the standard input"
+msgstr "lire la liste des chemins depuis l'entrée standard"
+
+#: builtin/checkout-index.c:202
+msgid "write the content to temporary files"
+msgstr "écrire le contenu dans des fichiers temporaires"
+
+#: builtin/checkout-index.c:203 builtin/column.c:30
+msgid "string"
+msgstr "chaîne"
+
+#: builtin/checkout-index.c:204
+msgid "when creating files, prepend <string>"
+msgstr "lors de la création de fichiers, préfixer par <chaîne>"
+
+#: builtin/checkout-index.c:207
+msgid "copy out the files from named stage"
+msgstr "copier les fichiers depuis l'index nommé"
+
+#: builtin/checkout.c:25
+msgid "git checkout [options] <branch>"
+msgstr "git checkout [options] <branche>"
+
+#: builtin/checkout.c:26
+msgid "git checkout [options] [<branch>] -- <file>..."
+msgstr "git checkout [options] [<branche>] -- <fichier>..."
+
+#: builtin/checkout.c:117 builtin/checkout.c:150
+#, c-format
+msgid "path '%s' does not have our version"
+msgstr "le chemin '%s' n'a pas notre version"
+
+#: builtin/checkout.c:119 builtin/checkout.c:152
+#, c-format
+msgid "path '%s' does not have their version"
+msgstr "le chemin '%s' n'a pas leur version"
+
+#: builtin/checkout.c:135
+#, c-format
+msgid "path '%s' does not have all necessary versions"
+msgstr "le chemin '%s' n'a aucune des versions nécessaires"
+
+#: builtin/checkout.c:179
+#, c-format
+msgid "path '%s' does not have necessary versions"
+msgstr "le chemin '%s' n'a pas les versions nécessaires"
+
+#: builtin/checkout.c:196
+#, c-format
+msgid "path '%s': cannot merge"
+msgstr "chemin '%s' : impossible de fusionner"
+
+#: builtin/checkout.c:213
+#, c-format
+msgid "Unable to add merge result for '%s'"
+msgstr "Impossible d'ajouter le résultat de fusion pour '%s'"
+
+#: builtin/checkout.c:237 builtin/checkout.c:240 builtin/checkout.c:243
+#: builtin/checkout.c:246
+#, c-format
+msgid "'%s' cannot be used with updating paths"
+msgstr "'%s' ne peut pas être utilisé avec des mises à jour de chemins"
+
+#: builtin/checkout.c:249 builtin/checkout.c:252
+#, c-format
+msgid "'%s' cannot be used with %s"
+msgstr "'%s' ne peut pas être utilisé avec %s"
+
+#: builtin/checkout.c:255
+#, c-format
+msgid "Cannot update paths and switch to branch '%s' at the same time."
+msgstr "Impossible de mettre à jour les chemins et basculer sur la branche '%s' en même temps."
+
+#: builtin/checkout.c:266 builtin/checkout.c:458
+msgid "corrupt index file"
+msgstr "fichier d'index corrompu"
+
+#: builtin/checkout.c:329 builtin/checkout.c:336
+#, c-format
+msgid "path '%s' is unmerged"
+msgstr "le chemin '%s' n'est pas fusionné"
+
+#: builtin/checkout.c:480
+msgid "you need to resolve your current index first"
+msgstr "vous devez d'abord résoudre votre index courant"
+
+#: builtin/checkout.c:601
+#, c-format
+msgid "Can not do reflog for '%s'\n"
+msgstr "Impossible de faire un reflog pour '%s'\n"
+
+#: builtin/checkout.c:634
+msgid "HEAD is now at"
+msgstr "HEAD est maintenant sur"
+
+#: builtin/checkout.c:641
+#, c-format
+msgid "Reset branch '%s'\n"
+msgstr "Remise à zéro de la branche '%s'\n"
+
+#: builtin/checkout.c:644
+#, c-format
+msgid "Already on '%s'\n"
+msgstr "Déjà sur '%s'\n"
+
+#: builtin/checkout.c:648
+#, c-format
+msgid "Switched to and reset branch '%s'\n"
+msgstr "Basculement et remise à zéro de la branche '%s'\n"
+
+#: builtin/checkout.c:650 builtin/checkout.c:987
+#, c-format
+msgid "Switched to a new branch '%s'\n"
+msgstr "Basculement sur la nouvelle branche '%s'\n"
+
+#: builtin/checkout.c:652
+#, c-format
+msgid "Switched to branch '%s'\n"
+msgstr "Basculement sur la branche '%s'\n"
+
+#: builtin/checkout.c:708
+#, c-format
+msgid " ... and %d more.\n"
+msgstr " ... et %d en plus.\n"
+
+#. The singular version
+#: builtin/checkout.c:714
+#, 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] ""
+"Attention : vous laissez %d commit en retard, non connectés à\n"
+"une branche :\n"
+"\n"
+"%s\n"
+msgstr[1] ""
+"Attention : vous laissez %d commits en retard, non connectés à\n"
+"une branche :\n"
+"\n"
+"%s\n"
+
+#: builtin/checkout.c:732
+#, c-format
+msgid ""
+"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 ""
+"Si vous souhaitez les garder en créant une nouvelle branche, c'est le bon moment\n"
+"de le faire avec :\n"
+"\n"
+"git branche nouvelle_branche %s\n"
+"\n"
+
+#: builtin/checkout.c:762
+msgid "internal error in revision walk"
+msgstr "erreur interne lors du parcours des révisions"
+
+#: builtin/checkout.c:766
+msgid "Previous HEAD position was"
+msgstr "La position précédente de HEAD était"
+
+#: builtin/checkout.c:793 builtin/checkout.c:982
+msgid "You are on a branch yet to be born"
+msgstr "Vous êtes sur une branche qui doit encore naître"
+
+#. case (1)
+#: builtin/checkout.c:918
+#, c-format
+msgid "invalid reference: %s"
+msgstr "référence invalide : %s"
+
+#. case (1): want a tree
+#: builtin/checkout.c:957
+#, c-format
+msgid "reference is not a tree: %s"
+msgstr "la référence n'est pas un arbre : %s"
+
+#: builtin/checkout.c:996
+msgid "paths cannot be used with switching branches"
+msgstr "impossible d'utiliser des chemins avec un basculement de branches"
+
+#: builtin/checkout.c:999 builtin/checkout.c:1003
+#, 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:1007 builtin/checkout.c:1010 builtin/checkout.c:1015
+#: builtin/checkout.c:1018
+#, c-format
+msgid "'%s' cannot be used with '%s'"
+msgstr "'%s' ne peut pas être utilisé avec '%s'"
+
+#: builtin/checkout.c:1023
+#, 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:1045 builtin/checkout.c:1047 builtin/clone.c:90
+#: builtin/remote.c:169 builtin/remote.c:171
+msgid "branch"
+msgstr "branche"
+
+#: builtin/checkout.c:1046
+msgid "create and checkout a new branch"
+msgstr "créer et extraire une nouvelle branche"
+
+#: builtin/checkout.c:1048
+msgid "create/reset and checkout a branch"
+msgstr "créer/réinitialiser et extraire une branche"
+
+#: builtin/checkout.c:1049
+msgid "create reflog for new branch"
+msgstr "créer un refog pour une nouvelle branche"
+
+#: builtin/checkout.c:1050
+msgid "detach the HEAD at named commit"
+msgstr "détacher la HEAD à la validation nommée"
+
+#: builtin/checkout.c:1051
+msgid "set upstream info for new branch"
+msgstr "paramétrer l'information de branche amont pour une nouvelle branche"
+
+#: builtin/checkout.c:1053
+msgid "new branch"
+msgstr "nouvelle branche"
+
+#: builtin/checkout.c:1053
+msgid "new unparented branch"
+msgstr "nouvelle branche sans parent"
+
+#: builtin/checkout.c:1054
+msgid "checkout our version for unmerged files"
+msgstr "extraire notre version pour les fichiers non fusionnés"
+
+#: builtin/checkout.c:1056
+msgid "checkout their version for unmerged files"
+msgstr "extraire leur version pour les fichiers non fusionnés"
+
+#: builtin/checkout.c:1058
+msgid "force checkout (throw away local modifications)"
+msgstr "forcer l'extraction (laisser tomber les modifications locales)"
+
+#: builtin/checkout.c:1059
+msgid "perform a 3-way merge with the new branch"
+msgstr "réaliser une fusion à 3 points avec la nouvelle branche"
+
+#: builtin/checkout.c:1060 builtin/merge.c:217
+msgid "update ignored files (default)"
+msgstr "mettre à jour les fichiers ignorés (par défaut)"
+
+#: builtin/checkout.c:1061 builtin/log.c:1158 parse-options.h:245
+msgid "style"
+msgstr "style"
+
+#: builtin/checkout.c:1062
+msgid "conflict style (merge or diff3)"
+msgstr "style de conflit (fusion ou diff3)"
+
+#: builtin/checkout.c:1065
+msgid "do not limit pathspecs to sparse entries only"
+msgstr "ne pas limiter les spécificateurs de chemins aux seules entrées creuses"
+
+#: builtin/checkout.c:1067
+msgid "second guess 'git checkout no-such-branch'"
+msgstr "deuxième chance 'git checkout branche-inexistante'"
+
+#: builtin/checkout.c:1091
+msgid "-b, -B and --orphan are mutually exclusive"
+msgstr "-b, -B et --orphan sont mutuellement exclusifs"
+
+#: builtin/checkout.c:1108
+msgid "--track needs a branch name"
+msgstr "--track requiert un nom de branche"
+
+#: builtin/checkout.c:1115
+msgid "Missing branch name; try -b"
+msgstr "Nom de branche manquant ; essayez -b"
+
+#: builtin/checkout.c:1150
+msgid "invalid path specification"
+msgstr "spécification de chemin invalide"
+
+#: builtin/checkout.c:1157
+#, c-format
+msgid ""
+"Cannot update paths and switch to branch '%s' at the same time.\n"
+"Did you intend to checkout '%s' which can not be resolved as commit?"
+msgstr ""
+"Impossible de mettre à jour les chemins et de basculer sur la branche '%s' en même temps.\n"
+"Souhaitiez-vous extraire '%s' qui ne peut être résolu comme commit ?"
+
+#: builtin/checkout.c:1162
+#, 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:1166
+msgid ""
+"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
+"checking out of the index."
+msgstr ""
+"git checkout: --ours/--theirs, --force et --merge sont incompatibles lors\n"
+"de l'extraction de l'index."
+
+#: builtin/clean.c:20
+msgid "git clean [-d] [-f] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
+msgstr "git clean [-d] [-f] [-n] [-q] [-e <motif>] [-x | -X] [--] <chemins>..."
+
+#: builtin/clean.c:24
+#, c-format
+msgid "Removing %s\n"
+msgstr "Suppression de %s\n"
+
+#: builtin/clean.c:25
+#, c-format
+msgid "Would remove %s\n"
+msgstr "Supprimerait %s\n"
+
+#: builtin/clean.c:26
+#, c-format
+msgid "Skipping repository %s\n"
+msgstr "Ignore le dépôt %s\n"
+
+#: builtin/clean.c:27
+#, c-format
+msgid "Would skip repository %s\n"
+msgstr "Ignorerait le dépôt %s\n"
+
+#: builtin/clean.c:28
+#, c-format
+msgid "failed to remove %s"
+msgstr "échec de la suppression de %s"
+
+#: builtin/clean.c:160
+msgid "do not print names of files removed"
+msgstr "ne pas afficher les noms des fichiers supprimés"
+
+#: builtin/clean.c:162
+msgid "force"
+msgstr "forcer"
+
+#: builtin/clean.c:164
+msgid "remove whole directories"
+msgstr "supprimer les répertoires entiers"
+
+#: builtin/clean.c:165 builtin/describe.c:412 builtin/grep.c:717
+#: builtin/ls-files.c:487 builtin/name-rev.c:231 builtin/show-ref.c:182
+msgid "pattern"
+msgstr "motif"
+
+#: builtin/clean.c:166
+msgid "add <pattern> to ignore rules"
+msgstr "ajouter <motif> aux règles ignore"
+
+#: builtin/clean.c:167
+msgid "remove ignored files, too"
+msgstr "supprimer les fichiers ignorés, aussi"
+
+#: builtin/clean.c:169
+msgid "remove only ignored files"
+msgstr "supprimer seulement les fichiers ignorés"
+
+#: builtin/clean.c:187
+msgid "-x and -X cannot be used together"
+msgstr "-x et -X ne peuvent pas être utilisés ensemble"
+
+#: builtin/clean.c:191
+msgid ""
+"clean.requireForce set to true and neither -n nor -f given; refusing to clean"
+msgstr "clean.requireForce positionné à true et ni -n ni -f fourni ; refus de nettoyer"
+
+#: builtin/clean.c:194
+msgid ""
+"clean.requireForce defaults to true and neither -n nor -f given; refusing to "
+"clean"
+msgstr "clean.requireForce à true par défaut et ni -n ni -f fourni ; refus de nettoyer"
+
+#: builtin/clone.c:37
+msgid "git clone [options] [--] <repo> [<dir>]"
+msgstr "git clone [options] [--] <dépôt> [<répertoire>]"
+
+#: builtin/clone.c:65 builtin/fetch.c:82 builtin/merge.c:214
+#: builtin/push.c:436
+msgid "force progress reporting"
+msgstr "forcer l'état d'avancement"
+
+#: builtin/clone.c:67
+msgid "don't create a checkout"
+msgstr "ne pas créer d'extraction"
+
+#: builtin/clone.c:68 builtin/clone.c:70 builtin/init-db.c:488
+msgid "create a bare repository"
+msgstr "créer un dépôt nu"
+
+#: builtin/clone.c:73
+msgid "create a mirror repository (implies bare)"
+msgstr "créer un dépôt miroir (implique dépôt nu)"
+
+#: builtin/clone.c:75
+msgid "to clone from a local repository"
+msgstr "pour cloner depuis un dépôt local"
+
+#: builtin/clone.c:77
+msgid "don't use local hardlinks, always copy"
+msgstr "ne pas utiliser de liens durs locaux, toujours copier"
+
+#: builtin/clone.c:79
+msgid "setup as shared repository"
+msgstr "régler comme dépôt partagé"
+
+#: builtin/clone.c:81 builtin/clone.c:83
+msgid "initialize submodules in the clone"
+msgstr "initialiser les sous-modules dans le clone"
+
+#: builtin/clone.c:84 builtin/init-db.c:485
+msgid "template-directory"
+msgstr "répertoire-modèle"
+
+#: builtin/clone.c:85 builtin/init-db.c:486
+msgid "directory from which templates will be used"
+msgstr "répertoire depuis lequel les modèles vont être utilisés"
+
+#: builtin/clone.c:87
+msgid "reference repository"
+msgstr "dépôt de référence"
+
+#: builtin/clone.c:88 builtin/column.c:26 builtin/merge-file.c:44
+msgid "name"
+msgstr "nom"
+
+#: builtin/clone.c:89
+msgid "use <name> instead of 'origin' to track upstream"
+msgstr "utiliser <nom> au lieu de 'origin' pour suivre la branche amont"
+
+#: builtin/clone.c:91
+msgid "checkout <branch> instead of the remote's HEAD"
+msgstr "extraire <branche> au lieu de la HEAD du répertoire distant"
+
+#: builtin/clone.c:93
+msgid "path to git-upload-pack on the remote"
+msgstr "chemin vers git-upload-pack sur le serveur distant"
+
+#: builtin/clone.c:94 builtin/fetch.c:83 builtin/grep.c:662
+msgid "depth"
+msgstr "profondeur"
+
+#: builtin/clone.c:95
+msgid "create a shallow clone of that depth"
+msgstr "créer un clone superficiel de cette profondeur"
+
+#: builtin/clone.c:97
+msgid "clone only one branch, HEAD or --branch"
+msgstr "cloner seulement une branche, HEAD ou --branch"
+
+#: builtin/clone.c:98 builtin/init-db.c:494
+msgid "gitdir"
+msgstr "gitdir"
+
+#: builtin/clone.c:99 builtin/init-db.c:495
+msgid "separate git dir from working tree"
+msgstr "séparer le répertoire git de la copie de travail"
+
+#: builtin/clone.c:100
+msgid "key=value"
+msgstr "clé=valeur"
+
+#: builtin/clone.c:101
+msgid "set config inside the new repository"
+msgstr "régler la configuration dans le nouveau dépôt"
+
+#: builtin/clone.c:254
+#, 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."
+
+#: builtin/clone.c:317
+#, c-format
+msgid "failed to create directory '%s'"
+msgstr "échec de la création du répertoire '%s'"
+
+#: builtin/clone.c:319 builtin/diff.c:77
+#, c-format
+msgid "failed to stat '%s'"
+msgstr "échec du stat de '%s'"
+
+#: builtin/clone.c:321
+#, c-format
+msgid "%s exists and is not a directory"
+msgstr "%s existe et n'est pas un répertoire"
+
+#: builtin/clone.c:335
+#, c-format
+msgid "failed to stat %s\n"
+msgstr "échec du stat de %s\n"
+
+#: builtin/clone.c:357
+#, c-format
+msgid "failed to create link '%s'"
+msgstr "échec de la création du lien '%s'"
+
+#: builtin/clone.c:361
+#, c-format
+msgid "failed to copy file to '%s'"
+msgstr "échec de la copie vers '%s'"
+
+#: builtin/clone.c:384
+#, c-format
+msgid "done.\n"
+msgstr "fait.\n"
+
+#: builtin/clone.c:397
+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 "Le clone a réussi, mais l'extraction a échoué.\n"
+"Vous pouvez inspecter ce qui a été extrait avec 'git status'\n"
+"et réessayer l'extraction avec 'git checkout -f HEAD'\n"
+
+#: builtin/clone.c:476
+#, c-format
+msgid "Could not find remote branch %s to clone."
+msgstr "Impossible de trouver la branche distante '%s' à cloner."
+
+#: builtin/clone.c:550
+msgid "remote did not send all necessary objects"
+msgstr "le serveur distant n'a pas envoyé tous les objets nécessaires"
+
+#: builtin/clone.c:610
+msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
+msgstr "la HEAD distante réfère à une référence non existante, impossible de l'extraire.\n"
+
+#: builtin/clone.c:641
+msgid "unable to checkout working tree"
+msgstr "inpossible d'extraire la copie de travail"
+
+#: builtin/clone.c:749
+msgid "Too many arguments."
+msgstr "Trop d'arguments."
+
+#: builtin/clone.c:753
+msgid "You must specify a repository to clone."
+msgstr "Vous devez spécifier un dépôt à cloner."
+
+#: builtin/clone.c:764
+#, c-format
+msgid "--bare and --origin %s options are incompatible."
+msgstr "les options --bare et --origin %s sont incompatibles."
+
+#: builtin/clone.c:767
+msgid "--bare and --separate-git-dir are incompatible."
+msgstr "--bare et --separate-git-dir sont incompatibles."
+
+#: builtin/clone.c:780
+#, c-format
+msgid "repository '%s' does not exist"
+msgstr "le dépôt '%s' n'existe pas"
+
+#: builtin/clone.c:785
+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:795
+#, 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:805
+#, c-format
+msgid "working tree '%s' already exists."
+msgstr "la copie de travail '%s' existe déjà."
+
+#: builtin/clone.c:818 builtin/clone.c:830
+#, 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:821
+#, 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:840
+#, c-format
+msgid "Cloning into bare repository '%s'...\n"
+msgstr "Clonage dans le dépôt nu '%s'\n"
+
+#: builtin/clone.c:842
+#, c-format
+msgid "Cloning into '%s'...\n"
+msgstr "Clonage dans '%s'...\n"
+
+#: builtin/clone.c:877
+#, c-format
+msgid "Don't know how to clone %s"
+msgstr "Je ne sais pas cloner %s"
+
+#: builtin/clone.c:926
+#, 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:933
+msgid "You appear to have cloned an empty repository."
+msgstr "Vous semblez avoir cloné un dépôt vide."
+
+#: builtin/column.c:9
+msgid "git column [options]"
+msgstr "git column [options]"
+
+#: builtin/column.c:26
+msgid "lookup config vars"
+msgstr "rechercher les variables de configuration"
+
+#: builtin/column.c:27 builtin/column.c:28
+msgid "layout to use"
+msgstr "mise en page à utiliser"
+
+#: builtin/column.c:29
+msgid "Maximum width"
+msgstr "Largeur maximale"
+
+#: builtin/column.c:30
+msgid "Padding space on left border"
+msgstr "Remplissage d'espace sur la bordure gauche"
+
+#: builtin/column.c:31
+msgid "Padding space on right border"
+msgstr "Remplissage d'espace sur le côté droit"
+
+#: builtin/column.c:32
+msgid "Padding space between columns"
+msgstr "Remplissage d'espace entre les colonnes"
+
+#: builtin/column.c:51
+msgid "--command must be the first argument"
+msgstr "--command doit être le premier argument"
+
+#: builtin/commit.c:34
+msgid "git commit [options] [--] <pathspec>..."
+msgstr "git commit [options] [--] <spécification-de-chemin>..."
+
+#: builtin/commit.c:39
+msgid "git status [options] [--] <pathspec>..."
+msgstr "git status [options] [--] <spécification-de-chemin>..."
+
+#: builtin/commit.c:44
+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 ""
+"Votre nom et votre adresse e-mail ont été configurés automatiquement en se fondant\n"
+"sur votre nom d'utilisateur et votre nom d'ordinateur. Veuillez vérifier qu'ils sont corrects.\n"
+"Vous pouvez supprimer ce message en les paramétrant explicitement :\n"
+"\n"
+"    git config --global user.name \"Votre Nom\"\n"
+"    git config --global user.email vous@exemple.com\n"
+"\n"
+"Après ceci, vous pouvez corriger l'identité utilisée pour ce commit avec :\n"
+"\n"
+"    git commit --amend --reset-author\n"
+
+#: builtin/commit.c:56
+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 "Vous avez demandé de corriger le commit le plus récent, mais le faire le rendrait\n"
+"vide. Vous pouvez répéter votre commande avec --allow-empty, ou vous pouvez\n"
+"supprimer complètement le commit avec \"git reset HEAD^\".\n"
+
+#: builtin/commit.c:61
+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"
+"Otherwise, please use 'git reset'\n"
+msgstr ""
+"Le picorage précédent est à présent vide, vraisemblablement dû à une résolution de conflit.\n"
+"Si vous souhaitez tout de même le valider, utilisez :\n"
+"\n"
+"    git commit --allow-empty\n"
+"\n"
+"Sinon, utilisez 'git reset'\n"
+
+#: builtin/commit.c:260
+msgid "failed to unpack HEAD tree object"
+msgstr "échec du dépaquetage de l'objet arbre HEAD"
+
+#: builtin/commit.c:302
+msgid "unable to create temporary index"
+msgstr "impossible de créer l'index temporaire"
+
+#: builtin/commit.c:308
+msgid "interactive add failed"
+msgstr "échec de l'ajout interactif"
+
+#: builtin/commit.c:341 builtin/commit.c:362 builtin/commit.c:412
+msgid "unable to write new_index file"
+msgstr "impossible d'écrire le fichier new_index"
+
+#: builtin/commit.c:393
+msgid "cannot do a partial commit during a merge."
+msgstr "impossible de faire une validation partielle pendant une fusion."
+
+#: builtin/commit.c:395
+msgid "cannot do a partial commit during a cherry-pick."
+msgstr "impossible de faire une validation partielle pendant un picorage."
+
+#: builtin/commit.c:405
+msgid "cannot read the index"
+msgstr "impossible de lire l'index"
+
+#: builtin/commit.c:425
+msgid "unable to write temporary index file"
+msgstr "impossible d'écrire le fichier d'index temporaire"
+
+#: builtin/commit.c:513 builtin/commit.c:519
+#, c-format
+msgid "invalid commit: %s"
+msgstr "commit invalide : %s"
+
+#: builtin/commit.c:542
+msgid "malformed --author parameter"
+msgstr "paramètre --author mal formé"
+
+#: builtin/commit.c:562
+#, c-format
+msgid "Malformed ident string: '%s'"
+msgstr "Chaîne ident mal formée : '%s'"
+
+#: builtin/commit.c:600 builtin/commit.c:633 builtin/commit.c:956
+#, c-format
+msgid "could not lookup commit %s"
+msgstr "impossible de rechercher le commit %s"
+
+#: builtin/commit.c:612 builtin/shortlog.c:270
+#, c-format
+msgid "(reading log message from standard input)\n"
+msgstr "(lecture du message de journal depuis l'entrée standard)\n"
+
+#: builtin/commit.c:614
+msgid "could not read log from standard input"
+msgstr "impossible de lire le journal depuis l'entrée standard"
+
+#: builtin/commit.c:618
+#, c-format
+msgid "could not read log file '%s'"
+msgstr "impossible de lire le fichier de journal '%s'"
+
+#: builtin/commit.c:624
+msgid "commit has empty message"
+msgstr "le commit a un message vide"
+
+#: builtin/commit.c:640
+msgid "could not read MERGE_MSG"
+msgstr "impossible de lire MERGE_MSG"
+
+#: builtin/commit.c:644
+msgid "could not read SQUASH_MSG"
+msgstr "impossible de lire SQUASH_MSG"
+
+#: builtin/commit.c:648
+#, c-format
+msgid "could not read '%s'"
+msgstr "impossible de lire '%s'"
+
+#: builtin/commit.c:709
+msgid "could not write commit template"
+msgstr "impossible d'écrire le modèle de commit"
+
+#: builtin/commit.c:720
+#, c-format
+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"
+"and try again.\n"
+msgstr ""
+"\n"
+"Il semble que vous validiez une fusion.\n"
+"Si ce n'est pas le cas, veuillez supprimer le fichier\n"
+"\t%s\n"
+"et essayez à nouveau.\n"
+
+#: builtin/commit.c:725
+#, c-format
+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"
+"and try again.\n"
+msgstr ""
+"\n"
+"Il semble que vous validiez un picorage.\n"
+"Si ce n'est pas le cas, veuillez supprimer le fichier\n"
+"\t%s\n"
+"et essayez à nouveau.\n"
+
+#: builtin/commit.c:737
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Veuillez saisir le message de validation pour vos modifications. Les lignes\n"
+"commençant par '%c' seront ignorées, et un message vide abandonne la validation.\n"
+
+#: builtin/commit.c:742
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%c' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Veuillez saisir le message de validation pour vos modifications. Les lignes\n"
+"commençant par '%c' seront conservées ; vous pouvez les supprimer vous-même\n"
+"si vous le souhaitez. Un message vide abandonne la validation.\n"
+
+#: builtin/commit.c:755
+#, c-format
+msgid "%sAuthor:    %s"
+msgstr "%sAuteur :     %s"
+
+#: builtin/commit.c:762
+#, c-format
+msgid "%sCommitter: %s"
+msgstr "%sValidateur : %s"
+
+#: builtin/commit.c:782
+msgid "Cannot read index"
+msgstr "Impossible de lire l'index"
+
+#: builtin/commit.c:819
+msgid "Error building trees"
+msgstr "Erreur lors de la construction des arbres"
+
+#: builtin/commit.c:834 builtin/tag.c:359
+#, c-format
+msgid "Please supply the message using either -m or -F option.\n"
+msgstr "Veuillez fournir le message en utilisant l'option -m ou -F.\n"
+
+#: builtin/commit.c:931
+#, c-format
+msgid "No existing author found with '%s'"
+msgstr "Aucun auteur existant trouvé avec '%s'"
+
+#: builtin/commit.c:946 builtin/commit.c:1140
+#, c-format
+msgid "Invalid untracked files mode '%s'"
+msgstr "Mode de fichier non suivi invalide '%s'"
+
+#: builtin/commit.c:976
+msgid "Using both --reset-author and --author does not make sense"
+msgstr "L'utilisation simultanée de --reset-author et --author n'a pas de sens"
+
+#: builtin/commit.c:987
+msgid "You have nothing to amend."
+msgstr "Il n'y a rien à corriger."
+
+#: builtin/commit.c:990
+msgid "You are in the middle of a merge -- cannot amend."
+msgstr "Vous êtes en pleine fusion -- impossible de corriger (amend)."
+
+#: builtin/commit.c:992
+msgid "You are in the middle of a cherry-pick -- cannot amend."
+msgstr "Vous êtes en plein picorage -- impossible de corriger (amend)."
+
+#: builtin/commit.c:995
+msgid "Options --squash and --fixup cannot be used together"
+msgstr "Les options --squash et --fixup ne peuvent pas être utilisées ensemble"
+
+#: builtin/commit.c:1005
+msgid "Only one of -c/-C/-F/--fixup can be used."
+msgstr "Une seule option parmi -c/-C/-F/--fixup peut être utilisée."
+
+#: builtin/commit.c:1007
+msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
+msgstr "L'option -m ne peut pas être combinée avec -c/-C/-F/--fixup."
+
+#: builtin/commit.c:1015
+msgid "--reset-author can be used only with -C, -c or --amend."
+msgstr "--reset-author ne peut être utilisé qu'avec -C, -c ou --amend."
+
+#: builtin/commit.c:1032
+msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
+msgstr "Une seule option parmi --include/--only/--all/--interactive/--patch peut être utilisée."
+
+#: builtin/commit.c:1034
+msgid "No paths with --include/--only does not make sense."
+msgstr "Aucun chemin avec les options --include/--only n'a pas de sens."
+
+#: builtin/commit.c:1036
+msgid "Clever... amending the last one with dirty index."
+msgstr "Malin... correction du dernier avec un index sale."
+
+#: builtin/commit.c:1038
+msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
+msgstr ""
+
+#: builtin/commit.c:1048 builtin/tag.c:575
+#, c-format
+msgid "Invalid cleanup mode %s"
+msgstr ""
+
+#: builtin/commit.c:1053
+msgid "Paths with -a does not make sense."
+msgstr ""
+
+#: builtin/commit.c:1059 builtin/commit.c:1194
+msgid "--long and -z are incompatible"
+msgstr ""
+
+#: builtin/commit.c:1154 builtin/commit.c:1390
+msgid "show status concisely"
+msgstr ""
+
+#: builtin/commit.c:1156 builtin/commit.c:1392
+msgid "show branch information"
+msgstr ""
+
+#: builtin/commit.c:1158 builtin/commit.c:1394 builtin/push.c:426
+msgid "machine-readable output"
+msgstr ""
+
+#: builtin/commit.c:1161 builtin/commit.c:1396
+msgid "show status in long format (default)"
+msgstr ""
+
+#: builtin/commit.c:1164 builtin/commit.c:1399
+msgid "terminate entries with NUL"
+msgstr ""
+
+#: builtin/commit.c:1166 builtin/commit.c:1402 builtin/fast-export.c:659
+#: builtin/fast-export.c:662 builtin/tag.c:459
+msgid "mode"
+msgstr ""
+
+#: builtin/commit.c:1167 builtin/commit.c:1402
+msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
+msgstr ""
+
+#: builtin/commit.c:1170
+msgid "show ignored files"
+msgstr ""
+
+#: builtin/commit.c:1171 parse-options.h:151
+msgid "when"
+msgstr ""
+
+#: builtin/commit.c:1172
+msgid ""
+"ignore changes to submodules, optional when: all, dirty, untracked. "
+"(Default: all)"
+msgstr ""
+
+#: builtin/commit.c:1174
+msgid "list untracked files in columns"
+msgstr ""
+
+#: builtin/commit.c:1248
+msgid "couldn't look up newly created commit"
+msgstr ""
+
+#: builtin/commit.c:1250
+msgid "could not parse newly created commit"
+msgstr ""
+
+#: builtin/commit.c:1291
+msgid "detached HEAD"
+msgstr ""
+
+#: builtin/commit.c:1293
+msgid " (root-commit)"
+msgstr ""
+
+#: builtin/commit.c:1360
+msgid "suppress summary after successful commit"
+msgstr ""
+
+#: builtin/commit.c:1361
+msgid "show diff in commit message template"
+msgstr ""
+
+#: builtin/commit.c:1363
+msgid "Commit message options"
+msgstr ""
+
+#: builtin/commit.c:1364 builtin/tag.c:457
+msgid "read message from file"
+msgstr ""
+
+#: builtin/commit.c:1365
+msgid "author"
+msgstr ""
+
+#: builtin/commit.c:1365
+msgid "override author for commit"
+msgstr ""
+
+#: builtin/commit.c:1366 builtin/gc.c:178
+msgid "date"
+msgstr ""
+
+#: builtin/commit.c:1366
+msgid "override date for commit"
+msgstr ""
+
+#: builtin/commit.c:1367 builtin/merge.c:208 builtin/notes.c:533
+#: builtin/notes.c:690 builtin/tag.c:455
+msgid "message"
+msgstr ""
+
+#: builtin/commit.c:1367
+msgid "commit message"
+msgstr ""
+
+#: builtin/commit.c:1368
+msgid "reuse and edit message from specified commit"
+msgstr ""
+
+#: builtin/commit.c:1369
+msgid "reuse message from specified commit"
+msgstr ""
+
+#: builtin/commit.c:1370
+msgid "use autosquash formatted message to fixup specified commit"
+msgstr ""
+
+#: builtin/commit.c:1371
+msgid "use autosquash formatted message to squash specified commit"
+msgstr ""
+
+#: builtin/commit.c:1372
+msgid "the commit is authored by me now (used with -C/-c/--amend)"
+msgstr ""
+
+#: builtin/commit.c:1373 builtin/log.c:1113 builtin/revert.c:109
+msgid "add Signed-off-by:"
+msgstr ""
+
+#: builtin/commit.c:1374
+msgid "use specified template file"
+msgstr ""
+
+#: builtin/commit.c:1375
+msgid "force edit of commit"
+msgstr ""
+
+#: builtin/commit.c:1376
+msgid "default"
+msgstr ""
+
+#: builtin/commit.c:1376 builtin/tag.c:460
+msgid "how to strip spaces and #comments from message"
+msgstr ""
+
+#: builtin/commit.c:1377
+msgid "include status in commit message template"
+msgstr ""
+
+#: builtin/commit.c:1378 builtin/merge.c:215 builtin/tag.c:461
+msgid "key id"
+msgstr ""
+
+#: builtin/commit.c:1379 builtin/merge.c:216
+msgid "GPG sign commit"
+msgstr ""
+
+#. end commit message options
+#: builtin/commit.c:1382
+msgid "Commit contents options"
+msgstr ""
+
+#: builtin/commit.c:1383
+msgid "commit all changed files"
+msgstr ""
+
+#: builtin/commit.c:1384
+msgid "add specified files to index for commit"
+msgstr ""
+
+#: builtin/commit.c:1385
+msgid "interactively add files"
+msgstr ""
+
+#: builtin/commit.c:1386
+msgid "interactively add changes"
+msgstr ""
+
+#: builtin/commit.c:1387
+msgid "commit only specified files"
+msgstr ""
+
+#: builtin/commit.c:1388
+msgid "bypass pre-commit hook"
+msgstr ""
+
+#: builtin/commit.c:1389
+msgid "show what would be committed"
+msgstr ""
+
+#: builtin/commit.c:1400
+msgid "amend previous commit"
+msgstr ""
+
+#: builtin/commit.c:1401
+msgid "bypass post-rewrite hook"
+msgstr ""
+
+#: builtin/commit.c:1406
+msgid "ok to record an empty change"
+msgstr ""
+
+#: builtin/commit.c:1409
+msgid "ok to record a change with an empty message"
+msgstr ""
+
+#: builtin/commit.c:1441
+msgid "could not parse HEAD commit"
+msgstr ""
+
+#: builtin/commit.c:1479 builtin/merge.c:510
+#, c-format
+msgid "could not open '%s' for reading"
+msgstr ""
+
+#: builtin/commit.c:1486
+#, c-format
+msgid "Corrupt MERGE_HEAD file (%s)"
+msgstr ""
+
+#: builtin/commit.c:1493
+msgid "could not read MERGE_MODE"
+msgstr ""
+
+#: builtin/commit.c:1512
+#, c-format
+msgid "could not read commit message: %s"
+msgstr ""
+
+#: builtin/commit.c:1526
+#, c-format
+msgid "Aborting commit; you did not edit the message.\n"
+msgstr ""
+
+#: builtin/commit.c:1531
+#, c-format
+msgid "Aborting commit due to empty commit message.\n"
+msgstr ""
+
+#: builtin/commit.c:1546 builtin/merge.c:847 builtin/merge.c:872
+msgid "failed to write commit object"
+msgstr ""
+
+#: builtin/commit.c:1567
+msgid "cannot lock HEAD ref"
+msgstr ""
+
+#: builtin/commit.c:1571
+msgid "cannot update HEAD ref"
+msgstr ""
+
+#: builtin/commit.c:1582
+msgid ""
+"Repository has been updated, but unable to write\n"
+"new_index file. Check that disk is not full or quota is\n"
+"not exceeded, and then \"git reset HEAD\" to recover."
+msgstr ""
+
+#: builtin/config.c:7
+msgid "git config [options]"
+msgstr ""
+
+#: builtin/config.c:51
+msgid "Config file location"
+msgstr ""
+
+#: builtin/config.c:52
+msgid "use global config file"
+msgstr ""
+
+#: builtin/config.c:53
+msgid "use system config file"
+msgstr ""
+
+#: builtin/config.c:54
+msgid "use repository config file"
+msgstr ""
+
+#: builtin/config.c:55
+msgid "use given config file"
+msgstr ""
+
+#: builtin/config.c:56
+msgid "Action"
+msgstr ""
+
+#: builtin/config.c:57
+msgid "get value: name [value-regex]"
+msgstr ""
+
+#: builtin/config.c:58
+msgid "get all values: key [value-regex]"
+msgstr ""
+
+#: builtin/config.c:59
+msgid "get values for regexp: name-regex [value-regex]"
+msgstr ""
+
+#: builtin/config.c:60
+msgid "replace all matching variables: name value [value_regex]"
+msgstr ""
+
+#: builtin/config.c:61
+msgid "add a new variable: name value"
+msgstr ""
+
+#: builtin/config.c:62
+msgid "remove a variable: name [value-regex]"
+msgstr ""
+
+#: builtin/config.c:63
+msgid "remove all matches: name [value-regex]"
+msgstr ""
+
+#: builtin/config.c:64
+msgid "rename section: old-name new-name"
+msgstr ""
+
+#: builtin/config.c:65
+msgid "remove a section: name"
+msgstr ""
+
+#: builtin/config.c:66
+msgid "list all"
+msgstr ""
+
+#: builtin/config.c:67
+msgid "open an editor"
+msgstr ""
+
+#: builtin/config.c:68 builtin/config.c:69
+msgid "slot"
+msgstr ""
+
+#: builtin/config.c:68
+msgid "find the color configured: [default]"
+msgstr ""
+
+#: builtin/config.c:69
+msgid "find the color setting: [stdout-is-tty]"
+msgstr ""
+
+#: builtin/config.c:70
+msgid "Type"
+msgstr ""
+
+#: builtin/config.c:71
+msgid "value is \"true\" or \"false\""
+msgstr ""
+
+#: builtin/config.c:72
+msgid "value is decimal number"
+msgstr ""
+
+#: builtin/config.c:73
+msgid "value is --bool or --int"
+msgstr ""
+
+#: builtin/config.c:74
+msgid "value is a path (file or directory name)"
+msgstr ""
+
+#: builtin/config.c:75
+msgid "Other"
+msgstr ""
+
+#: builtin/config.c:76
+msgid "terminate values with NUL byte"
+msgstr ""
+
+#: builtin/config.c:77
+msgid "respect include directives on lookup"
+msgstr ""
+
+#: builtin/count-objects.c:82
+msgid "git count-objects [-v] [-H | --human-readable]"
+msgstr ""
+
+#: builtin/count-objects.c:97
+msgid "print sizes in human readable format"
+msgstr ""
+
+#: builtin/describe.c:15
+msgid "git describe [options] <committish>*"
+msgstr ""
+
+#: builtin/describe.c:16
+msgid "git describe [options] --dirty"
+msgstr ""
+
+#: builtin/describe.c:233
+#, c-format
+msgid "annotated tag %s not available"
+msgstr ""
+
+#: builtin/describe.c:237
+#, c-format
+msgid "annotated tag %s has no embedded name"
+msgstr ""
+
+#: builtin/describe.c:239
+#, c-format
+msgid "tag '%s' is really '%s' here"
+msgstr ""
+
+#: builtin/describe.c:266
+#, c-format
+msgid "Not a valid object name %s"
+msgstr ""
+
+#: builtin/describe.c:269
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s n'est pas un objet '%s' valide"
+
+#: builtin/describe.c:286
+#, c-format
+msgid "no tag exactly matches '%s'"
+msgstr ""
+
+#: builtin/describe.c:288
+#, c-format
+msgid "searching to describe %s\n"
+msgstr ""
+
+#: builtin/describe.c:328
+#, c-format
+msgid "finished search at %s\n"
+msgstr ""
+
+#: builtin/describe.c:352
+#, c-format
+msgid ""
+"No annotated tags can describe '%s'.\n"
+"However, there were unannotated tags: try --tags."
+msgstr ""
+
+#: builtin/describe.c:356
+#, c-format
+msgid ""
+"No tags can describe '%s'.\n"
+"Try --always, or create some tags."
+msgstr ""
+
+#: builtin/describe.c:377
+#, c-format
+msgid "traversed %lu commits\n"
+msgstr ""
+
+#: builtin/describe.c:380
+#, c-format
+msgid ""
+"more than %i tags found; listed %i most recent\n"
+"gave up search at %s\n"
+msgstr ""
+
+#: builtin/describe.c:402
+msgid "find the tag that comes after the commit"
+msgstr ""
+
+#: builtin/describe.c:403
+msgid "debug search strategy on stderr"
+msgstr ""
+
+#: builtin/describe.c:404
+msgid "use any ref"
+msgstr ""
+
+#: builtin/describe.c:405
+msgid "use any tag, even unannotated"
+msgstr ""
+
+#: builtin/describe.c:406
+msgid "always use long format"
+msgstr ""
+
+#: builtin/describe.c:409
+msgid "only output exact matches"
+msgstr ""
+
+#: builtin/describe.c:411
+msgid "consider <n> most recent tags (default: 10)"
+msgstr ""
+
+#: builtin/describe.c:413
+msgid "only consider tags matching <pattern>"
+msgstr ""
+
+#: builtin/describe.c:415 builtin/name-rev.c:238
+msgid "show abbreviated commit object as fallback"
+msgstr ""
+
+#: builtin/describe.c:416
+msgid "mark"
+msgstr ""
+
+#: builtin/describe.c:417
+msgid "append <mark> on dirty working tree (default: \"-dirty\")"
+msgstr ""
+
+#: builtin/describe.c:435
+msgid "--long is incompatible with --abbrev=0"
+msgstr ""
+
+#: builtin/describe.c:461
+msgid "No names found, cannot describe anything."
+msgstr ""
+
+#: builtin/describe.c:481
+msgid "--dirty is incompatible with committishes"
+msgstr ""
+
+#: builtin/diff.c:79
+#, c-format
+msgid "'%s': not a regular file or symlink"
+msgstr ""
+
+#: builtin/diff.c:228
+#, c-format
+msgid "invalid option: %s"
+msgstr ""
+
+#: builtin/diff.c:305
+msgid "Not a git repository"
+msgstr ""
+
+#: builtin/diff.c:348
+#, c-format
+msgid "invalid object '%s' given."
+msgstr ""
+
+#: builtin/diff.c:353
+#, c-format
+msgid "more than %d trees given: '%s'"
+msgstr ""
+
+#: builtin/diff.c:363
+#, c-format
+msgid "more than two blobs given: '%s'"
+msgstr ""
+
+#: builtin/diff.c:371
+#, c-format
+msgid "unhandled object '%s' given."
+msgstr ""
+
+#: builtin/fast-export.c:22
+msgid "git fast-export [rev-list-opts]"
+msgstr ""
+
+#: builtin/fast-export.c:658
+msgid "show progress after <n> objects"
+msgstr ""
+
+#: builtin/fast-export.c:660
+msgid "select handling of signed tags"
+msgstr ""
+
+#: builtin/fast-export.c:663
+msgid "select handling of tags that tag filtered objects"
+msgstr ""
+
+#: builtin/fast-export.c:666
+msgid "Dump marks to this file"
+msgstr ""
+
+#: builtin/fast-export.c:668
+msgid "Import marks from this file"
+msgstr ""
+
+#: builtin/fast-export.c:670
+msgid "Fake a tagger when tags lack one"
+msgstr ""
+
+#: builtin/fast-export.c:672
+msgid "Output full tree for each commit"
+msgstr ""
+
+#: builtin/fast-export.c:674
+msgid "Use the done feature to terminate the stream"
+msgstr ""
+
+#: builtin/fast-export.c:675
+msgid "Skip output of blob data"
+msgstr ""
+
+#: builtin/fetch.c:20
+msgid "git fetch [<options>] [<repository> [<refspec>...]]"
+msgstr ""
+
+#: builtin/fetch.c:21
+msgid "git fetch [<options>] <group>"
+msgstr ""
+
+#: builtin/fetch.c:22
+msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
+msgstr ""
+
+#: builtin/fetch.c:23
+msgid "git fetch --all [<options>]"
+msgstr ""
+
+#: builtin/fetch.c:60
+msgid "fetch from all remotes"
+msgstr ""
+
+#: builtin/fetch.c:62
+msgid "append to .git/FETCH_HEAD instead of overwriting"
+msgstr ""
+
+#: builtin/fetch.c:64
+msgid "path to upload pack on remote end"
+msgstr ""
+
+#: builtin/fetch.c:65
+msgid "force overwrite of local branch"
+msgstr ""
+
+#: builtin/fetch.c:67
+msgid "fetch from multiple remotes"
+msgstr ""
+
+#: builtin/fetch.c:69
+msgid "fetch all tags and associated objects"
+msgstr ""
+
+#: builtin/fetch.c:71
+msgid "do not fetch all tags (--no-tags)"
+msgstr ""
+
+#: builtin/fetch.c:73
+msgid "prune remote-tracking branches no longer on remote"
+msgstr ""
+
+#: builtin/fetch.c:74
+msgid "on-demand"
+msgstr ""
+
+#: builtin/fetch.c:75
+msgid "control recursive fetching of submodules"
+msgstr ""
+
+#: builtin/fetch.c:79
+msgid "keep downloaded pack"
+msgstr ""
+
+#: builtin/fetch.c:81
+msgid "allow updating of HEAD ref"
+msgstr ""
+
+#: builtin/fetch.c:84
+msgid "deepen history of shallow clone"
+msgstr ""
+
+#: builtin/fetch.c:86
+msgid "convert to a complete repository"
+msgstr ""
+
+#: builtin/fetch.c:88 builtin/log.c:1130
+msgid "dir"
+msgstr ""
+
+#: builtin/fetch.c:89
+msgid "prepend this to submodule path output"
+msgstr ""
+
+#: builtin/fetch.c:92
+msgid "default mode for recursion"
+msgstr ""
+
+#: builtin/fetch.c:204
+msgid "Couldn't find remote ref HEAD"
+msgstr ""
+
+#: builtin/fetch.c:257
+#, c-format
+msgid "object %s not found"
+msgstr ""
+
+#: builtin/fetch.c:262
+msgid "[up to date]"
+msgstr ""
+
+#: builtin/fetch.c:276
+#, c-format
+msgid "! %-*s %-*s -> %s  (can't fetch in current branch)"
+msgstr ""
+
+#: builtin/fetch.c:277 builtin/fetch.c:363
+msgid "[rejected]"
+msgstr ""
+
+#: builtin/fetch.c:288
+msgid "[tag update]"
+msgstr ""
+
+#: builtin/fetch.c:290 builtin/fetch.c:325 builtin/fetch.c:343
+msgid "  (unable to update local ref)"
+msgstr ""
+
+#: builtin/fetch.c:308
+msgid "[new tag]"
+msgstr ""
+
+#: builtin/fetch.c:311
+msgid "[new branch]"
+msgstr ""
+
+#: builtin/fetch.c:314
+msgid "[new ref]"
+msgstr ""
+
+#: builtin/fetch.c:359
+msgid "unable to update local ref"
+msgstr ""
+
+#: builtin/fetch.c:359
+msgid "forced update"
+msgstr ""
+
+#: builtin/fetch.c:365
+msgid "(non-fast-forward)"
+msgstr ""
+
+#: builtin/fetch.c:396 builtin/fetch.c:688
+#, c-format
+msgid "cannot open %s: %s\n"
+msgstr "impossible d'ouvrir %s : %s\n"
+
+#: builtin/fetch.c:405
+#, 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:491
+#, c-format
+msgid "From %.*s\n"
+msgstr ""
+
+#: builtin/fetch.c:502
+#, 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:552
+#, c-format
+msgid "   (%s will become dangling)"
+msgstr ""
+
+#: builtin/fetch.c:553
+#, c-format
+msgid "   (%s has become dangling)"
+msgstr ""
+
+#: builtin/fetch.c:560
+msgid "[deleted]"
+msgstr ""
+
+#: builtin/fetch.c:561 builtin/remote.c:1055
+msgid "(none)"
+msgstr ""
+
+#: builtin/fetch.c:678
+#, c-format
+msgid "Refusing to fetch into current branch %s of non-bare repository"
+msgstr ""
+
+#: builtin/fetch.c:712
+#, c-format
+msgid "Don't know how to fetch from %s"
+msgstr ""
+
+#: builtin/fetch.c:789
+#, c-format
+msgid "Option \"%s\" value \"%s\" is not valid for %s"
+msgstr ""
+
+#: builtin/fetch.c:792
+#, c-format
+msgid "Option \"%s\" is ignored for %s\n"
+msgstr ""
+
+#: builtin/fetch.c:894
+#, c-format
+msgid "Fetching %s\n"
+msgstr ""
+
+#: builtin/fetch.c:896 builtin/remote.c:100
+#, c-format
+msgid "Could not fetch %s"
+msgstr ""
+
+#: builtin/fetch.c:915
+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:935
+msgid "You need to specify a tag name."
+msgstr ""
+
+#: builtin/fetch.c:981
+msgid "--depth and --unshallow cannot be used together"
+msgstr ""
+
+#: builtin/fetch.c:983
+msgid "--unshallow on a complete repository does not make sense"
+msgstr ""
+
+#: builtin/fetch.c:1002
+msgid "fetch --all does not take a repository argument"
+msgstr ""
+
+#: builtin/fetch.c:1004
+msgid "fetch --all does not make sense with refspecs"
+msgstr ""
+
+#: builtin/fetch.c:1015
+#, c-format
+msgid "No such remote or remote group: %s"
+msgstr ""
+
+#: builtin/fetch.c:1023
+msgid "Fetching a group and specifying refspecs does not make sense"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:13
+msgid "git fmt-merge-msg [-m <message>] [--log[=<n>]|--no-log] [--file <file>]"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:663 builtin/fmt-merge-msg.c:666 builtin/grep.c:701
+#: builtin/merge.c:188 builtin/show-branch.c:655 builtin/show-ref.c:175
+#: builtin/tag.c:446 parse-options.h:133 parse-options.h:239
+msgid "n"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:664
+msgid "populate log with at most <n> entries from shortlog"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:667
+msgid "alias for --log (deprecated)"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:670
+msgid "text"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:671
+msgid "use <text> as start of message"
+msgstr ""
+
+#: builtin/fmt-merge-msg.c:672
+msgid "file to read from"
+msgstr ""
+
+#: builtin/for-each-ref.c:979
+msgid "git for-each-ref [options] [<pattern>]"
+msgstr ""
+
+#: builtin/for-each-ref.c:994
+msgid "quote placeholders suitably for shells"
+msgstr ""
+
+#: builtin/for-each-ref.c:996
+msgid "quote placeholders suitably for perl"
+msgstr ""
+
+#: builtin/for-each-ref.c:998
+msgid "quote placeholders suitably for python"
+msgstr ""
+
+#: builtin/for-each-ref.c:1000
+msgid "quote placeholders suitably for tcl"
+msgstr ""
+
+#: builtin/for-each-ref.c:1003
+msgid "show only <n> matched refs"
+msgstr ""
+
+#: builtin/for-each-ref.c:1004
+msgid "format"
+msgstr ""
+
+#: builtin/for-each-ref.c:1004
+msgid "format to use for the output"
+msgstr ""
+
+#: builtin/for-each-ref.c:1005
+msgid "key"
+msgstr ""
+
+#: builtin/for-each-ref.c:1006
+msgid "field name to sort on"
+msgstr ""
+
+#: builtin/fsck.c:608
+msgid "git fsck [options] [<object>...]"
+msgstr ""
+
+#: builtin/fsck.c:614
+msgid "show unreachable objects"
+msgstr ""
+
+#: builtin/fsck.c:615
+msgid "show dangling objects"
+msgstr ""
+
+#: builtin/fsck.c:616
+msgid "report tags"
+msgstr ""
+
+#: builtin/fsck.c:617
+msgid "report root nodes"
+msgstr ""
+
+#: builtin/fsck.c:618
+msgid "make index objects head nodes"
+msgstr ""
+
+#: builtin/fsck.c:619
+msgid "make reflogs head nodes (default)"
+msgstr ""
+
+#: builtin/fsck.c:620
+msgid "also consider packs and alternate objects"
+msgstr ""
+
+#: builtin/fsck.c:621
+msgid "enable more strict checking"
+msgstr ""
+
+#: builtin/fsck.c:623
+msgid "write dangling objects in .git/lost-found"
+msgstr ""
+
+#: builtin/fsck.c:624 builtin/prune.c:134
+msgid "show progress"
+msgstr ""
+
+#: builtin/gc.c:22
+msgid "git gc [options]"
+msgstr ""
+
+#: builtin/gc.c:63
+#, c-format
+msgid "Invalid %s: '%s'"
+msgstr ""
+
+#: builtin/gc.c:90
+#, c-format
+msgid "insanely long object directory %.*s"
+msgstr ""
+
+#: builtin/gc.c:179
+msgid "prune unreferenced objects"
+msgstr ""
+
+#: builtin/gc.c:181
+msgid "be more thorough (increased runtime)"
+msgstr ""
+
+#: builtin/gc.c:182
+msgid "enable auto-gc mode"
+msgstr ""
+
+#: builtin/gc.c:222
+#, c-format
+msgid ""
+"Auto packing the repository for optimum performance. You may also\n"
+"run \"git gc\" manually. See \"git help gc\" for more information.\n"
+msgstr ""
+
+#: builtin/gc.c:249
+msgid ""
+"There are too many unreachable loose objects; run 'git prune' to remove them."
+msgstr ""
+
+#: builtin/grep.c:22
+msgid "git grep [options] [-e] <pattern> [<rev>...] [[--] <path>...]"
+msgstr ""
+
+#: builtin/grep.c:217
+#, c-format
+msgid "grep: failed to create thread: %s"
+msgstr ""
+
+#: builtin/grep.c:365
+#, c-format
+msgid "Failed to chdir: %s"
+msgstr ""
+
+#: builtin/grep.c:443 builtin/grep.c:478
+#, c-format
+msgid "unable to read tree (%s)"
+msgstr ""
+
+#: builtin/grep.c:493
+#, c-format
+msgid "unable to grep from object of type %s"
+msgstr ""
+
+#: builtin/grep.c:551
+#, c-format
+msgid "switch `%c' expects a numerical value"
+msgstr ""
+
+#: builtin/grep.c:568
+#, c-format
+msgid "cannot open '%s'"
+msgstr ""
+
+#: builtin/grep.c:643
+msgid "search in index instead of in the work tree"
+msgstr ""
+
+#: builtin/grep.c:645
+msgid "find in contents not managed by git"
+msgstr ""
+
+#: builtin/grep.c:647
+msgid "search in both tracked and untracked files"
+msgstr ""
+
+#: builtin/grep.c:649
+msgid "search also in ignored files"
+msgstr ""
+
+#: builtin/grep.c:652
+msgid "show non-matching lines"
+msgstr ""
+
+#: builtin/grep.c:654
+msgid "case insensitive matching"
+msgstr ""
+
+#: builtin/grep.c:656
+msgid "match patterns only at word boundaries"
+msgstr ""
+
+#: builtin/grep.c:658
+msgid "process binary files as text"
+msgstr ""
+
+#: builtin/grep.c:660
+msgid "don't match patterns in binary files"
+msgstr ""
+
+#: builtin/grep.c:663
+msgid "descend at most <depth> levels"
+msgstr ""
+
+#: builtin/grep.c:667
+msgid "use extended POSIX regular expressions"
+msgstr ""
+
+#: builtin/grep.c:670
+msgid "use basic POSIX regular expressions (default)"
+msgstr ""
+
+#: builtin/grep.c:673
+msgid "interpret patterns as fixed strings"
+msgstr ""
+
+#: builtin/grep.c:676
+msgid "use Perl-compatible regular expressions"
+msgstr ""
+
+#: builtin/grep.c:679
+msgid "show line numbers"
+msgstr ""
+
+#: builtin/grep.c:680
+msgid "don't show filenames"
+msgstr ""
+
+#: builtin/grep.c:681
+msgid "show filenames"
+msgstr ""
+
+#: builtin/grep.c:683
+msgid "show filenames relative to top directory"
+msgstr ""
+
+#: builtin/grep.c:685
+msgid "show only filenames instead of matching lines"
+msgstr ""
+
+#: builtin/grep.c:687
+msgid "synonym for --files-with-matches"
+msgstr ""
+
+#: builtin/grep.c:690
+msgid "show only the names of files without match"
+msgstr ""
+
+#: builtin/grep.c:692
+msgid "print NUL after filenames"
+msgstr ""
+
+#: builtin/grep.c:694
+msgid "show the number of matches instead of matching lines"
+msgstr ""
+
+#: builtin/grep.c:695
+msgid "highlight matches"
+msgstr ""
+
+#: builtin/grep.c:697
+msgid "print empty line between matches from different files"
+msgstr ""
+
+#: builtin/grep.c:699
+msgid "show filename only once above matches from same file"
+msgstr ""
+
+#: builtin/grep.c:702
+msgid "show <n> context lines before and after matches"
+msgstr ""
+
+#: builtin/grep.c:705
+msgid "show <n> context lines before matches"
+msgstr ""
+
+#: builtin/grep.c:707
+msgid "show <n> context lines after matches"
+msgstr ""
+
+#: builtin/grep.c:708
+msgid "shortcut for -C NUM"
+msgstr ""
+
+#: builtin/grep.c:711
+msgid "show a line with the function name before matches"
+msgstr ""
+
+#: builtin/grep.c:713
+msgid "show the surrounding function"
+msgstr ""
+
+#: builtin/grep.c:716
+msgid "read patterns from file"
+msgstr ""
+
+#: builtin/grep.c:718
+msgid "match <pattern>"
+msgstr ""
+
+#: builtin/grep.c:720
+msgid "combine patterns specified with -e"
+msgstr ""
+
+#: builtin/grep.c:732
+msgid "indicate hit with exit status without output"
+msgstr ""
+
+#: builtin/grep.c:734
+msgid "show only matches from files that match all patterns"
+msgstr ""
+
+#: builtin/grep.c:736
+msgid "show parse tree for grep expression"
+msgstr ""
+
+#: builtin/grep.c:740
+msgid "pager"
+msgstr ""
+
+#: builtin/grep.c:740
+msgid "show matching files in the pager"
+msgstr ""
+
+#: builtin/grep.c:743
+msgid "allow calling of grep(1) (ignored by this build)"
+msgstr ""
+
+#: builtin/grep.c:744 builtin/show-ref.c:184
+msgid "show usage"
+msgstr ""
+
+#: builtin/grep.c:811
+msgid "no pattern given."
+msgstr ""
+
+#: builtin/grep.c:866
+msgid "--open-files-in-pager only works on the worktree"
+msgstr ""
+
+#: builtin/grep.c:889
+msgid "--cached or --untracked cannot be used with --no-index."
+msgstr ""
+
+#: builtin/grep.c:894
+msgid "--no-index or --untracked cannot be used with revs."
+msgstr ""
+
+#: builtin/grep.c:897
+msgid "--[no-]exclude-standard cannot be used for tracked contents."
+msgstr ""
+
+#: builtin/grep.c:905
+msgid "both --cached and trees are given."
+msgstr ""
+
+#: builtin/hash-object.c:60
+msgid ""
+"git hash-object [-t <type>] [-w] [--path=<file>|--no-filters] [--stdin] [--] "
+"<file>..."
+msgstr ""
+
+#: builtin/hash-object.c:61
+msgid "git hash-object  --stdin-paths < <list-of-paths>"
+msgstr ""
+
+#: builtin/hash-object.c:72
+msgid "type"
+msgstr ""
+
+#: builtin/hash-object.c:72
+msgid "object type"
+msgstr ""
+
+#: builtin/hash-object.c:73
+msgid "write the object into the object database"
+msgstr ""
+
+#: builtin/hash-object.c:74
+msgid "read the object from stdin"
+msgstr ""
+
+#: builtin/hash-object.c:76
+msgid "store file as is without filters"
+msgstr ""
+
+#: builtin/hash-object.c:77
+msgid "process file as it were from this path"
+msgstr ""
+
+#: builtin/help.c:43
+msgid "print all available commands"
+msgstr ""
+
+#: builtin/help.c:44
+msgid "print list of useful guides"
+msgstr ""
+
+#: builtin/help.c:45
+msgid "show man page"
+msgstr ""
+
+#: builtin/help.c:46
+msgid "show manual in web browser"
+msgstr ""
+
+#: builtin/help.c:48
+msgid "show info page"
+msgstr ""
+
+#: builtin/help.c:54
+msgid "git help [--all] [--guides] [--man|--web|--info] [command]"
+msgstr ""
+
+#: builtin/help.c:66
+#, c-format
+msgid "unrecognized help format '%s'"
+msgstr ""
+
+#: builtin/help.c:94
+msgid "Failed to start emacsclient."
+msgstr ""
+
+#: builtin/help.c:107
+msgid "Failed to parse emacsclient version."
+msgstr ""
+
+#: builtin/help.c:115
+#, c-format
+msgid "emacsclient version '%d' too old (< 22)."
+msgstr ""
+
+#: builtin/help.c:133 builtin/help.c:161 builtin/help.c:170 builtin/help.c:178
+#, c-format
+msgid "failed to exec '%s': %s"
+msgstr ""
+
+#: builtin/help.c:218
+#, c-format
+msgid ""
+"'%s': path for unsupported man viewer.\n"
+"Please consider using 'man.<tool>.cmd' instead."
+msgstr ""
+
+#: builtin/help.c:230
+#, c-format
+msgid ""
+"'%s': cmd for supported man viewer.\n"
+"Please consider using 'man.<tool>.path' instead."
+msgstr ""
+
+#: builtin/help.c:351
+#, c-format
+msgid "'%s': unknown man viewer."
+msgstr ""
+
+#: builtin/help.c:368
+msgid "no man viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:376
+msgid "no info viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:422
+msgid "Defining attributes per path"
+msgstr ""
+
+#: builtin/help.c:423
+msgid "A Git glossary"
+msgstr ""
+
+#: builtin/help.c:424
+msgid "Specifies intentionally untracked files to ignore"
+msgstr ""
+
+#: builtin/help.c:425
+msgid "Defining submodule properties"
+msgstr ""
+
+#: builtin/help.c:426
+msgid "Specifying revisions and ranges for Git"
+msgstr ""
+
+#: builtin/help.c:427
+msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
+msgstr ""
+
+#: builtin/help.c:428
+msgid "An overview of recommended workflows with Git"
+msgstr ""
+
+#: builtin/help.c:440
+msgid "The common Git guides are:\n"
+msgstr ""
+
+#: builtin/help.c:462 builtin/help.c:478
+#, c-format
+msgid "usage: %s%s"
+msgstr ""
+
+#: builtin/help.c:494
+#, c-format
+msgid "`git %s' is aliased to `%s'"
+msgstr ""
+
+#: builtin/index-pack.c:182
+#, c-format
+msgid "object type mismatch at %s"
+msgstr ""
+
+#: builtin/index-pack.c:202
+msgid "object of unexpected type"
+msgstr ""
+
+#: builtin/index-pack.c:239
+#, c-format
+msgid "cannot fill %d byte"
+msgid_plural "cannot fill %d bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:249
+msgid "early EOF"
+msgstr ""
+
+#: builtin/index-pack.c:250
+msgid "read error on input"
+msgstr ""
+
+#: builtin/index-pack.c:262
+msgid "used more bytes than were available"
+msgstr ""
+
+#: builtin/index-pack.c:269
+msgid "pack too large for current definition of off_t"
+msgstr ""
+
+#: builtin/index-pack.c:285
+#, c-format
+msgid "unable to create '%s'"
+msgstr ""
+
+#: builtin/index-pack.c:290
+#, c-format
+msgid "cannot open packfile '%s'"
+msgstr ""
+
+#: builtin/index-pack.c:304
+msgid "pack signature mismatch"
+msgstr ""
+
+#: builtin/index-pack.c:306
+#, c-format
+msgid "pack version %<PRIu32> unsupported"
+msgstr ""
+
+#: builtin/index-pack.c:324
+#, c-format
+msgid "pack has bad object at offset %lu: %s"
+msgstr ""
+
+#: builtin/index-pack.c:446
+#, c-format
+msgid "inflate returned %d"
+msgstr ""
+
+#: builtin/index-pack.c:495
+msgid "offset value overflow for delta base object"
+msgstr ""
+
+#: builtin/index-pack.c:503
+msgid "delta base offset is out of bound"
+msgstr ""
+
+#: builtin/index-pack.c:511
+#, c-format
+msgid "unknown object type %d"
+msgstr ""
+
+#: builtin/index-pack.c:542
+msgid "cannot pread pack file"
+msgstr ""
+
+#: builtin/index-pack.c:544
+#, c-format
+msgid "premature end of pack file, %lu byte missing"
+msgid_plural "premature end of pack file, %lu bytes missing"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:570
+msgid "serious inflate inconsistency"
+msgstr ""
+
+#: builtin/index-pack.c:661 builtin/index-pack.c:667 builtin/index-pack.c:690
+#: builtin/index-pack.c:724 builtin/index-pack.c:733
+#, c-format
+msgid "SHA1 COLLISION FOUND WITH %s !"
+msgstr ""
+
+#: builtin/index-pack.c:664 builtin/pack-objects.c:170
+#: builtin/pack-objects.c:262
+#, c-format
+msgid "unable to read %s"
+msgstr ""
+
+#: builtin/index-pack.c:730
+#, c-format
+msgid "cannot read existing object %s"
+msgstr ""
+
+#: builtin/index-pack.c:744
+#, c-format
+msgid "invalid blob object %s"
+msgstr ""
+
+#: builtin/index-pack.c:759
+#, c-format
+msgid "invalid %s"
+msgstr ""
+
+#: builtin/index-pack.c:761
+msgid "Error in object"
+msgstr ""
+
+#: builtin/index-pack.c:763
+#, c-format
+msgid "Not all child objects of %s are reachable"
+msgstr ""
+
+#: builtin/index-pack.c:833 builtin/index-pack.c:863
+msgid "failed to apply delta"
+msgstr ""
+
+#: builtin/index-pack.c:1004
+msgid "Receiving objects"
+msgstr ""
+
+#: builtin/index-pack.c:1004
+msgid "Indexing objects"
+msgstr ""
+
+#: builtin/index-pack.c:1030
+msgid "pack is corrupted (SHA1 mismatch)"
+msgstr ""
+
+#: builtin/index-pack.c:1035
+msgid "cannot fstat packfile"
+msgstr ""
+
+#: builtin/index-pack.c:1038
+msgid "pack has junk at the end"
+msgstr ""
+
+#: builtin/index-pack.c:1049
+msgid "confusion beyond insanity in parse_pack_objects()"
+msgstr ""
+
+#: builtin/index-pack.c:1072
+msgid "Resolving deltas"
+msgstr ""
+
+#: builtin/index-pack.c:1082
+#, c-format
+msgid "unable to create thread: %s"
+msgstr ""
+
+#: builtin/index-pack.c:1124
+msgid "confusion beyond insanity"
+msgstr ""
+
+#: builtin/index-pack.c:1132
+#, c-format
+msgid "completed with %d local objects"
+msgstr ""
+
+#: builtin/index-pack.c:1142
+#, c-format
+msgid "Unexpected tail checksum for %s (disk corruption?)"
+msgstr ""
+
+#: builtin/index-pack.c:1146
+#, c-format
+msgid "pack has %d unresolved delta"
+msgid_plural "pack has %d unresolved deltas"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1171
+#, c-format
+msgid "unable to deflate appended object (%d)"
+msgstr ""
+
+#: builtin/index-pack.c:1250
+#, c-format
+msgid "local object %s is corrupt"
+msgstr ""
+
+#: builtin/index-pack.c:1274
+msgid "error while closing pack file"
+msgstr ""
+
+#: builtin/index-pack.c:1287
+#, c-format
+msgid "cannot write keep file '%s'"
+msgstr ""
+
+#: builtin/index-pack.c:1295
+#, c-format
+msgid "cannot close written keep file '%s'"
+msgstr ""
+
+#: builtin/index-pack.c:1308
+msgid "cannot store pack file"
+msgstr ""
+
+#: builtin/index-pack.c:1319
+msgid "cannot store index file"
+msgstr ""
+
+#: builtin/index-pack.c:1352
+#, c-format
+msgid "bad pack.indexversion=%<PRIu32>"
+msgstr ""
+
+#: builtin/index-pack.c:1358
+#, c-format
+msgid "invalid number of threads specified (%d)"
+msgstr ""
+
+#: builtin/index-pack.c:1362 builtin/index-pack.c:1535
+#, c-format
+msgid "no threads support, ignoring %s"
+msgstr ""
+
+#: builtin/index-pack.c:1420
+#, c-format
+msgid "Cannot open existing pack file '%s'"
+msgstr ""
+
+#: builtin/index-pack.c:1422
+#, c-format
+msgid "Cannot open existing pack idx file for '%s'"
+msgstr ""
+
+#: builtin/index-pack.c:1469
+#, c-format
+msgid "non delta: %d object"
+msgid_plural "non delta: %d objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1476
+#, c-format
+msgid "chain length = %d: %lu object"
+msgid_plural "chain length = %d: %lu objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1503
+msgid "Cannot come back to cwd"
+msgstr ""
+
+#: builtin/index-pack.c:1547 builtin/index-pack.c:1550
+#: builtin/index-pack.c:1562 builtin/index-pack.c:1566
+#, c-format
+msgid "bad %s"
+msgstr ""
+
+#: builtin/index-pack.c:1580
+msgid "--fix-thin cannot be used without --stdin"
+msgstr ""
+
+#: builtin/index-pack.c:1584 builtin/index-pack.c:1594
+#, c-format
+msgid "packfile name '%s' does not end with '.pack'"
+msgstr ""
+
+#: builtin/index-pack.c:1603
+msgid "--verify with no packfile name given"
+msgstr ""
+
+#: builtin/init-db.c:35
+#, c-format
+msgid "Could not make %s writable by group"
+msgstr ""
+
+#: builtin/init-db.c:62
+#, c-format
+msgid "insanely long template name %s"
+msgstr ""
+
+#: builtin/init-db.c:67
+#, c-format
+msgid "cannot stat '%s'"
+msgstr ""
+
+#: builtin/init-db.c:73
+#, c-format
+msgid "cannot stat template '%s'"
+msgstr ""
+
+#: builtin/init-db.c:80
+#, c-format
+msgid "cannot opendir '%s'"
+msgstr ""
+
+#: builtin/init-db.c:97
+#, c-format
+msgid "cannot readlink '%s'"
+msgstr ""
+
+#: builtin/init-db.c:99
+#, c-format
+msgid "insanely long symlink %s"
+msgstr ""
+
+#: builtin/init-db.c:102
+#, c-format
+msgid "cannot symlink '%s' '%s'"
+msgstr ""
+
+#: builtin/init-db.c:106
+#, c-format
+msgid "cannot copy '%s' to '%s'"
+msgstr ""
+
+#: builtin/init-db.c:110
+#, c-format
+msgid "ignoring template %s"
+msgstr ""
+
+#: builtin/init-db.c:133
+#, c-format
+msgid "insanely long template path %s"
+msgstr ""
+
+#: builtin/init-db.c:141
+#, c-format
+msgid "templates not found %s"
+msgstr ""
+
+#: builtin/init-db.c:154
+#, c-format
+msgid "not copying templates of a wrong format version %d from '%s'"
+msgstr ""
+
+#: builtin/init-db.c:192
+#, c-format
+msgid "insane git directory %s"
+msgstr ""
+
+#: builtin/init-db.c:323 builtin/init-db.c:326
+#, c-format
+msgid "%s already exists"
+msgstr "%s existe déjà"
+
+#: builtin/init-db.c:355
+#, c-format
+msgid "unable to handle file type %d"
+msgstr ""
+
+#: builtin/init-db.c:358
+#, c-format
+msgid "unable to move %s to %s"
+msgstr ""
+
+#: builtin/init-db.c:363
+#, c-format
+msgid "Could not create git link %s"
+msgstr ""
+
+#.
+#. * TRANSLATORS: The first '%s' is either "Reinitialized
+#. * existing" or "Initialized empty", the second " shared" or
+#. * "", and the last '%s%s' is the verbatim directory name.
+#.
+#: builtin/init-db.c:420
+#, c-format
+msgid "%s%s Git repository in %s%s\n"
+msgstr "%s%s Dépôt git dans %s%s\n"
+
+#: builtin/init-db.c:421
+msgid "Reinitialized existing"
+msgstr ""
+
+#: builtin/init-db.c:421
+msgid "Initialized empty"
+msgstr ""
+
+#: builtin/init-db.c:422
+msgid " shared"
+msgstr ""
+
+#: builtin/init-db.c:441
+msgid "cannot tell cwd"
+msgstr ""
+
+#: builtin/init-db.c:467
+msgid ""
+"git init [-q | --quiet] [--bare] [--template=<template-directory>] [--"
+"shared[=<permissions>]] [directory]"
+msgstr ""
+
+#: builtin/init-db.c:490
+msgid "permissions"
+msgstr ""
+
+#: builtin/init-db.c:491
+msgid "specify that the git repository is to be shared amongst several users"
+msgstr ""
+
+#: builtin/init-db.c:493 builtin/prune-packed.c:77
+msgid "be quiet"
+msgstr ""
+
+#: builtin/init-db.c:522 builtin/init-db.c:529
+#, c-format
+msgid "cannot mkdir %s"
+msgstr ""
+
+#: builtin/init-db.c:533
+#, c-format
+msgid "cannot chdir to %s"
+msgstr ""
+
+#: builtin/init-db.c:555
+#, c-format
+msgid ""
+"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
+"dir=<directory>)"
+msgstr ""
+
+#: builtin/init-db.c:579
+msgid "Cannot access current working directory"
+msgstr ""
+
+#: builtin/init-db.c:586
+#, c-format
+msgid "Cannot access work tree '%s'"
+msgstr ""
+
+#: builtin/log.c:40
+msgid "git log [<options>] [<revision range>] [[--] <path>...]\n"
+msgstr ""
+
+#: builtin/log.c:41
+msgid "   or: git show [options] <object>..."
+msgstr ""
+
+#: builtin/log.c:103
+msgid "suppress diff output"
+msgstr ""
+
+#: builtin/log.c:104
+msgid "show source"
+msgstr ""
+
+#: builtin/log.c:105
+msgid "Use mail map file"
+msgstr ""
+
+#: builtin/log.c:106
+msgid "decorate options"
+msgstr ""
+
+#: builtin/log.c:199
+#, c-format
+msgid "Final output: %d %s\n"
+msgstr ""
+
+#: builtin/log.c:422 builtin/log.c:514
+#, c-format
+msgid "Could not read object %s"
+msgstr ""
+
+#: builtin/log.c:538
+#, c-format
+msgid "Unknown type: %d"
+msgstr ""
+
+#: builtin/log.c:638
+msgid "format.headers without value"
+msgstr ""
+
+#: builtin/log.c:720
+msgid "name of output directory is too long"
+msgstr ""
+
+#: builtin/log.c:736
+#, c-format
+msgid "Cannot open patch file %s"
+msgstr ""
+
+#: builtin/log.c:750
+msgid "Need exactly one range."
+msgstr ""
+
+#: builtin/log.c:758
+msgid "Not a range."
+msgstr ""
+
+#: builtin/log.c:860
+msgid "Cover letter needs email format"
+msgstr ""
+
+#: builtin/log.c:936
+#, c-format
+msgid "insane in-reply-to: %s"
+msgstr ""
+
+#: builtin/log.c:964
+msgid "git format-patch [options] [<since> | <revision range>]"
+msgstr ""
+
+#: builtin/log.c:1009
+msgid "Two output directories?"
+msgstr ""
+
+#: builtin/log.c:1108
+msgid "use [PATCH n/m] even with a single patch"
+msgstr ""
+
+#: builtin/log.c:1111
+msgid "use [PATCH] even with multiple patches"
+msgstr ""
+
+#: builtin/log.c:1115
+msgid "print patches to standard out"
+msgstr ""
+
+#: builtin/log.c:1117
+msgid "generate a cover letter"
+msgstr ""
+
+#: builtin/log.c:1119
+msgid "use simple number sequence for output file names"
+msgstr ""
+
+#: builtin/log.c:1120
+msgid "sfx"
+msgstr ""
+
+#: builtin/log.c:1121
+msgid "use <sfx> instead of '.patch'"
+msgstr ""
+
+#: builtin/log.c:1123
+msgid "start numbering patches at <n> instead of 1"
+msgstr ""
+
+#: builtin/log.c:1125
+msgid "mark the series as Nth re-roll"
+msgstr ""
+
+#: builtin/log.c:1127
+msgid "Use [<prefix>] instead of [PATCH]"
+msgstr ""
+
+#: builtin/log.c:1130
+msgid "store resulting files in <dir>"
+msgstr ""
+
+#: builtin/log.c:1133
+msgid "don't strip/add [PATCH]"
+msgstr ""
+
+#: builtin/log.c:1136
+msgid "don't output binary diffs"
+msgstr ""
+
+#: builtin/log.c:1138
+msgid "don't include a patch matching a commit upstream"
+msgstr ""
+
+#: builtin/log.c:1140
+msgid "show patch format instead of default (patch + stat)"
+msgstr ""
+
+#: builtin/log.c:1142
+msgid "Messaging"
+msgstr ""
+
+#: builtin/log.c:1143
+msgid "header"
+msgstr ""
+
+#: builtin/log.c:1144
+msgid "add email header"
+msgstr ""
+
+#: builtin/log.c:1145 builtin/log.c:1147
+msgid "email"
+msgstr ""
+
+#: builtin/log.c:1145
+msgid "add To: header"
+msgstr ""
+
+#: builtin/log.c:1147
+msgid "add Cc: header"
+msgstr ""
+
+#: builtin/log.c:1149
+msgid "message-id"
+msgstr ""
+
+#: builtin/log.c:1150
+msgid "make first mail a reply to <message-id>"
+msgstr ""
+
+#: builtin/log.c:1151 builtin/log.c:1154
+msgid "boundary"
+msgstr ""
+
+#: builtin/log.c:1152
+msgid "attach the patch"
+msgstr ""
+
+#: builtin/log.c:1155
+msgid "inline the patch"
+msgstr ""
+
+#: builtin/log.c:1159
+msgid "enable message threading, styles: shallow, deep"
+msgstr ""
+
+#: builtin/log.c:1161
+msgid "signature"
+msgstr ""
+
+#: builtin/log.c:1162
+msgid "add a signature"
+msgstr ""
+
+#: builtin/log.c:1164
+msgid "don't print the patch filenames"
+msgstr ""
+
+#: builtin/log.c:1248
+msgid "-n and -k are mutually exclusive."
+msgstr ""
+
+#: builtin/log.c:1250
+msgid "--subject-prefix and -k are mutually exclusive."
+msgstr ""
+
+#: builtin/log.c:1258
+msgid "--name-only does not make sense"
+msgstr ""
+
+#: builtin/log.c:1260
+msgid "--name-status does not make sense"
+msgstr ""
+
+#: builtin/log.c:1262
+msgid "--check does not make sense"
+msgstr ""
+
+#: builtin/log.c:1285
+msgid "standard output, or directory, which one?"
+msgstr ""
+
+#: builtin/log.c:1287
+#, c-format
+msgid "Could not create directory '%s'"
+msgstr ""
+
+#: builtin/log.c:1435
+msgid "Failed to create output files"
+msgstr ""
+
+#: builtin/log.c:1484
+msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
+msgstr ""
+
+#: builtin/log.c:1539
+#, c-format
+msgid ""
+"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+msgstr ""
+
+#: builtin/log.c:1552 builtin/log.c:1554 builtin/log.c:1566
+#, c-format
+msgid "Unknown commit %s"
+msgstr ""
+
+#: builtin/ls-files.c:402
+msgid "git ls-files [options] [<file>...]"
+msgstr ""
+
+#: builtin/ls-files.c:459
+msgid "identify the file status with tags"
+msgstr ""
+
+#: builtin/ls-files.c:461
+msgid "use lowercase letters for 'assume unchanged' files"
+msgstr ""
+
+#: builtin/ls-files.c:463
+msgid "show cached files in the output (default)"
+msgstr ""
+
+#: builtin/ls-files.c:465
+msgid "show deleted files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:467
+msgid "show modified files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:469
+msgid "show other files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:471
+msgid "show ignored files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:474
+msgid "show staged contents' object name in the output"
+msgstr ""
+
+#: builtin/ls-files.c:476
+msgid "show files on the filesystem that need to be removed"
+msgstr ""
+
+#: builtin/ls-files.c:478
+msgid "show 'other' directories' name only"
+msgstr ""
+
+#: builtin/ls-files.c:481
+msgid "don't show empty directories"
+msgstr ""
+
+#: builtin/ls-files.c:484
+msgid "show unmerged files in the output"
+msgstr ""
+
+#: builtin/ls-files.c:486
+msgid "show resolve-undo information"
+msgstr ""
+
+#: builtin/ls-files.c:488
+msgid "skip files matching pattern"
+msgstr ""
+
+#: builtin/ls-files.c:491
+msgid "exclude patterns are read from <file>"
+msgstr ""
+
+#: builtin/ls-files.c:494
+msgid "read additional per-directory exclude patterns in <file>"
+msgstr ""
+
+#: builtin/ls-files.c:496
+msgid "add the standard git exclusions"
+msgstr ""
+
+#: builtin/ls-files.c:499
+msgid "make the output relative to the project top directory"
+msgstr ""
+
+#: builtin/ls-files.c:502
+msgid "if any <file> is not in the index, treat this as an error"
+msgstr ""
+
+#: builtin/ls-files.c:503
+msgid "tree-ish"
+msgstr ""
+
+#: builtin/ls-files.c:504
+msgid "pretend that paths removed since <tree-ish> are still present"
+msgstr ""
+
+#: builtin/ls-files.c:506
+msgid "show debugging data"
+msgstr ""
+
+#: builtin/ls-tree.c:27
+msgid "git ls-tree [<options>] <tree-ish> [<path>...]"
+msgstr ""
+
+#: builtin/ls-tree.c:125
+msgid "only show trees"
+msgstr ""
+
+#: builtin/ls-tree.c:127
+msgid "recurse into subtrees"
+msgstr ""
+
+#: builtin/ls-tree.c:129
+msgid "show trees when recursing"
+msgstr ""
+
+#: builtin/ls-tree.c:132
+msgid "terminate entries with NUL byte"
+msgstr ""
+
+#: builtin/ls-tree.c:133
+msgid "include object size"
+msgstr ""
+
+#: builtin/ls-tree.c:135 builtin/ls-tree.c:137
+msgid "list only filenames"
+msgstr ""
+
+#: builtin/ls-tree.c:140
+msgid "use full path names"
+msgstr ""
+
+#: builtin/ls-tree.c:142
+msgid "list entire tree; not just current directory (implies --full-name)"
+msgstr ""
+
+#: builtin/merge.c:43
+msgid "git merge [options] [<commit>...]"
+msgstr ""
+
+#: builtin/merge.c:44
+msgid "git merge [options] <msg> HEAD <commit>"
+msgstr ""
+
+#: builtin/merge.c:45
+msgid "git merge --abort"
+msgstr ""
+
+#: builtin/merge.c:90
+msgid "switch `m' requires a value"
+msgstr ""
+
+#: builtin/merge.c:127
+#, c-format
+msgid "Could not find merge strategy '%s'.\n"
+msgstr ""
+
+#: builtin/merge.c:128
+#, c-format
+msgid "Available strategies are:"
+msgstr ""
+
+#: builtin/merge.c:133
+#, c-format
+msgid "Available custom strategies are:"
+msgstr ""
+
+#: builtin/merge.c:183
+msgid "do not show a diffstat at the end of the merge"
+msgstr ""
+
+#: builtin/merge.c:186
+msgid "show a diffstat at the end of the merge"
+msgstr ""
+
+#: builtin/merge.c:187
+msgid "(synonym to --stat)"
+msgstr ""
+
+#: builtin/merge.c:189
+msgid "add (at most <n>) entries from shortlog to merge commit message"
+msgstr ""
+
+#: builtin/merge.c:192
+msgid "create a single commit instead of doing a merge"
+msgstr ""
+
+#: builtin/merge.c:194
+msgid "perform a commit if the merge succeeds (default)"
+msgstr ""
+
+#: builtin/merge.c:196
+msgid "edit message before committing"
+msgstr ""
+
+#: builtin/merge.c:198
+msgid "allow fast-forward (default)"
+msgstr ""
+
+#: builtin/merge.c:200
+msgid "abort if fast-forward is not possible"
+msgstr ""
+
+#: builtin/merge.c:203
+msgid "Verify that the named commit has a valid GPG signature"
+msgstr ""
+
+#: builtin/merge.c:204 builtin/notes.c:866 builtin/revert.c:112
+msgid "strategy"
+msgstr ""
+
+#: builtin/merge.c:205
+msgid "merge strategy to use"
+msgstr ""
+
+#: builtin/merge.c:206
+msgid "option=value"
+msgstr ""
+
+#: builtin/merge.c:207
+msgid "option for selected merge strategy"
+msgstr ""
+
+#: builtin/merge.c:209
+msgid "merge commit message (for a non-fast-forward merge)"
+msgstr ""
+
+#: builtin/merge.c:213
+msgid "abort the current in-progress merge"
+msgstr ""
+
+#: builtin/merge.c:242
+msgid "could not run stash."
+msgstr ""
+
+#: builtin/merge.c:247
+msgid "stash failed"
+msgstr ""
+
+#: builtin/merge.c:252
+#, c-format
+msgid "not a valid object: %s"
+msgstr ""
+
+#: builtin/merge.c:271 builtin/merge.c:288
+msgid "read-tree failed"
+msgstr ""
+
+#: builtin/merge.c:318
+msgid " (nothing to squash)"
+msgstr " (rien à compresser)"
+
+#: builtin/merge.c:331
+#, c-format
+msgid "Squash commit -- not updating HEAD\n"
+msgstr ""
+
+#: builtin/merge.c:363
+msgid "Writing SQUASH_MSG"
+msgstr ""
+
+#: builtin/merge.c:365
+msgid "Finishing SQUASH_MSG"
+msgstr ""
+
+#: builtin/merge.c:388
+#, c-format
+msgid "No merge message -- not updating HEAD\n"
+msgstr ""
+
+#: builtin/merge.c:438
+#, c-format
+msgid "'%s' does not point to a commit"
+msgstr ""
+
+#: builtin/merge.c:550
+#, c-format
+msgid "Bad branch.%s.mergeoptions string: %s"
+msgstr ""
+
+#: builtin/merge.c:643
+msgid "git write-tree failed to write a tree"
+msgstr ""
+
+#: builtin/merge.c:671
+msgid "Not handling anything other than two heads merge."
+msgstr ""
+
+#: builtin/merge.c:685
+#, c-format
+msgid "Unknown option for merge-recursive: -X%s"
+msgstr ""
+
+#: builtin/merge.c:699
+#, c-format
+msgid "unable to write %s"
+msgstr ""
+
+#: builtin/merge.c:788
+#, c-format
+msgid "Could not read from '%s'"
+msgstr ""
+
+#: builtin/merge.c:797
+#, c-format
+msgid "Not committing merge; use 'git commit' to complete the merge.\n"
+msgstr ""
+
+#: builtin/merge.c:803
+#, c-format
+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"
+"Lines starting with '%c' will be ignored, and an empty message aborts\n"
+"the commit.\n"
+msgstr ""
+
+#: builtin/merge.c:827
+msgid "Empty commit message."
+msgstr ""
+
+#: builtin/merge.c:839
+#, c-format
+msgid "Wonderful.\n"
+msgstr ""
+
+#: builtin/merge.c:904
+#, c-format
+msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
+msgstr ""
+
+#: builtin/merge.c:920
+#, c-format
+msgid "'%s' is not a commit"
+msgstr ""
+
+#: builtin/merge.c:961
+msgid "No current branch."
+msgstr ""
+
+#: builtin/merge.c:963
+msgid "No remote for the current branch."
+msgstr ""
+
+#: builtin/merge.c:965
+msgid "No default upstream defined for the current branch."
+msgstr ""
+
+#: builtin/merge.c:970
+#, c-format
+msgid "No remote tracking branch for %s from %s"
+msgstr ""
+
+#: builtin/merge.c:1057 builtin/merge.c:1214
+#, c-format
+msgid "%s - not something we can merge"
+msgstr ""
+
+#: builtin/merge.c:1125
+msgid "There is no merge to abort (MERGE_HEAD missing)."
+msgstr ""
+
+#: builtin/merge.c:1141 git-pull.sh:31
+msgid ""
+"You have not concluded your merge (MERGE_HEAD exists).\n"
+"Please, commit your changes before you can merge."
+msgstr ""
+
+#: builtin/merge.c:1144 git-pull.sh:34
+msgid "You have not concluded your merge (MERGE_HEAD exists)."
+msgstr ""
+
+#: builtin/merge.c:1148
+msgid ""
+"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
+"Please, commit your changes before you can merge."
+msgstr ""
+
+#: builtin/merge.c:1151
+msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
+msgstr ""
+
+#: builtin/merge.c:1160
+msgid "You cannot combine --squash with --no-ff."
+msgstr ""
+
+#: builtin/merge.c:1165
+msgid "You cannot combine --no-ff with --ff-only."
+msgstr ""
+
+#: builtin/merge.c:1172
+msgid "No commit specified and merge.defaultToUpstream not set."
+msgstr ""
+
+#: builtin/merge.c:1204
+msgid "Can merge only exactly one commit into empty head"
+msgstr ""
+
+#: builtin/merge.c:1207
+msgid "Squash commit into empty head not supported yet"
+msgstr ""
+
+#: builtin/merge.c:1209
+msgid "Non-fast-forward commit does not make sense into an empty head"
+msgstr ""
+
+#: builtin/merge.c:1265
+#, c-format
+msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
+msgstr ""
+
+#: builtin/merge.c:1268
+#, c-format
+msgid "Commit %s has a bad GPG signature allegedly by %s."
+msgstr ""
+
+#. 'N'
+#: builtin/merge.c:1271
+#, c-format
+msgid "Commit %s does not have a GPG signature."
+msgstr ""
+
+#: builtin/merge.c:1274
+#, c-format
+msgid "Commit %s has a good GPG signature by %s\n"
+msgstr ""
+
+#: builtin/merge.c:1358
+#, c-format
+msgid "Updating %s..%s\n"
+msgstr ""
+
+#: builtin/merge.c:1397
+#, c-format
+msgid "Trying really trivial in-index merge...\n"
+msgstr ""
+
+#: builtin/merge.c:1404
+#, c-format
+msgid "Nope.\n"
+msgstr ""
+
+#: builtin/merge.c:1436
+msgid "Not possible to fast-forward, aborting."
+msgstr ""
+
+#: builtin/merge.c:1459 builtin/merge.c:1538
+#, c-format
+msgid "Rewinding the tree to pristine...\n"
+msgstr ""
+
+#: builtin/merge.c:1463
+#, c-format
+msgid "Trying merge strategy %s...\n"
+msgstr ""
+
+#: builtin/merge.c:1529
+#, c-format
+msgid "No merge strategy handled the merge.\n"
+msgstr ""
+
+#: builtin/merge.c:1531
+#, c-format
+msgid "Merge with strategy %s failed.\n"
+msgstr ""
+
+#: builtin/merge.c:1540
+#, c-format
+msgid "Using the %s to prepare resolving by hand.\n"
+msgstr ""
+
+#: builtin/merge.c:1552
+#, c-format
+msgid "Automatic merge went well; stopped before committing as requested\n"
+msgstr ""
+
+#: builtin/merge-base.c:26
+msgid "git merge-base [-a|--all] <commit> <commit>..."
+msgstr ""
+
+#: builtin/merge-base.c:27
+msgid "git merge-base [-a|--all] --octopus <commit>..."
+msgstr ""
+
+#: builtin/merge-base.c:28
+msgid "git merge-base --independent <commit>..."
+msgstr ""
+
+#: builtin/merge-base.c:29
+msgid "git merge-base --is-ancestor <commit> <commit>"
+msgstr ""
+
+#: builtin/merge-base.c:98
+msgid "output all common ancestors"
+msgstr ""
+
+#: builtin/merge-base.c:99
+msgid "find ancestors for a single n-way merge"
+msgstr ""
+
+#: builtin/merge-base.c:100
+msgid "list revs not reachable from others"
+msgstr ""
+
+#: builtin/merge-base.c:102
+msgid "is the first one ancestor of the other?"
+msgstr ""
+
+#: builtin/merge-file.c:8
+msgid ""
+"git merge-file [options] [-L name1 [-L orig [-L name2]]] file1 orig_file "
+"file2"
+msgstr ""
+
+#: builtin/merge-file.c:33
+msgid "send results to standard output"
+msgstr ""
+
+#: builtin/merge-file.c:34
+msgid "use a diff3 based merge"
+msgstr ""
+
+#: builtin/merge-file.c:35
+msgid "for conflicts, use our version"
+msgstr ""
+
+#: builtin/merge-file.c:37
+msgid "for conflicts, use their version"
+msgstr ""
+
+#: builtin/merge-file.c:39
+msgid "for conflicts, use a union version"
+msgstr ""
+
+#: builtin/merge-file.c:42
+msgid "for conflicts, use this marker size"
+msgstr ""
+
+#: builtin/merge-file.c:43
+msgid "do not warn about conflicts"
+msgstr ""
+
+#: builtin/merge-file.c:45
+msgid "set labels for file1/orig_file/file2"
+msgstr ""
+
+#: builtin/mktree.c:67
+msgid "git mktree [-z] [--missing] [--batch]"
+msgstr ""
+
+#: builtin/mktree.c:153
+msgid "input is NUL terminated"
+msgstr ""
+
+#: builtin/mktree.c:154 builtin/write-tree.c:24
+msgid "allow missing objects"
+msgstr ""
+
+#: builtin/mktree.c:155
+msgid "allow creation of more than one tree"
+msgstr ""
+
+#: builtin/mv.c:14
+msgid "git mv [options] <source>... <destination>"
+msgstr ""
+
+#: builtin/mv.c:64
+msgid "force move/rename even if target exists"
+msgstr ""
+
+#: builtin/mv.c:65
+msgid "skip move/rename errors"
+msgstr ""
+
+#: builtin/mv.c:108
+#, c-format
+msgid "Checking rename of '%s' to '%s'\n"
+msgstr ""
+
+#: builtin/mv.c:112
+msgid "bad source"
+msgstr ""
+
+#: builtin/mv.c:115
+msgid "can not move directory into itself"
+msgstr ""
+
+#: builtin/mv.c:118
+msgid "cannot move directory over file"
+msgstr ""
+
+#: builtin/mv.c:128
+#, c-format
+msgid "Huh? %.*s is in index?"
+msgstr ""
+
+#: builtin/mv.c:140
+msgid "source directory is empty"
+msgstr ""
+
+#: builtin/mv.c:171
+msgid "not under version control"
+msgstr ""
+
+#: builtin/mv.c:173
+msgid "destination exists"
+msgstr ""
+
+#: builtin/mv.c:181
+#, c-format
+msgid "overwriting '%s'"
+msgstr ""
+
+#: builtin/mv.c:184
+msgid "Cannot overwrite"
+msgstr ""
+
+#: builtin/mv.c:187
+msgid "multiple sources for the same target"
+msgstr ""
+
+#: builtin/mv.c:202
+#, c-format
+msgid "%s, source=%s, destination=%s"
+msgstr "%s, source=%s, destination=%s"
+
+#: builtin/mv.c:212
+#, c-format
+msgid "Renaming %s to %s\n"
+msgstr ""
+
+#: builtin/mv.c:215 builtin/remote.c:731
+#, c-format
+msgid "renaming '%s' failed"
+msgstr ""
+
+#: builtin/name-rev.c:175
+msgid "git name-rev [options] <commit>..."
+msgstr ""
+
+#: builtin/name-rev.c:176
+msgid "git name-rev [options] --all"
+msgstr ""
+
+#: builtin/name-rev.c:177
+msgid "git name-rev [options] --stdin"
+msgstr ""
+
+#: builtin/name-rev.c:229
+msgid "print only names (no SHA-1)"
+msgstr ""
+
+#: builtin/name-rev.c:230
+msgid "only use tags to name the commits"
+msgstr ""
+
+#: builtin/name-rev.c:232
+msgid "only use refs matching <pattern>"
+msgstr ""
+
+#: builtin/name-rev.c:234
+msgid "list all commits reachable from all refs"
+msgstr ""
+
+#: builtin/name-rev.c:235
+msgid "read from stdin"
+msgstr ""
+
+#: builtin/name-rev.c:236
+msgid "allow to print `undefined` names"
+msgstr ""
+
+#: builtin/notes.c:26
+msgid "git notes [--ref <notes_ref>] [list [<object>]]"
+msgstr ""
+
+#: builtin/notes.c:27
+msgid ""
+"git notes [--ref <notes_ref>] add [-f] [-m <msg> | -F <file> | (-c | -C) "
+"<object>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:28
+msgid "git notes [--ref <notes_ref>] copy [-f] <from-object> <to-object>"
+msgstr ""
+
+#: builtin/notes.c:29
+msgid ""
+"git notes [--ref <notes_ref>] append [-m <msg> | -F <file> | (-c | -C) "
+"<object>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:30
+msgid "git notes [--ref <notes_ref>] edit [<object>]"
+msgstr ""
+
+#: builtin/notes.c:31
+msgid "git notes [--ref <notes_ref>] show [<object>]"
+msgstr ""
+
+#: builtin/notes.c:32
+msgid ""
+"git notes [--ref <notes_ref>] merge [-v | -q] [-s <strategy> ] <notes_ref>"
+msgstr ""
+
+#: builtin/notes.c:33
+msgid "git notes merge --commit [-v | -q]"
+msgstr ""
+
+#: builtin/notes.c:34
+msgid "git notes merge --abort [-v | -q]"
+msgstr ""
+
+#: builtin/notes.c:35
+msgid "git notes [--ref <notes_ref>] remove [<object>...]"
+msgstr ""
+
+#: builtin/notes.c:36
+msgid "git notes [--ref <notes_ref>] prune [-n | -v]"
+msgstr ""
+
+#: builtin/notes.c:37
+msgid "git notes [--ref <notes_ref>] get-ref"
+msgstr ""
+
+#: builtin/notes.c:42
+msgid "git notes [list [<object>]]"
+msgstr ""
+
+#: builtin/notes.c:47
+msgid "git notes add [<options>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:52
+msgid "git notes copy [<options>] <from-object> <to-object>"
+msgstr ""
+
+#: builtin/notes.c:53
+msgid "git notes copy --stdin [<from-object> <to-object>]..."
+msgstr ""
+
+#: builtin/notes.c:58
+msgid "git notes append [<options>] [<object>]"
+msgstr ""
+
+#: builtin/notes.c:63
+msgid "git notes edit [<object>]"
+msgstr ""
+
+#: builtin/notes.c:68
+msgid "git notes show [<object>]"
+msgstr ""
+
+#: builtin/notes.c:73
+msgid "git notes merge [<options>] <notes_ref>"
+msgstr ""
+
+#: builtin/notes.c:74
+msgid "git notes merge --commit [<options>]"
+msgstr ""
+
+#: builtin/notes.c:75
+msgid "git notes merge --abort [<options>]"
+msgstr ""
+
+#: builtin/notes.c:80
+msgid "git notes remove [<object>]"
+msgstr ""
+
+#: builtin/notes.c:85
+msgid "git notes prune [<options>]"
+msgstr ""
+
+#: builtin/notes.c:90
+msgid "git notes get-ref"
+msgstr ""
+
+#: builtin/notes.c:139
+#, c-format
+msgid "unable to start 'show' for object '%s'"
+msgstr ""
+
+#: builtin/notes.c:143
+msgid "could not read 'show' output"
+msgstr ""
+
+#: builtin/notes.c:151
+#, c-format
+msgid "failed to finish 'show' for object '%s'"
+msgstr ""
+
+#: builtin/notes.c:169 builtin/tag.c:341
+#, c-format
+msgid "could not create file '%s'"
+msgstr ""
+
+#: builtin/notes.c:188
+msgid "Please supply the note contents using either -m or -F option"
+msgstr ""
+
+#: builtin/notes.c:209 builtin/notes.c:972
+#, c-format
+msgid "Removing note for object %s\n"
+msgstr ""
+
+#: builtin/notes.c:214
+msgid "unable to write note object"
+msgstr ""
+
+#: builtin/notes.c:216
+#, c-format
+msgid "The note contents has been left in %s"
+msgstr ""
+
+#: builtin/notes.c:250 builtin/tag.c:540
+#, c-format
+msgid "cannot read '%s'"
+msgstr ""
+
+#: builtin/notes.c:252 builtin/tag.c:543
+#, c-format
+msgid "could not open or read '%s'"
+msgstr ""
+
+#: builtin/notes.c:271 builtin/notes.c:444 builtin/notes.c:446
+#: builtin/notes.c:506 builtin/notes.c:560 builtin/notes.c:643
+#: builtin/notes.c:648 builtin/notes.c:723 builtin/notes.c:765
+#: builtin/notes.c:967 builtin/tag.c:556
+#, c-format
+msgid "Failed to resolve '%s' as a valid ref."
+msgstr ""
+
+#: builtin/notes.c:274
+#, c-format
+msgid "Failed to read object '%s'."
+msgstr ""
+
+#: builtin/notes.c:298
+msgid "Cannot commit uninitialized/unreferenced notes tree"
+msgstr ""
+
+#: builtin/notes.c:339
+#, c-format
+msgid "Bad notes.rewriteMode value: '%s'"
+msgstr ""
+
+#: builtin/notes.c:349
+#, 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
+#: builtin/notes.c:376
+#, c-format
+msgid "Bad %s value: '%s'"
+msgstr ""
+
+#: builtin/notes.c:440
+#, c-format
+msgid "Malformed input line: '%s'."
+msgstr ""
+
+#: builtin/notes.c:455
+#, c-format
+msgid "Failed to copy notes from '%s' to '%s'"
+msgstr ""
+
+#: builtin/notes.c:499 builtin/notes.c:553 builtin/notes.c:626
+#: builtin/notes.c:638 builtin/notes.c:711 builtin/notes.c:758
+#: builtin/notes.c:1032
+msgid "too many parameters"
+msgstr ""
+
+#: builtin/notes.c:512 builtin/notes.c:771
+#, c-format
+msgid "No note found for object %s."
+msgstr ""
+
+#: builtin/notes.c:534 builtin/notes.c:691
+msgid "note contents as a string"
+msgstr ""
+
+#: builtin/notes.c:537 builtin/notes.c:694
+msgid "note contents in a file"
+msgstr ""
+
+#: builtin/notes.c:539 builtin/notes.c:542 builtin/notes.c:696
+#: builtin/notes.c:699 builtin/tag.c:474
+msgid "object"
+msgstr ""
+
+#: builtin/notes.c:540 builtin/notes.c:697
+msgid "reuse and edit specified note object"
+msgstr ""
+
+#: builtin/notes.c:543 builtin/notes.c:700
+msgid "reuse specified note object"
+msgstr ""
+
+#: builtin/notes.c:545 builtin/notes.c:613
+msgid "replace existing notes"
+msgstr ""
+
+#: builtin/notes.c:579
+#, c-format
+msgid ""
+"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+
+#: builtin/notes.c:584 builtin/notes.c:661
+#, c-format
+msgid "Overwriting existing notes for object %s\n"
+msgstr ""
+
+#: builtin/notes.c:614
+msgid "read objects from stdin"
+msgstr ""
+
+#: builtin/notes.c:616
+msgid "load rewriting config for <command> (implies --stdin)"
+msgstr ""
+
+#: builtin/notes.c:634
+msgid "too few parameters"
+msgstr ""
+
+#: builtin/notes.c:655
+#, c-format
+msgid ""
+"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+
+#: builtin/notes.c:667
+#, c-format
+msgid "Missing notes on source object %s. Cannot copy."
+msgstr ""
+
+#: builtin/notes.c:716
+#, 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:863
+msgid "General options"
+msgstr ""
+
+#: builtin/notes.c:865
+msgid "Merge options"
+msgstr ""
+
+#: builtin/notes.c:867
+msgid ""
+"resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
+"cat_sort_uniq)"
+msgstr ""
+
+#: builtin/notes.c:869
+msgid "Committing unmerged notes"
+msgstr ""
+
+#: builtin/notes.c:871
+msgid "finalize notes merge by committing unmerged notes"
+msgstr ""
+
+#: builtin/notes.c:873
+msgid "Aborting notes merge resolution"
+msgstr ""
+
+#: builtin/notes.c:875
+msgid "abort notes merge"
+msgstr ""
+
+#: builtin/notes.c:970
+#, c-format
+msgid "Object %s has no note\n"
+msgstr ""
+
+#: builtin/notes.c:982
+msgid "attempt to remove non-existent note is not an error"
+msgstr ""
+
+#: builtin/notes.c:985
+msgid "read object names from the standard input"
+msgstr ""
+
+#: builtin/notes.c:1066
+msgid "notes_ref"
+msgstr ""
+
+#: builtin/notes.c:1067
+msgid "use notes from <notes_ref>"
+msgstr ""
+
+#: builtin/notes.c:1102 builtin/remote.c:1598
+#, c-format
+msgid "Unknown subcommand: %s"
+msgstr ""
+
+#: builtin/pack-objects.c:23
+msgid "git pack-objects --stdout [options...] [< ref-list | < object-list]"
+msgstr ""
+
+#: builtin/pack-objects.c:24
+msgid "git pack-objects [options...] base-name [< ref-list | < object-list]"
+msgstr ""
+
+#: builtin/pack-objects.c:183 builtin/pack-objects.c:186
+#, c-format
+msgid "deflate error (%d)"
+msgstr ""
+
+#: builtin/pack-objects.c:2397
+#, c-format
+msgid "unsupported index version %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2401
+#, c-format
+msgid "bad index version '%s'"
+msgstr ""
+
+#: builtin/pack-objects.c:2424
+#, c-format
+msgid "option %s does not accept negative form"
+msgstr ""
+
+#: builtin/pack-objects.c:2428
+#, c-format
+msgid "unable to parse value '%s' for option %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2447
+msgid "do not show progress meter"
+msgstr ""
+
+#: builtin/pack-objects.c:2449
+msgid "show progress meter"
+msgstr ""
+
+#: builtin/pack-objects.c:2451
+msgid "show progress meter during object writing phase"
+msgstr ""
+
+#: builtin/pack-objects.c:2454
+msgid "similar to --all-progress when progress meter is shown"
+msgstr ""
+
+#: builtin/pack-objects.c:2455
+msgid "version[,offset]"
+msgstr ""
+
+#: builtin/pack-objects.c:2456
+msgid "write the pack index file in the specified idx format version"
+msgstr ""
+
+#: builtin/pack-objects.c:2459
+msgid "maximum size of each output pack file"
+msgstr ""
+
+#: builtin/pack-objects.c:2461
+msgid "ignore borrowed objects from alternate object store"
+msgstr ""
+
+#: builtin/pack-objects.c:2463
+msgid "ignore packed objects"
+msgstr ""
+
+#: builtin/pack-objects.c:2465
+msgid "limit pack window by objects"
+msgstr ""
+
+#: builtin/pack-objects.c:2467
+msgid "limit pack window by memory in addition to object limit"
+msgstr ""
+
+#: builtin/pack-objects.c:2469
+msgid "maximum length of delta chain allowed in the resulting pack"
+msgstr ""
+
+#: builtin/pack-objects.c:2471
+msgid "reuse existing deltas"
+msgstr ""
+
+#: builtin/pack-objects.c:2473
+msgid "reuse existing objects"
+msgstr ""
+
+#: builtin/pack-objects.c:2475
+msgid "use OFS_DELTA objects"
+msgstr ""
+
+#: builtin/pack-objects.c:2477
+msgid "use threads when searching for best delta matches"
+msgstr ""
+
+#: builtin/pack-objects.c:2479
+msgid "do not create an empty pack output"
+msgstr ""
+
+#: builtin/pack-objects.c:2481
+msgid "read revision arguments from standard input"
+msgstr ""
+
+#: builtin/pack-objects.c:2483
+msgid "limit the objects to those that are not yet packed"
+msgstr ""
+
+#: builtin/pack-objects.c:2486
+msgid "include objects reachable from any reference"
+msgstr ""
+
+#: builtin/pack-objects.c:2489
+msgid "include objects referred by reflog entries"
+msgstr ""
+
+#: builtin/pack-objects.c:2492
+msgid "output pack to stdout"
+msgstr ""
+
+#: builtin/pack-objects.c:2494
+msgid "include tag objects that refer to objects to be packed"
+msgstr ""
+
+#: builtin/pack-objects.c:2496
+msgid "keep unreachable objects"
+msgstr ""
+
+#: builtin/pack-objects.c:2497 parse-options.h:141
+msgid "time"
+msgstr ""
+
+#: builtin/pack-objects.c:2498
+msgid "unpack unreachable objects newer than <time>"
+msgstr ""
+
+#: builtin/pack-objects.c:2501
+msgid "create thin packs"
+msgstr ""
+
+#: builtin/pack-objects.c:2503
+msgid "ignore packs that have companion .keep file"
+msgstr ""
+
+#: builtin/pack-objects.c:2505
+msgid "pack compression level"
+msgstr ""
+
+#: builtin/pack-objects.c:2507
+msgid "do not hide commits by grafts"
+msgstr ""
+
+#: builtin/pack-refs.c:6
+msgid "git pack-refs [options]"
+msgstr ""
+
+#: builtin/pack-refs.c:14
+msgid "pack everything"
+msgstr ""
+
+#: builtin/pack-refs.c:15
+msgid "prune loose refs (default)"
+msgstr ""
+
+#: builtin/prune-packed.c:7
+msgid "git prune-packed [-n|--dry-run] [-q|--quiet]"
+msgstr ""
+
+#: builtin/prune.c:12
+msgid "git prune [-n] [-v] [--expire <time>] [--] [<head>...]"
+msgstr ""
+
+#: builtin/prune.c:132
+msgid "do not remove, show only"
+msgstr ""
+
+#: builtin/prune.c:133
+msgid "report pruned objects"
+msgstr ""
+
+#: builtin/prune.c:136
+msgid "expire objects older than <time>"
+msgstr ""
+
+#: builtin/push.c:14
+msgid "git push [<options>] [<repository> [<refspec>...]]"
+msgstr ""
+
+#: builtin/push.c:45
+msgid "tag shorthand without <tag>"
+msgstr ""
+
+#: builtin/push.c:64
+msgid "--delete only accepts plain target ref names"
+msgstr ""
+
+#: builtin/push.c:99
+msgid ""
+"\n"
+"To choose either option permanently, see push.default in 'git help config'."
+msgstr ""
+
+#: builtin/push.c:102
+#, 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 %s\n"
+"%s"
+msgstr ""
+
+#: builtin/push.c:121
+#, 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 ""
+
+#: builtin/push.c:128
+#, 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 ""
+
+#: builtin/push.c:136
+#, c-format
+msgid "The current branch %s has multiple upstream branches, refusing to push."
+msgstr ""
+
+#: builtin/push.c:139
+#, 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 ""
+
+#: builtin/push.c:151
+msgid ""
+"push.default is unset; its implicit value is changing in\n"
+"Git 2.0 from 'matching' to 'simple'. To squelch this message\n"
+"and maintain the current behavior after the default changes, use:\n"
+"\n"
+"  git config --global push.default matching\n"
+"\n"
+"To squelch this message and adopt the new behavior now, use:\n"
+"\n"
+"  git config --global push.default simple\n"
+"\n"
+"See 'git help config' and search for 'push.default' for further "
+"information.\n"
+"(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode\n"
+"'current' instead of 'simple' if you sometimes use older versions of Git)"
+msgstr ""
+
+#: builtin/push.c:199
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+
+#: builtin/push.c:206
+msgid ""
+"Updates were rejected because the tip of your current branch is behind\n"
+"its remote counterpart. Merge the remote changes (e.g. 'git pull')\n"
+"before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+
+#: builtin/push.c:212
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. If you did not intend to push that branch, you may want to\n"
+"specify branches to push or set the 'push.default' configuration variable\n"
+"to 'simple', 'current' or 'upstream' to push only the current branch."
+msgstr ""
+
+#: builtin/push.c:218
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. Check out this branch and merge 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 ""
+
+#: builtin/push.c:224
+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 merge 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 ""
+
+#: builtin/push.c:231
+msgid "Updates were rejected because the tag already exists in the remote."
+msgstr ""
+
+#: builtin/push.c:234
+msgid ""
+"You cannot update a remote ref that points at a non-commit object,\n"
+"or update a remote ref to make it point at a non-commit object,\n"
+"without using the '--force' option.\n"
+msgstr ""
+
+#: builtin/push.c:294
+#, c-format
+msgid "Pushing to %s\n"
+msgstr ""
+
+#: builtin/push.c:298
+#, c-format
+msgid "failed to push some refs to '%s'"
+msgstr ""
+
+#: builtin/push.c:331
+#, c-format
+msgid "bad repository '%s'"
+msgstr ""
+
+#: builtin/push.c:332
+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 ""
+
+#: builtin/push.c:347
+msgid "--all and --tags are incompatible"
+msgstr ""
+
+#: builtin/push.c:348
+msgid "--all can't be combined with refspecs"
+msgstr ""
+
+#: builtin/push.c:353
+msgid "--mirror and --tags are incompatible"
+msgstr ""
+
+#: builtin/push.c:354
+msgid "--mirror can't be combined with refspecs"
+msgstr ""
+
+#: builtin/push.c:359
+msgid "--all and --mirror are incompatible"
+msgstr ""
+
+#: builtin/push.c:419
+msgid "repository"
+msgstr ""
+
+#: builtin/push.c:420
+msgid "push all refs"
+msgstr ""
+
+#: builtin/push.c:421
+msgid "mirror all refs"
+msgstr ""
+
+#: builtin/push.c:423
+msgid "delete refs"
+msgstr ""
+
+#: builtin/push.c:424
+msgid "push tags (can't be used with --all or --mirror)"
+msgstr ""
+
+#: builtin/push.c:427
+msgid "force updates"
+msgstr ""
+
+#: builtin/push.c:428
+msgid "check"
+msgstr ""
+
+#: builtin/push.c:429
+msgid "control recursive pushing of submodules"
+msgstr ""
+
+#: builtin/push.c:431
+msgid "use thin pack"
+msgstr ""
+
+#: builtin/push.c:432 builtin/push.c:433
+msgid "receive pack program"
+msgstr ""
+
+#: builtin/push.c:434
+msgid "set upstream for git pull/status"
+msgstr ""
+
+#: builtin/push.c:437
+msgid "prune locally removed refs"
+msgstr ""
+
+#: builtin/push.c:439
+msgid "bypass pre-push hook"
+msgstr ""
+
+#: builtin/push.c:440
+msgid "push missing but relevant tags"
+msgstr ""
+
+#: builtin/push.c:450
+msgid "--delete is incompatible with --all, --mirror and --tags"
+msgstr ""
+
+#: builtin/push.c:452
+msgid "--delete doesn't make sense without any refs"
+msgstr ""
+
+#: builtin/read-tree.c:36
+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:108
+msgid "write resulting index to <file>"
+msgstr ""
+
+#: builtin/read-tree.c:111
+msgid "only empty the index"
+msgstr ""
+
+#: builtin/read-tree.c:113
+msgid "Merging"
+msgstr ""
+
+#: builtin/read-tree.c:115
+msgid "perform a merge in addition to a read"
+msgstr ""
+
+#: builtin/read-tree.c:117
+msgid "3-way merge if no file level merging required"
+msgstr ""
+
+#: builtin/read-tree.c:119
+msgid "3-way merge in presence of adds and removes"
+msgstr ""
+
+#: builtin/read-tree.c:121
+msgid "same as -m, but discard unmerged entries"
+msgstr ""
+
+#: builtin/read-tree.c:122
+msgid "<subdirectory>/"
+msgstr ""
+
+#: builtin/read-tree.c:123
+msgid "read the tree into the index under <subdirectory>/"
+msgstr ""
+
+#: builtin/read-tree.c:126
+msgid "update working tree with merge result"
+msgstr ""
+
+#: builtin/read-tree.c:128
+msgid "gitignore"
+msgstr ""
+
+#: builtin/read-tree.c:129
+msgid "allow explicitly ignored files to be overwritten"
+msgstr ""
+
+#: builtin/read-tree.c:132
+msgid "don't check the working tree after merging"
+msgstr ""
+
+#: builtin/read-tree.c:133
+msgid "don't update the index or the work tree"
+msgstr ""
+
+#: builtin/read-tree.c:135
+msgid "skip applying sparse checkout filter"
+msgstr ""
+
+#: builtin/read-tree.c:137
+msgid "debug unpack-trees"
+msgstr ""
+
+#: builtin/remote.c:11
+msgid "git remote [-v | --verbose]"
+msgstr "git remote [-v | --verbose]"
+
+#: builtin/remote.c:12
+msgid ""
+"git remote add [-t <branch>] [-m <master>] [-f] [--tags|--no-tags] [--"
+"mirror=<fetch|push>] <name> <url>"
+msgstr "git remote add [-t <branche>] [-m <maîtresse>] [-f] [--tags|--no-tags] [--mirror=<fetch|push>] <nom> <URL>"
+
+#: builtin/remote.c:13 builtin/remote.c:32
+msgid "git remote rename <old> <new>"
+msgstr "git remote rename <ancienne> <nouvelle>"
+
+#: builtin/remote.c:14 builtin/remote.c:37
+msgid "git remote remove <name>"
+msgstr "git remote remove <nom>"
+
+#: builtin/remote.c:15 builtin/remote.c:42
+msgid "git remote set-head <name> (-a | -d | <branch>)"
+msgstr "git remote set-head <nom> (-a | -d | <branche>)"
+
+#: builtin/remote.c:16
+msgid "git remote [-v | --verbose] show [-n] <name>"
+msgstr "git remote [-v | --verbose] show [-n] <nom>"
+
+#: builtin/remote.c:17
+msgid "git remote prune [-n | --dry-run] <name>"
+msgstr "git remote prune [-n | --dry-run] <nom>"
+
+#: builtin/remote.c:18
+msgid ""
+"git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
+msgstr "git remote [-v | --verbose] update [-p | --prune] [(<groupe> | <distante>)...]"
+
+#: builtin/remote.c:19
+msgid "git remote set-branches [--add] <name> <branch>..."
+msgstr "git remote set-branches [--add] <nom> <branche>..."
+
+#: builtin/remote.c:20 builtin/remote.c:68
+msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
+msgstr "git remote set-url [--push] <nom> <nouvelle-URL> [<ancienne-URL>]"
+
+#: builtin/remote.c:21 builtin/remote.c:69
+msgid "git remote set-url --add <name> <newurl>"
+msgstr "git remote set-url --add <nom> <nouvelle-URL>"
+
+#: builtin/remote.c:22 builtin/remote.c:70
+msgid "git remote set-url --delete <name> <url>"
+msgstr "git remote set-url --delete <nom> <URL>"
+
+#: builtin/remote.c:27
+msgid "git remote add [<options>] <name> <url>"
+msgstr "git remote add [<options>] <nom> <URL>"
+
+#: builtin/remote.c:47
+msgid "git remote set-branches <name> <branch>..."
+msgstr "git remote set-branches <nom> <branche>..."
+
+#: builtin/remote.c:48
+msgid "git remote set-branches --add <name> <branch>..."
+msgstr "git remote set-branches --add <nom> <branche>..."
+
+#: builtin/remote.c:53
+msgid "git remote show [<options>] <name>"
+msgstr "git remote show [<options>] <nom>"
+
+#: builtin/remote.c:58
+msgid "git remote prune [<options>] <name>"
+msgstr "git remote prune [<options>] <nom>"
+
+#: builtin/remote.c:63
+msgid "git remote update [<options>] [<group> | <remote>]..."
+msgstr "git remote update [<options>] [<groupe> | <distante>]..."
+
+#: builtin/remote.c:98
+#, c-format
+msgid "Updating %s"
+msgstr "Mise à jour de %s"
+
+#: builtin/remote.c:130
+msgid ""
+"--mirror is dangerous and deprecated; please\n"
+"\t use --mirror=fetch or --mirror=push instead"
+msgstr ""
+"--mirror est dangereux et obsolète ; merci\n"
+"\t d'utiliser --mirror=fetch ou --mirror=push à la place"
+
+#: builtin/remote.c:147
+#, c-format
+msgid "unknown mirror argument: %s"
+msgstr "argument miroir inconnu : %s"
+
+#: builtin/remote.c:163
+msgid "fetch the remote branches"
+msgstr "rapatrier les branches distantes"
+
+#: builtin/remote.c:165
+msgid "import all tags and associated objects when fetching"
+msgstr "importer toutes les étiquettes et les objets associés lors du rapatriement"
+
+#: builtin/remote.c:168
+msgid "or do not fetch any tag at all (--no-tags)"
+msgstr "ou ne rapatrier aucune étiquette (--no-tags)"
+
+#: builtin/remote.c:170
+msgid "branch(es) to track"
+msgstr "branche(s) à suivre"
+
+#: builtin/remote.c:171
+msgid "master branch"
+msgstr "branche maîtresse"
+
+#: builtin/remote.c:172
+msgid "push|fetch"
+msgstr "push|fetch"
+
+#: builtin/remote.c:173
+msgid "set up remote as a mirror to push to or fetch from"
+msgstr "paramétrer la distante comme miroir pour pousser ou pour rapatrier depuis"
+
+#: builtin/remote.c:185
+msgid "specifying a master branch makes no sense with --mirror"
+msgstr "spécifier une branche maîtresse n'a pas de sens avec --mirror"
+
+#: builtin/remote.c:187
+msgid "specifying branches to track makes sense only with fetch mirrors"
+msgstr "spécifier les branches à suivre n'a de sens qu'avec des miroirs de rapatriement"
+
+#: builtin/remote.c:195 builtin/remote.c:646
+#, c-format
+msgid "remote %s already exists."
+msgstr "la distante %s existe déjà."
+
+#: builtin/remote.c:199 builtin/remote.c:650
+#, c-format
+msgid "'%s' is not a valid remote name"
+msgstr "'%s' n'est pas un nom valide de distante"
+
+#: builtin/remote.c:243
+#, c-format
+msgid "Could not setup master '%s'"
+msgstr "Impossible de paramétrer la maîtresse '%s'"
+
+#: builtin/remote.c:299
+#, c-format
+msgid "more than one %s"
+msgstr "plus d'un %s"
+
+#: builtin/remote.c:339
+#, c-format
+msgid "Could not get fetch map for refspec %s"
+msgstr ""
+
+#: builtin/remote.c:440 builtin/remote.c:448
+msgid "(matching)"
+msgstr "(correspond)"
+
+#: builtin/remote.c:452
+msgid "(delete)"
+msgstr "(supprimer)"
+
+#: builtin/remote.c:595 builtin/remote.c:601 builtin/remote.c:607
+#, c-format
+msgid "Could not append '%s' to '%s'"
+msgstr "Impossible d'ajouter '%s' à '%s'"
+
+#: builtin/remote.c:639 builtin/remote.c:792 builtin/remote.c:890
+#, c-format
+msgid "No such remote: %s"
+msgstr "Distante inconnue : %s"
+
+#: builtin/remote.c:656
+#, c-format
+msgid "Could not rename config section '%s' to '%s'"
+msgstr "Impossible de renommer la section de configuration '%s' en '%s'"
+
+#: builtin/remote.c:662 builtin/remote.c:799
+#, c-format
+msgid "Could not remove config section '%s'"
+msgstr "Impossible de supprimer la section de configuration '%s'"
+
+#: builtin/remote.c:677
+#, c-format
+msgid ""
+"Not updating non-default fetch refspec\n"
+"\t%s\n"
+"\tPlease update the configuration manually if necessary."
+msgstr ""
+"Pas de mise à jour du refspec de rapatriement qui n'est pas par défaut\n"
+"\t%s\n"
+"\tMerci de mettre à jour la configuration si nécessaire."
+
+#: builtin/remote.c:683
+#, c-format
+msgid "Could not append '%s'"
+msgstr "Impossible d'ajouter '%s'"
+
+#: builtin/remote.c:694
+#, c-format
+msgid "Could not set '%s'"
+msgstr "Impossible de définir '%s'"
+
+#: builtin/remote.c:716
+#, c-format
+msgid "deleting '%s' failed"
+msgstr "échec de suppression de '%s'"
+
+#: builtin/remote.c:750
+#, c-format
+msgid "creating '%s' failed"
+msgstr "échec de création de '%s'"
+
+#: builtin/remote.c:764
+#, c-format
+msgid "Could not remove branch %s"
+msgstr "Impossible de supprimer la branche %s"
+
+#: builtin/remote.c:834
+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] ""
+"Note : Une branche en dehors de refs/remotes/ n'a pas été supprimée ;\n"
+"pour la supprimer, utilisez :"
+msgstr[1] ""
+"Note : Plusieurs branches en dehors de refs/remotes/ n'ont pas été supprimées ;\n"
+"pour les supprimer, utilisez :"
+
+#: builtin/remote.c:943
+#, c-format
+msgid " new (next fetch will store in remotes/%s)"
+msgstr " nouveau (le prochain rapatriement (fetch) stockera dans remotes/%s)"
+
+#: builtin/remote.c:946
+msgid " tracked"
+msgstr " suivi"
+
+#: builtin/remote.c:948
+msgid " stale (use 'git remote prune' to remove)"
+msgstr " dépassé (utilisez 'git remote prune' pour supprimer)"
+
+#: builtin/remote.c:950
+msgid " ???"
+msgstr " ???"
+
+#: builtin/remote.c:991
+#, c-format
+msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
+msgstr "branch.%s.merge invalide ; ne peut pas rebaser sur plus d'une branche"
+
+#: builtin/remote.c:998
+#, c-format
+msgid "rebases onto remote %s"
+msgstr "rebase sur la distante %s"
+
+#: builtin/remote.c:1001
+#, c-format
+msgid " merges with remote %s"
+msgstr " fusionne avec la distante %s"
+
+#: builtin/remote.c:1002
+msgid "    and with remote"
+msgstr "    et avec la distante"
+
+#: builtin/remote.c:1004
+#, c-format
+msgid "merges with remote %s"
+msgstr "fusionne avec la distante %s"
+
+#: builtin/remote.c:1005
+msgid "   and with remote"
+msgstr "   et avec la distante"
+
+#: builtin/remote.c:1051
+msgid "create"
+msgstr "créer"
+
+#: builtin/remote.c:1054
+msgid "delete"
+msgstr "supprimer"
+
+#: builtin/remote.c:1058
+msgid "up to date"
+msgstr "à jour"
+
+#: builtin/remote.c:1061
+msgid "fast-forwardable"
+msgstr "peut être mis à jour en avance rapide"
+
+#: builtin/remote.c:1064
+msgid "local out of date"
+msgstr "le local n'est pas à jour"
+
+#: builtin/remote.c:1071
+#, c-format
+msgid "    %-*s forces to %-*s (%s)"
+msgstr "    %-*s force vers %-*s (%s)"
+
+#: builtin/remote.c:1074
+#, c-format
+msgid "    %-*s pushes to %-*s (%s)"
+msgstr "    %-*s pousse vers %-*s (%s)"
+
+#: builtin/remote.c:1078
+#, c-format
+msgid "    %-*s forces to %s"
+msgstr "    %-*s force vers %s"
+
+#: builtin/remote.c:1081
+#, c-format
+msgid "    %-*s pushes to %s"
+msgstr "    %-*s pousse vers %s"
+
+#: builtin/remote.c:1091
+msgid "do not query remotes"
+msgstr "ne pas interroger les distantes"
+
+#: builtin/remote.c:1118
+#, c-format
+msgid "* remote %s"
+msgstr "* distante %s"
+
+#: builtin/remote.c:1119
+#, c-format
+msgid "  Fetch URL: %s"
+msgstr "  URL de rapatriement : %s"
+
+#: builtin/remote.c:1120 builtin/remote.c:1285
+msgid "(no URL)"
+msgstr "(pas d'URL)"
+
+#: builtin/remote.c:1129 builtin/remote.c:1131
+#, c-format
+msgid "  Push  URL: %s"
+msgstr "  URL push : %s"
+
+#: builtin/remote.c:1133 builtin/remote.c:1135 builtin/remote.c:1137
+#, c-format
+msgid "  HEAD branch: %s"
+msgstr "  Branche HEAD : %s"
+
+#: builtin/remote.c:1139
+#, c-format
+msgid ""
+"  HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
+msgstr "  Branche HEAD (la HEAD distante est ambiguë, peut être l'une des suivantes) :\n"
+
+#: builtin/remote.c:1151
+#, c-format
+msgid "  Remote branch:%s"
+msgid_plural "  Remote branches:%s"
+msgstr[0] "  Branche distante :%s"
+msgstr[1] "  Branches distantes :%s"
+
+#: builtin/remote.c:1154 builtin/remote.c:1181
+msgid " (status not queried)"
+msgstr " (statut non demandé)"
+
+#: builtin/remote.c:1163
+msgid "  Local branch configured for 'git pull':"
+msgid_plural "  Local branches configured for 'git pull':"
+msgstr[0] "  Branche locale configurée pour 'git pull' :"
+msgstr[1] "  Branches locales configurées pour 'git pull' :"
+
+#: builtin/remote.c:1171
+msgid "  Local refs will be mirrored by 'git push'"
+msgstr "  Les références locales seront reflétées par 'git push'"
+
+#: builtin/remote.c:1178
+#, c-format
+msgid "  Local ref configured for 'git push'%s:"
+msgid_plural "  Local refs configured for 'git push'%s:"
+msgstr[0] "  Référence locale configurée pour 'git push'%s :"
+msgstr[1] "  Références locales configurées pour 'git push'%s :"
+
+#: builtin/remote.c:1199
+msgid "set refs/remotes/<name>/HEAD according to remote"
+msgstr "définir refs/remotes/<nom>/HEAD selon la distante"
+
+#: builtin/remote.c:1201
+msgid "delete refs/remotes/<name>/HEAD"
+msgstr "supprimer refs/remotes/<nom>/HEAD"
+
+#: builtin/remote.c:1216
+msgid "Cannot determine remote HEAD"
+msgstr "Impossible de déterminer la HEAD distante"
+
+#: builtin/remote.c:1218
+msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
+msgstr "Il y a de multiples branches HEAD distantes. Merci d'en choisir une explicitement avec :"
+
+#: builtin/remote.c:1228
+#, c-format
+msgid "Could not delete %s"
+msgstr "Impossible de supprimer %s"
+
+#: builtin/remote.c:1236
+#, c-format
+msgid "Not a valid ref: %s"
+msgstr "Référence non valide : %s"
+
+#: builtin/remote.c:1238
+#, c-format
+msgid "Could not setup %s"
+msgstr "Impossible de paramétrer %s"
+
+#: builtin/remote.c:1274
+#, c-format
+msgid " %s will become dangling!"
+msgstr " %s deviendra en suspens !"
+
+#: builtin/remote.c:1275
+#, c-format
+msgid " %s has become dangling!"
+msgstr " %s est devenu en suspens !"
+
+#: builtin/remote.c:1281
+#, c-format
+msgid "Pruning %s"
+msgstr "Élagage de %s"
+
+#: builtin/remote.c:1282
+#, c-format
+msgid "URL: %s"
+msgstr "URL : %s"
+
+#: builtin/remote.c:1295
+#, c-format
+msgid " * [would prune] %s"
+msgstr " * [serait élagué] %s"
+
+#: builtin/remote.c:1298
+#, c-format
+msgid " * [pruned] %s"
+msgstr " * [élagué] %s"
+
+#: builtin/remote.c:1321
+msgid "prune remotes after fetching"
+msgstr "élaguer les distants après le rapatriement"
+
+#: builtin/remote.c:1387 builtin/remote.c:1461
+#, c-format
+msgid "No such remote '%s'"
+msgstr "Pas de serveur remote '%s'"
+
+#: builtin/remote.c:1407
+msgid "add branch"
+msgstr "ajouter une branche"
+
+#: builtin/remote.c:1414
+msgid "no remote specified"
+msgstr "pas de serveur distant spécifié"
+
+#: builtin/remote.c:1436
+msgid "manipulate push URLs"
+msgstr "manipuler les URLs push"
+
+#: builtin/remote.c:1438
+msgid "add URL"
+msgstr "ajouter une URL"
+
+#: builtin/remote.c:1440
+msgid "delete URLs"
+msgstr "supprimer des URLs"
+
+#: builtin/remote.c:1447
+msgid "--add --delete doesn't make sense"
+msgstr "--add --delete n'a aucun sens"
+
+#: builtin/remote.c:1487
+#, c-format
+msgid "Invalid old URL pattern: %s"
+msgstr "Motif d'URL ancien invalide : %s"
+
+#: builtin/remote.c:1495
+#, c-format
+msgid "No such URL found: %s"
+msgstr "Pas d'URL trouvée : %s"
+
+#: builtin/remote.c:1497
+msgid "Will not delete all non-push URLs"
+msgstr ""
+
+#: builtin/remote.c:1569
+msgid "be verbose; must be placed before a subcommand"
+msgstr "être verbeux : doit être placé avant une sous-commande"
+
+#: builtin/replace.c:17
+msgid "git replace [-f] <object> <replacement>"
+msgstr "git replace [-f] <objet> <remplacement>"
+
+#: builtin/replace.c:18
+msgid "git replace -d <object>..."
+msgstr "git replace -d <objet>..."
+
+#: builtin/replace.c:19
+msgid "git replace -l [<pattern>]"
+msgstr "git replace -l [<motif>]"
+
+#: builtin/replace.c:121
+msgid "list replace refs"
+msgstr "afficher les références de remplacement"
+
+#: builtin/replace.c:122
+msgid "delete replace refs"
+msgstr "supprimer les références de remplacement"
+
+#: builtin/replace.c:123
+msgid "replace the ref if it exists"
+msgstr "remplacer la référence si elle existe"
+
+#: builtin/rerere.c:11
+msgid "git rerere [clear | forget path... | status | remaining | diff | gc]"
+msgstr "git rerere [clear | forget chemin... | status | remaining | diff | gc]"
+
+#: builtin/rerere.c:56
+msgid "register clean resolutions in index"
+msgstr "enregistrer des résolutions propres dans l'index"
+
+#: builtin/reset.c:25
+msgid ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+msgstr "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+
+#: builtin/reset.c:26
+msgid "git reset [-q] <tree-ish> [--] <paths>..."
+msgstr "git reset [-q] <arbre> [--] <chemins>..."
+
+#: builtin/reset.c:27
+msgid "git reset --patch [<tree-ish>] [--] [<paths>...]"
+msgstr "git reset --patch [<arbre>] [--] [<chemins>...]"
+
+#: builtin/reset.c:33
+msgid "mixed"
+msgstr "mixed"
+
+#: builtin/reset.c:33
+msgid "soft"
+msgstr "soft"
+
+#: builtin/reset.c:33
+msgid "hard"
+msgstr "hard"
+
+#: builtin/reset.c:33
+msgid "merge"
+msgstr "merge"
+
+#: builtin/reset.c:33
+msgid "keep"
+msgstr "keep"
+
+#: builtin/reset.c:73
+msgid "You do not have a valid HEAD."
+msgstr "Vous n'avez pas une HEAD valide."
+
+#: builtin/reset.c:75
+msgid "Failed to find tree of HEAD."
+msgstr "Impossible de trouver l'arbre pour HEAD."
+
+#: builtin/reset.c:81
+#, c-format
+msgid "Failed to find tree of %s."
+msgstr "Impossible de trouver l'arbre pour %s."
+
+#: builtin/reset.c:98
+#, c-format
+msgid "HEAD is now at %s"
+msgstr "HEAD est maintenant à %s"
+
+#: builtin/reset.c:169
+#, c-format
+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:248
+msgid "be quiet, only report errors"
+msgstr "être silencieux, afficher seulement les erreurs"
+
+#: builtin/reset.c:250
+msgid "reset HEAD and index"
+msgstr "réinitialiser HEAD et l'index"
+
+#: builtin/reset.c:251
+msgid "reset only HEAD"
+msgstr "réinitialiser seulement HEAD"
+
+#: builtin/reset.c:253 builtin/reset.c:255
+msgid "reset HEAD, index and working tree"
+msgstr "réinitialiser HEAD, l'index et la copie de travail"
+
+#: builtin/reset.c:257
+msgid "reset HEAD but keep local changes"
+msgstr "réinitialiser HEAD mais garder les changements locaux"
+
+#: builtin/reset.c:275
+#, c-format
+msgid "Failed to resolve '%s' as a valid revision."
+msgstr "Échec de résolution de '%s' comme une révision valide."
+
+#: builtin/reset.c:278 builtin/reset.c:286
+#, c-format
+msgid "Could not parse object '%s'."
+msgstr "Impossible d'analyser l'objet '%s'."
+
+#: builtin/reset.c:283
+#, c-format
+msgid "Failed to resolve '%s' as a valid tree."
+msgstr "Échec de résolution de '%s' comme un arbre valide."
+
+#: builtin/reset.c:292
+msgid "--patch is incompatible with --{hard,mixed,soft}"
+msgstr "--patch est incompatible avec --{hard,mixed,soft}"
+
+#: builtin/reset.c:301
+msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
+msgstr "--mixed avec des chemins est obsolète ; utilisez 'git reset -- <paths>' à la place."
+
+#: builtin/reset.c:303
+#, c-format
+msgid "Cannot do %s reset with paths."
+msgstr "Impossible de faire un \"%s reset\" avec des chemins."
+
+#: builtin/reset.c:313
+#, c-format
+msgid "%s reset is not allowed in a bare repository"
+msgstr "Le \"%s reset\" n'est pas permis dans un dépôt nu"
+
+#: builtin/reset.c:333
+#, c-format
+msgid "Could not reset index file to revision '%s'."
+msgstr "Impossible de réinitialiser le fichier d'index à la révision '%s'."
+
+#: builtin/reset.c:339
+msgid "Unstaged changes after reset:"
+msgstr "Modifications non indexées après reset :"
+
+#: builtin/reset.c:344
+msgid "Could not write new index file."
+msgstr "Impossible d'écrire le nouveau fichier d'index."
+
+#: builtin/rev-parse.c:339
+msgid "git rev-parse --parseopt [options] -- [<args>...]"
+msgstr "git rev-parse --parseopt [options] -- [<arguments>...]"
+
+#: builtin/rev-parse.c:344
+msgid "keep the `--` passed as an arg"
+msgstr "garder le `--` passé en argument"
+
+#: builtin/rev-parse.c:346
+msgid "stop parsing after the first non-option argument"
+msgstr "arrêt de l'analyse après le premier argument qui n'est pas une option"
+
+#: builtin/rev-parse.c:464
+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 ""
+"git rev-parse --parseopt [options] -- [<arguments>...]\n"
+"   ou : git rev-parse --sq-quote [<argument>...]\n"
+"   ou : git rev-parse [options] [<argument>...]\n"
+"\n"
+"Lancez \"git rev-parse --parseopt -h\" pour plus d'information sur l'utilisation principale."
+
+#: builtin/revert.c:22
+msgid "git revert [options] <commit-ish>..."
+msgstr "git revert [options] <commit>..."
+
+#: builtin/revert.c:23
+msgid "git revert <subcommand>"
+msgstr "git revert <sous-commande>"
+
+#: builtin/revert.c:28
+msgid "git cherry-pick [options] <commit-ish>..."
+msgstr "git cherry-pick [options] <commit>..."
+
+#: builtin/revert.c:29
+msgid "git cherry-pick <subcommand>"
+msgstr "git cherry-pick <sous-commande>"
+
+#: builtin/revert.c:70 builtin/revert.c:92
+#, c-format
+msgid "%s: %s cannot be used with %s"
+msgstr "%s : %s ne peut pas être utilisé avec %s"
+
+#: builtin/revert.c:103
+msgid "end revert or cherry-pick sequence"
+msgstr "mettre fin au retour ou picorage"
+
+#: builtin/revert.c:104
+msgid "resume revert or cherry-pick sequence"
+msgstr "reprendre le retour ou picorage"
+
+#: builtin/revert.c:105
+msgid "cancel revert or cherry-pick sequence"
+msgstr "annuler le retour ou picorage"
+
+#: builtin/revert.c:106
+msgid "don't automatically commit"
+msgstr "ne pas valider automatiquement"
+
+#: builtin/revert.c:107
+msgid "edit the commit message"
+msgstr "éditer le message de validation"
+
+#: builtin/revert.c:110
+msgid "parent number"
+msgstr "numéro de parent"
+
+#: builtin/revert.c:112
+msgid "merge strategy"
+msgstr "stratégie de fusion"
+
+#: builtin/revert.c:113
+msgid "option"
+msgstr "option"
+
+#: builtin/revert.c:114
+msgid "option for merge strategy"
+msgstr "option pour la stratégie de fusion"
+
+#: builtin/revert.c:125
+msgid "append commit name"
+msgstr "ajouter le nom de validation"
+
+#: builtin/revert.c:126
+msgid "allow fast-forward"
+msgstr "autoriser l'avance rapide"
+
+#: builtin/revert.c:127
+msgid "preserve initially empty commits"
+msgstr "préserver les validations vides initialement"
+
+#: builtin/revert.c:128
+msgid "allow commits with empty messages"
+msgstr "autoriser les validations avec des messages vides"
+
+#: builtin/revert.c:129
+msgid "keep redundant, empty commits"
+msgstr "garder les validations redondantes, vides"
+
+#: builtin/revert.c:133
+msgid "program error"
+msgstr "erreur du programme"
+
+#: builtin/revert.c:223
+msgid "revert failed"
+msgstr "revert a échoué"
+
+#: builtin/revert.c:238
+msgid "cherry-pick failed"
+msgstr "le picorage a échoué"
+
+#: builtin/rm.c:15
+msgid "git rm [options] [--] <file>..."
+msgstr "git rm [options] [--] <fichier>..."
+
+#: builtin/rm.c:64 builtin/rm.c:186
+#, c-format
+msgid ""
+"submodule '%s' (or one of its nested submodules) uses a .git directory\n"
+"(use 'rm -rf' if you really want to remove it including all of its history)"
+msgstr ""
+"le sous-module '%s' (ou un des sous-modules imbriqués) utilise un répertoire .git\n"
+"(utilisez 'rm -rf' si vous souhaitez vraiment le supprimer avec tout son historique)"
+
+#: builtin/rm.c:174
+#, c-format
+msgid ""
+"'%s' has staged content different from both the file and the HEAD\n"
+"(use -f to force removal)"
+msgstr ""
+"'%s' a du contenu indexé différent du fichier et de HEAD\n"
+"(utilisez -f pour forcer la suppression)"
+
+#: builtin/rm.c:180
+#, c-format
+msgid ""
+"'%s' has changes staged in the index\n"
+"(use --cached to keep the file, or -f to force removal)"
+msgstr ""
+"'%s' a des changements dans l'index\n"
+"(utilisez --cached pour garder le fichier, ou -f pour forcer la suppression)"
+
+#: builtin/rm.c:191
+#, c-format
+msgid ""
+"'%s' has local modifications\n"
+"(use --cached to keep the file, or -f to force removal)"
+msgstr ""
+"'%s' a des modifications locales\n"
+"(utilisez --cached pour garder le fichier, ou -f pour forcer la suppression)"
+
+#: builtin/rm.c:207
+msgid "do not list removed files"
+msgstr "ne pas afficher les fichiers supprimés"
+
+#: builtin/rm.c:208
+msgid "only remove from the index"
+msgstr "supprimer seulement de l'index"
+
+#: builtin/rm.c:209
+msgid "override the up-to-date check"
+msgstr "outrepasser la vérification des fichiers à jour"
+
+#: builtin/rm.c:210
+msgid "allow recursive removal"
+msgstr "autoriser la suppression récursive"
+
+#: builtin/rm.c:212
+msgid "exit with a zero status even if nothing matched"
+msgstr "sortir avec un statut zéro même si rien ne correspondait"
+
+#: builtin/rm.c:283
+#, c-format
+msgid "not removing '%s' recursively without -r"
+msgstr "pas de suppression récursive de '%s' sans -r"
+
+#: builtin/rm.c:322
+#, c-format
+msgid "git rm: unable to remove %s"
+msgstr "git rm : impossible de supprimer %s"
+
+#: builtin/shortlog.c:13
+msgid "git shortlog [<options>] [<revision range>] [[--] [<path>...]]"
+msgstr "git shortlog [<options>] [<intervalle révisions>] [[--] [<chemin>...]]"
+
+#: builtin/shortlog.c:131
+#, c-format
+msgid "Missing author: %s"
+msgstr "Auteur manquant : %s"
+
+#: builtin/shortlog.c:227
+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:229
+msgid "Suppress commit descriptions, only provides commit count"
+msgstr "Supprimer les descriptions de validation, fournit seulement le nombre de validations"
+
+#: builtin/shortlog.c:231
+msgid "Show the email address of each author"
+msgstr "Afficher l'adresse e-mail de chaque auteur"
+
+#: builtin/shortlog.c:232
+msgid "w[,i1[,i2]]"
+msgstr "w[,i1[,i2]]"
+
+#: builtin/shortlog.c:233
+msgid "Linewrap output"
+msgstr "Couper les lignes"
+
+#: builtin/show-branch.c:9
+msgid ""
+"git show-branch [-a|--all] [-r|--remotes] [--topo-order | --date-order] [--"
+"current] [--color[=<when>] | --no-color] [--sparse] [--more=<n> | --list | --"
+"independent | --merge-base] [--no-name | --sha1-name] [--topics] [(<rev> | "
+"<glob>)...]"
+msgstr "git show-branch [-a|--all] [-r|--remotes] [--topo-order | --date-order] [--current] [--color[=<quand>] | --no-color] [--sparse] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [--topics] [(<révision> | <glob>)...]"
+
+#: builtin/show-branch.c:10
+msgid "git show-branch (-g|--reflog)[=<n>[,<base>]] [--list] [<ref>]"
+msgstr "git show-branch (-g|--reflog)[=<n>[,<base>]] [--list] [<référence>]"
+
+#: builtin/show-branch.c:650
+msgid "show remote-tracking and local branches"
+msgstr "afficher les branches de suivi distantes et les branches locales"
+
+#: builtin/show-branch.c:652
+msgid "show remote-tracking branches"
+msgstr "afficher les branches de suivi distantes"
+
+#: builtin/show-branch.c:654
+msgid "color '*!+-' corresponding to the branch"
+msgstr "couleur '*!+-' correspondant à la branche"
+
+#: builtin/show-branch.c:656
+msgid "show <n> more commits after the common ancestor"
+msgstr "afficher <n> validations de plus après l'ancêtre commun"
+
+#: builtin/show-branch.c:658
+msgid "synonym to more=-1"
+msgstr "synonyme de more=-1"
+
+#: builtin/show-branch.c:659
+msgid "suppress naming strings"
+msgstr ""
+
+#: builtin/show-branch.c:661
+msgid "include the current branch"
+msgstr "inclure la branche courante"
+
+#: builtin/show-branch.c:663
+msgid "name commits with their object names"
+msgstr "nommer les validations avec leurs noms d'objet"
+
+#: builtin/show-branch.c:665
+msgid "show possible merge bases"
+msgstr "afficher les bases possibles de fusion"
+
+#: builtin/show-branch.c:667
+msgid "show refs unreachable from any other ref"
+msgstr "afficher les références non accessibles depuis toute autre référence"
+
+#: builtin/show-branch.c:669
+msgid "show commits in topological order"
+msgstr "afficher les validations dans l'ordre topologique"
+
+#: builtin/show-branch.c:671
+msgid "show only commits not on the first branch"
+msgstr "afficher seulement les validations qui ne sont pas sur la première branche"
+
+#: builtin/show-branch.c:673
+msgid "show merges reachable from only one tip"
+msgstr "afficher les fusions accessibles depuis une seule pointe"
+
+#: builtin/show-branch.c:675
+msgid "show commits where no parent comes before its children"
+msgstr "afficher les validations où aucun parent ne vient avant ses enfants"
+
+#: builtin/show-branch.c:677
+msgid "<n>[,<base>]"
+msgstr "<n>[,<base>]"
+
+#: builtin/show-branch.c:678
+msgid "show <n> most recent ref-log entries starting at base"
+msgstr "afficher les <n> plus récentes entrées de ref-log en commençant à la base"
+
+#: builtin/show-ref.c:10
+msgid ""
+"git show-ref [-q|--quiet] [--verify] [--head] [-d|--dereference] [-s|--"
+"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [pattern*] "
+msgstr "git show-ref [-q|--quiet] [--verify] [--head] [-d|--dereference] [-s|--hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [motif*] "
+
+#: builtin/show-ref.c:11
+msgid "git show-ref --exclude-existing[=pattern] < ref-list"
+msgstr "git show-ref --exclude-existing[=motif] < liste-références"
+
+#: builtin/show-ref.c:165
+msgid "only show tags (can be combined with heads)"
+msgstr "afficher seulement les étiquettes (peut être combiné avec des têtes)"
+
+#: builtin/show-ref.c:166
+msgid "only show heads (can be combined with tags)"
+msgstr "afficher seulement les têtes (peut être combiné avec des étiquettes)"
+
+#: builtin/show-ref.c:167
+msgid "stricter reference checking, requires exact ref path"
+msgstr "vérification de référence plus stricte, requiert un chemin de référence exact"
+
+#: builtin/show-ref.c:170 builtin/show-ref.c:172
+msgid "show the HEAD reference"
+msgstr "afficher la référence HEAD"
+
+#: builtin/show-ref.c:174
+msgid "dereference tags into object IDs"
+msgstr "déréférencer les étiquettes en IDs d'objet"
+
+#: builtin/show-ref.c:176
+msgid "only show SHA1 hash using <n> digits"
+msgstr "afficher seulement le hachage SHA1 en utilisant <n> chiffres"
+
+#: builtin/show-ref.c:180
+msgid "do not print results to stdout (useful with --verify)"
+msgstr "ne pas afficher les résultats sur la sortie standard (pratique avec --verify)"
+
+#: builtin/show-ref.c:182
+msgid "show refs from stdin that aren't in local repository"
+msgstr "afficher les références de l'entrée standard qui ne sont pas dans le dépôt local"
+
+#: builtin/symbolic-ref.c:7
+msgid "git symbolic-ref [options] name [ref]"
+msgstr "git symbolic-ref [options] nom [référence]"
+
+#: builtin/symbolic-ref.c:8
+msgid "git symbolic-ref -d [-q] name"
+msgstr "git symbolic-ref -d [-q] nom"
+
+#: builtin/symbolic-ref.c:40
+msgid "suppress error message for non-symbolic (detached) refs"
+msgstr "supprimer le message d'erreur pour une référence non symbolique (détachée)"
+
+#: builtin/symbolic-ref.c:41
+msgid "delete symbolic ref"
+msgstr "supprimer la référence symbolique"
+
+#: builtin/symbolic-ref.c:42
+msgid "shorten ref output"
+msgstr "raccourcir l'affichage de la référence"
+
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:18
+msgid "reason"
+msgstr "raison"
+
+#: builtin/symbolic-ref.c:43 builtin/update-ref.c:18
+msgid "reason of the update"
+msgstr "raison de la mise à jour"
+
+#: builtin/tag.c:22
+msgid ""
+"git tag [-a|-s|-u <key-id>] [-f] [-m <msg>|-F <file>] <tagname> [<head>]"
+msgstr "git tag [-a|-s|-u <id-clé>] [-f] [-m <msg>|-F <file>] <nométiquette> [<head>]"
+
+#: builtin/tag.c:23
+msgid "git tag -d <tagname>..."
+msgstr "git tag -d <nométiquette>..."
+
+#: builtin/tag.c:24
+msgid ""
+"git tag -l [-n[<num>]] [--contains <commit>] [--points-at <object>] \n"
+"\t\t[<pattern>...]"
+msgstr ""
+"git tag -l [-n[<num>]] [--contains <commit>] [--points-at <objet>] \n"
+"\t\t[<motif>...]"
+
+#: builtin/tag.c:26
+msgid "git tag -v <tagname>..."
+msgstr "git tag -v <nométiquette>..."
+
+#: builtin/tag.c:60
+#, c-format
+msgid "malformed object at '%s'"
+msgstr "objet malformé à '%s'"
+
+#: builtin/tag.c:207
+#, c-format
+msgid "tag name too long: %.*s..."
+msgstr "nom d'étiquette trop long : %.*s..."
+
+#: builtin/tag.c:212
+#, c-format
+msgid "tag '%s' not found."
+msgstr "étiquette '%s' non trouvée."
+
+#: builtin/tag.c:227
+#, c-format
+msgid "Deleted tag '%s' (was %s)\n"
+msgstr "Étiquette '%s' supprimée (elle était %s)\n"
+
+#: builtin/tag.c:239
+#, c-format
+msgid "could not verify the tag '%s'"
+msgstr "impossible de vérifier l'étiquette '%s'"
+
+#: builtin/tag.c:249
+#, c-format
+msgid ""
+"\n"
+"Write a tag message\n"
+"Lines starting with '%c' will be ignored.\n"
+msgstr ""
+"\n"
+"Écrire un message pour l'étiquette\n"
+"Les lignes commençant par '%c' seront ignorées.\n"
+
+#: builtin/tag.c:253
+#, c-format
+msgid ""
+"\n"
+"Write a tag message\n"
+"Lines starting with '%c' will be kept; you may remove them yourself if you "
+"want to.\n"
+msgstr ""
+"\n"
+"Écrire un message pour l'étiquette\n"
+"Les lignes commençant par '%c' seront gardées ; vous pouvez les retirer vous-même si vous le souhaitez.\n"
+
+#: builtin/tag.c:292
+msgid "unable to sign the tag"
+msgstr "impossible de signer l'étiquette"
+
+#: builtin/tag.c:294
+msgid "unable to write tag file"
+msgstr "impossible d'écrire le fichier d'étiquettes"
+
+#: builtin/tag.c:319
+msgid "bad object type."
+msgstr "mauvais type d'objet."
+
+#: builtin/tag.c:332
+msgid "tag header too big."
+msgstr "en-tête d'étiquette trop gros."
+
+#: builtin/tag.c:368
+msgid "no tag message?"
+msgstr "pas de message pour l'étiquette ?"
+
+#: builtin/tag.c:374
+#, 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:423
+msgid "switch 'points-at' requires an object"
+msgstr "le commutateur 'points-at' requiert un objet"
+
+#: builtin/tag.c:425
+#, c-format
+msgid "malformed object name '%s'"
+msgstr "nom d'objet malformé '%s'"
+
+#: builtin/tag.c:445
+msgid "list tag names"
+msgstr "afficher les noms des étiquettes"
+
+#: builtin/tag.c:447
+msgid "print <n> lines of each tag message"
+msgstr "affiche <n> lignes de chaque message d'étiquette"
+
+#: builtin/tag.c:449
+msgid "delete tags"
+msgstr "supprimer des étiquettes"
+
+#: builtin/tag.c:450
+msgid "verify tags"
+msgstr "vérifier des étiquettes"
+
+#: builtin/tag.c:452
+msgid "Tag creation options"
+msgstr "Options de création de l'étiquette"
+
+#: builtin/tag.c:454
+msgid "annotated tag, needs a message"
+msgstr "étiquette annotée, nécessite un message"
+
+#: builtin/tag.c:456
+msgid "tag message"
+msgstr "message pour l'étiquette"
+
+#: builtin/tag.c:458
+msgid "annotated and GPG-signed tag"
+msgstr "étiquette annotée et signée avec GPG"
+
+#: builtin/tag.c:462
+msgid "use another key to sign the tag"
+msgstr "utiliser une autre clé pour signer l'étiquette"
+
+#: builtin/tag.c:463
+msgid "replace the tag if exists"
+msgstr "remplacer l'étiquette si elle existe"
+
+#: builtin/tag.c:464
+msgid "show tag list in columns"
+msgstr "afficher la liste des étiquettes sous forme de colonnes"
+
+#: builtin/tag.c:466
+msgid "Tag listing options"
+msgstr "Options d'affichage des étiquettes"
+
+#: builtin/tag.c:469
+msgid "print only tags that contain the commit"
+msgstr "afficher seulement les étiquettes qui contiennent la validation"
+
+#: builtin/tag.c:475
+msgid "print only tags of the object"
+msgstr "afficher seulement les étiquettes de l'objet"
+
+#: builtin/tag.c:504
+msgid "--column and -n are incompatible"
+msgstr "--column et -n sont incompatibles"
+
+#: builtin/tag.c:521
+msgid "-n option is only allowed with -l."
+msgstr "l'option -n est autorisée seulement avec -l."
+
+#: builtin/tag.c:523
+msgid "--contains option is only allowed with -l."
+msgstr "l'option --contains est autorisée seulement avec -l."
+
+#: builtin/tag.c:525
+msgid "--points-at option is only allowed with -l."
+msgstr "l'option --points-at est autorisée seulement avec -l."
+
+#: builtin/tag.c:533
+msgid "only one -F or -m option is allowed."
+msgstr "une seule option -F ou -m est autorisée."
+
+#: builtin/tag.c:553
+msgid "too many params"
+msgstr "trop de paramètres"
+
+#: builtin/tag.c:559
+#, c-format
+msgid "'%s' is not a valid tag name."
+msgstr "'%s' n'est pas un nom d'étiquette valide."
+
+#: builtin/tag.c:564
+#, c-format
+msgid "tag '%s' already exists"
+msgstr "l'étiquette '%s' existe déjà"
+
+#: builtin/tag.c:582
+#, c-format
+msgid "%s: cannot lock the ref"
+msgstr "%s : impossible de verrouiller la référence"
+
+#: builtin/tag.c:584
+#, c-format
+msgid "%s: cannot update the ref"
+msgstr "%s : impossible de mettre à jour la référence"
+
+#: builtin/tag.c:586
+#, c-format
+msgid "Updated tag '%s' (was %s)\n"
+msgstr "Étiquette '%s' mise à jour (elle était %s)\n"
+
+#: builtin/update-index.c:401
+msgid "git update-index [options] [--] [<file>...]"
+msgstr "git update-index [options] [--] [<fichier>...]"
+
+#: builtin/update-index.c:718
+msgid "continue refresh even when index needs update"
+msgstr "continuer de rafraîchir même si l'index a besoin d'une mise à jour"
+
+#: builtin/update-index.c:721
+msgid "refresh: ignore submodules"
+msgstr "rafraîchir : ignorer les sous-modules"
+
+#: builtin/update-index.c:724
+msgid "do not ignore new files"
+msgstr "ne pas ignorer les nouveaux fichiers"
+
+#: builtin/update-index.c:726
+msgid "let files replace directories and vice-versa"
+msgstr "laisser les fichiers remplacer des répertoires et vice-versa"
+
+#: builtin/update-index.c:728
+msgid "notice files missing from worktree"
+msgstr "aviser des fichiers manquants dans la copie de travail"
+
+#: builtin/update-index.c:730
+msgid "refresh even if index contains unmerged entries"
+msgstr "rafraîchir même si l'index contient des entrées non fusionnées"
+
+#: builtin/update-index.c:733
+msgid "refresh stat information"
+msgstr "rafraîchir l'information de stat"
+
+#: builtin/update-index.c:737
+msgid "like --refresh, but ignore assume-unchanged setting"
+msgstr "comme --refresh, mais en ignorant l'option assume-unchanged"
+
+#: builtin/update-index.c:741
+msgid "<mode> <object> <path>"
+msgstr "<mode> <objet> <chemin>"
+
+#: builtin/update-index.c:742
+msgid "add the specified entry to the index"
+msgstr "ajouter l'entrée spécifiée dans l'index"
+
+#: builtin/update-index.c:746
+msgid "(+/-)x"
+msgstr "(+/-)x"
+
+#: builtin/update-index.c:747
+msgid "override the executable bit of the listed files"
+msgstr "outrepasser le bit exécutable pour les fichiers listés"
+
+#: builtin/update-index.c:751
+msgid "mark files as \"not changing\""
+msgstr "marquer les fichiers comme \"non changeants\""
+
+#: builtin/update-index.c:754
+msgid "clear assumed-unchanged bit"
+msgstr ""
+
+#: builtin/update-index.c:757
+msgid "mark files as \"index-only\""
+msgstr "marquer les fichiers comme \"index seulement\""
+
+#: builtin/update-index.c:760
+msgid "clear skip-worktree bit"
+msgstr ""
+
+#: builtin/update-index.c:763
+msgid "add to index only; do not add content to object database"
+msgstr "ajouter seulement à l'index ; ne pas ajouter le contenu dans la base de données des objets"
+
+#: builtin/update-index.c:765
+msgid "remove named paths even if present in worktree"
+msgstr "supprimer les chemins nommés même s'ils sont présents dans la copie de travail"
+
+#: builtin/update-index.c:767
+msgid "with --stdin: input lines are terminated by null bytes"
+msgstr "avec --stdin : les lignes en entrée sont terminées par des octets nuls"
+
+#: builtin/update-index.c:769
+msgid "read list of paths to be updated from standard input"
+msgstr "lire la liste des chemins à mettre à jour depuis l'entrée standard"
+
+#: builtin/update-index.c:773
+msgid "add entries from standard input to the index"
+msgstr "ajouter les entrées depuis l'entrée standard à l'index"
+
+#: builtin/update-index.c:777
+msgid "repopulate stages #2 and #3 for the listed paths"
+msgstr "repeupler les étapes n°2 et n°3 pour les chemins listés"
+
+#: builtin/update-index.c:781
+msgid "only update entries that differ from HEAD"
+msgstr "mettre à jour seulement les entrées qui diffèrent de HEAD"
+
+#: builtin/update-index.c:785
+msgid "ignore files missing from worktree"
+msgstr "ignorer les fichiers manquants dans la copie de travail"
+
+#: builtin/update-index.c:788
+msgid "report actions to standard output"
+msgstr "afficher les actions sur la sortie standard"
+
+#: builtin/update-index.c:790
+msgid "(for porcelains) forget saved unresolved conflicts"
+msgstr "(pour porcelaines) oublier les conflits sauvés et non résolus"
+
+#: builtin/update-index.c:794
+msgid "write index in this format"
+msgstr "écrire l'index dans ce format"
+
+#: builtin/update-ref.c:7
+msgid "git update-ref [options] -d <refname> [<oldval>]"
+msgstr "git update-ref [options] -d <nomréférence> [<anciennevaleur>]"
+
+#: builtin/update-ref.c:8
+msgid "git update-ref [options]    <refname> <newval> [<oldval>]"
+msgstr "git update-ref [options]    <nomréférence> <nouvellevaleur> [<anciennevaleur>]"
+
+#: builtin/update-ref.c:19
+msgid "delete the reference"
+msgstr "supprimer la référence"
+
+#: builtin/update-ref.c:21
+msgid "update <refname> not the one it points to"
+msgstr ""
+
+#: builtin/update-server-info.c:6
+msgid "git update-server-info [--force]"
+msgstr "git update-server-info [--force]"
+
+#: builtin/update-server-info.c:14
+msgid "update the info files from scratch"
+msgstr "mettre à jour les fichiers d'information à partir de zéro"
+
+#: builtin/verify-pack.c:56
+msgid "git verify-pack [-v|--verbose] [-s|--stat-only] <pack>..."
+msgstr "git verify-pack [-v|--verbose] [-s|--stat-only] <pack>..."
+
+#: builtin/verify-pack.c:66
+msgid "verbose"
+msgstr "verbeux"
+
+#: builtin/verify-pack.c:68
+msgid "show statistics only"
+msgstr "afficher seulement les statistiques"
+
+#: builtin/verify-tag.c:17
+msgid "git verify-tag [-v|--verbose] <tag>..."
+msgstr "git verify-tag [-v|--verbose] <étiquette>..."
+
+#: builtin/verify-tag.c:73
+msgid "print tag contents"
+msgstr "afficher le contenu de l'étiquette"
+
+#: builtin/write-tree.c:13
+msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
+msgstr "git write-tree [--missing-ok] [--prefix=<préfixe>/]"
+
+#: builtin/write-tree.c:26
+msgid "<prefix>/"
+msgstr "<préfixe>/"
+
+#: builtin/write-tree.c:27
+msgid "write tree object for a subdirectory <prefix>"
+msgstr "écrire l'objet arbre pour un sous-répertoire <préfixe>"
+
+#: builtin/write-tree.c:30
+msgid "only useful for debugging"
+msgstr "seulement utile pour le débogage"
+
+#: git.c:16
+msgid ""
+"'git help -a' and 'git help -g' lists 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 -a' et 'git help -g' listent les sous-commandes disponibles et\n"
+"quelques concepts. Voir 'git help <command>' ou 'git help <concept>'\n"
+"pour en lire plus à propos d'une commande spécifique ou d'un concept."
+
+#: parse-options.h:156
+msgid "no-op (backward compatibility)"
+msgstr "sans action (rétrocompatibilité)"
+
+#: parse-options.h:232
+msgid "be more verbose"
+msgstr "être plus verbeux"
+
+#: parse-options.h:234
+msgid "be more quiet"
+msgstr "être plus silencieux"
+
+#: parse-options.h:240
+msgid "use <n> digits to display SHA-1s"
+msgstr "utiliser <n> chiffres pour afficher les SHA-1s"
+
+#: common-cmds.h:8
+msgid "Add file contents to the index"
+msgstr "Ajouter le contenu du fichier dans l'index"
+
+#: common-cmds.h:9
+msgid "Find by binary search the change that introduced a bug"
+msgstr "Rechercher de manière binaire le changement qui a introduit un bogue"
+
+#: common-cmds.h:10
+msgid "List, create, or delete branches"
+msgstr "Lister, créer ou supprimer des branches"
+
+#: common-cmds.h:11
+msgid "Checkout a branch or paths to the working tree"
+msgstr "Extraire une branche ou des chemins dans la copie de travail"
+
+#: common-cmds.h:12
+msgid "Clone a repository into a new directory"
+msgstr "Cloner un dépôt dans un nouveau répertoire"
+
+#: common-cmds.h:13
+msgid "Record changes to the repository"
+msgstr "Enregistrer les changements dans le dépôt"
+
+#: common-cmds.h:14
+msgid "Show changes between commits, commit and working tree, etc"
+msgstr "Afficher les changements entre les validations, entre validation et copie de travail, etc"
+
+#: common-cmds.h:15
+msgid "Download objects and refs from another repository"
+msgstr "Télécharger les objets et références depuis un autre dépôt"
+
+#: common-cmds.h:16
+msgid "Print lines matching a pattern"
+msgstr "Afficher les lignes correspondant à un motif"
+
+#: common-cmds.h:17
+msgid "Create an empty Git repository or reinitialize an existing one"
+msgstr "Créer un dépôt Git vide ou réinitialiser un existant"
+
+#: common-cmds.h:18
+msgid "Show commit logs"
+msgstr "Afficher l'historique des validations"
+
+#: common-cmds.h:19
+msgid "Join two or more development histories together"
+msgstr "Joindre deux ou plusieurs historiques de développement ensemble"
+
+#: common-cmds.h:20
+msgid "Move or rename a file, a directory, or a symlink"
+msgstr "Déplacer ou renommer un fichier, un répertoire, ou un lien symbolique"
+
+#: common-cmds.h:21
+msgid "Fetch from and merge with another repository or a local branch"
+msgstr "Rapatrier et fusionner avec un autre dépôt ou une branche locale"
+
+#: common-cmds.h:22
+msgid "Update remote refs along with associated objects"
+msgstr "Mettre à jour les références distantes ainsi que les objets associés"
+
+#: common-cmds.h:23
+msgid "Forward-port local commits to the updated upstream head"
+msgstr "Reporter en avant les validations locales dans la tête en amont mise à jour"
+
+#: common-cmds.h:24
+msgid "Reset current HEAD to the specified state"
+msgstr "Réinitialiser la HEAD courante à l'état spécifié"
+
+#: common-cmds.h:25
+msgid "Remove files from the working tree and from the index"
+msgstr "Supprimer les fichiers de la copie de travail et de l'index"
+
+#: common-cmds.h:26
+msgid "Show various types of objects"
+msgstr "Afficher différents types d'objects"
+
+#: common-cmds.h:27
+msgid "Show the working tree status"
+msgstr "Afficher le statut de la copie de travail"
+
+#: common-cmds.h:28
+msgid "Create, list, delete or verify a tag object signed with GPG"
+msgstr "Créer, lister, supprimer ou vérifier un objet d'étiquette signé avec GPG"
+
+#: git-am.sh:50
+msgid "You need to set your committer info first"
+msgstr "Vous devez d'abord définir vos informations de validateur"
+
+#: git-am.sh:95
+msgid ""
+"You seem to have moved HEAD since the last 'am' failure.\n"
+"Not rewinding to ORIG_HEAD"
+msgstr ""
+"Vous semblez avoir déplacé la HEAD depuis le dernier échec de 'am'.\n"
+"Pas de retour à ORIG_HEAD"
+
+#: git-am.sh:105
+#, sh-format
+msgid ""
+"When you have resolved this problem, run \"$cmdline --resolved\".\n"
+"If you prefer to skip this patch, run \"$cmdline --skip\" instead.\n"
+"To restore the original branch and stop patching, run \"$cmdline --abort\"."
+msgstr ""
+"Lorsque vous aurez résolu ce problème, lancez \"$cmdline --resolved\".\n"
+"Si vous préférez sauter ce patch, lancez \"$cmdline --skip\" à la place.\n"
+"Pour restaurer la branche d'origine et stopper le patchage, lancez \"$cmdline --abort\"."
+
+#: git-am.sh:121
+msgid "Cannot fall back to three-way merge."
+msgstr "Impossible de retourner à une fusion 3-way."
+
+#: git-am.sh:137
+msgid "Repository lacks necessary blobs to fall back on 3-way merge."
+msgstr "Le dépôt n'a pas les blobs nécessaires pour un retour à une fusion 3-way."
+
+#: git-am.sh:139
+msgid "Using index info to reconstruct a base tree..."
+msgstr "Utilisation de l'information de l'index pour reconstruire un arbre de base..."
+
+#: git-am.sh:154
+msgid ""
+"Did you hand edit your patch?\n"
+"It does not apply to blobs recorded in its index."
+msgstr ""
+"Avez-vous édité le patch à la main ?\n"
+"Il ne s'applique pas aux blobs enregistrés dans son index."
+
+#: git-am.sh:163
+msgid "Falling back to patching base and 3-way merge..."
+msgstr "Retour à un patch de la base et fusion 3-way..."
+
+#: git-am.sh:179
+msgid "Failed to merge in the changes."
+msgstr "Échec de fusion dans les changements."
+
+#: git-am.sh:274
+msgid "Only one StGIT patch series can be applied at once"
+msgstr "Seulement une série de patches StGIT peut être appliquée à la fois"
+
+#: git-am.sh:361
+#, sh-format
+msgid "Patch format $patch_format is not supported."
+msgstr "Le format de patch $patch_format n'est pas supporté."
+
+#: git-am.sh:363
+msgid "Patch format detection failed."
+msgstr "Échec de détection du format du patch."
+
+#: git-am.sh:389
+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 ""
+"L'option -b/--binary ne fait plus rien depuis longtemps,\n"
+"et elle sera supprimée. Merci de ne plus l'utiliser."
+
+#: git-am.sh:477
+#, sh-format
+msgid "previous rebase directory $dotest still exists but mbox given."
+msgstr "le répertoire précédent de rebasage $dotest existe toujours mais mbox donnée."
+
+#: git-am.sh:482
+msgid "Please make up your mind. --skip or --abort?"
+msgstr "Décidez-vous. --skip ou --abort ?"
+
+#: git-am.sh:509
+msgid "Resolve operation not in progress, we are not resuming."
+msgstr "Pas de résolution de l'opération en cours, nous ne sommes pas dans une reprise."
+
+#: git-am.sh:575
+#, sh-format
+msgid "Dirty index: cannot apply patches (dirty: $files)"
+msgstr "Index sale : impossible d'appliquer des patches (sales : $files)"
+
+#: git-am.sh:679
+#, sh-format
+msgid ""
+"Patch is empty.  Was it split wrong?\n"
+"If you would prefer to skip this patch, instead run \"$cmdline --skip\".\n"
+"To restore the original branch and stop patching run \"$cmdline --abort\"."
+msgstr ""
+"Le patch est vide.  Était-il mal découpé ?\n"
+"Si vous préférez sauter ce patch, lancez plutôt \"$cmdline --skip\".\n"
+"Pour restaurer la branche d'origine et stopper le patchage, lancez \"$cmdline --abort\"."
+
+#: git-am.sh:706
+msgid "Patch does not have a valid e-mail address."
+msgstr "Le patch n'a pas d'adresse e-mail valide."
+
+#: git-am.sh:753
+msgid "cannot be interactive without stdin connected to a terminal."
+msgstr "impossible d'être interactif sans entrée standard connectée à un terminal."
+
+#: git-am.sh:757
+msgid "Commit Body is:"
+msgstr "Le corps de la validation est :"
+
+#. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
+#. in your translation. The program will only accept English
+#. input at this point.
+#: git-am.sh:764
+msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
+msgstr "Appliquer ? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
+
+#: git-am.sh:800
+#, sh-format
+msgid "Applying: $FIRSTLINE"
+msgstr "Application : $FIRSTLINE"
+
+#: git-am.sh:821
+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-am.sh:829
+msgid ""
+"You still have unmerged paths in your index\n"
+"did you forget to use 'git add'?"
+msgstr ""
+"Vous avez toujours des chemins non fusionnés dans votre index\n"
+"auriez-vous oublié de faire 'git add' ?"
+
+#: git-am.sh:845
+msgid "No changes -- Patch already applied."
+msgstr "Pas de changement -- Patch déjà appliqué."
+
+#: git-am.sh:855
+#, sh-format
+msgid "Patch failed at $msgnum $FIRSTLINE"
+msgstr "Le patch a échoué à $msgnum $FIRSTLINE"
+
+#: git-am.sh:858
+#, sh-format
+msgid ""
+"The copy of the patch that failed is found in:\n"
+"   $dotest/patch"
+msgstr ""
+"La copie du patch qui a échoué se trouve dans :\n"
+"   $dotest/patch"
+
+#: git-am.sh:876
+msgid "applying to an empty history"
+msgstr "application à un historique vide"
+
+#: git-bisect.sh:48
+msgid "You need to start by \"git bisect start\""
+msgstr "Vous devez démarrer avec \"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:54
+msgid "Do you want me to do it for you [Y/n]? "
+msgstr "Souhaitez-vous que je le fasse pour vous [Y/n] ? "
+
+#: git-bisect.sh:95
+#, sh-format
+msgid "unrecognised option: '$arg'"
+msgstr "option inconnue : '$arg'"
+
+#: git-bisect.sh:99
+#, sh-format
+msgid "'$arg' does not appear to be a valid revision"
+msgstr "'$arg' ne semble être une révision valide"
+
+#: git-bisect.sh:117
+msgid "Bad HEAD - I need a HEAD"
+msgstr "Mauvaise HEAD - j'ai besoin d'une HEAD"
+
+#: git-bisect.sh:130
+#, sh-format
+msgid ""
+"Checking out '$start_head' failed. Try 'git bisect reset <validbranch>'."
+msgstr "L'extraction de '$start_head' a échoué. Essayez 'git bisect reset <branchevalide>'."
+
+#: git-bisect.sh:140
+msgid "won't bisect on seeked tree"
+msgstr ""
+
+#: git-bisect.sh:144
+msgid "Bad HEAD - strange symbolic ref"
+msgstr "Mauvaise HEAD - référence symbolique douteuse"
+
+#: git-bisect.sh:189
+#, sh-format
+msgid "Bad bisect_write argument: $state"
+msgstr "Mauvais argument pour bisect_write : $state"
+
+#: git-bisect.sh:218
+#, sh-format
+msgid "Bad rev input: $arg"
+msgstr "Mauvaise révision en entrée : $arg"
+
+#: git-bisect.sh:232
+msgid "Please call 'bisect_state' with at least one argument."
+msgstr "Merci d'appeler 'bisect_state' avec au moins un argument."
+
+#: git-bisect.sh:244
+#, sh-format
+msgid "Bad rev input: $rev"
+msgstr "Mauvaise révision en entrée : $rev"
+
+#: git-bisect.sh:250
+msgid "'git bisect bad' can take only one argument."
+msgstr "'git bisect bad' n'accepte qu'un seul argument."
+
+#. have bad but not good.  we could bisect although
+#. this is less optimum.
+#: git-bisect.sh:273
+msgid "Warning: bisecting only with a bad commit."
+msgstr "Attention : bissection avec seulement une mauvaise validation."
+
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: git-bisect.sh:279
+msgid "Are you sure [Y/n]? "
+msgstr "Êtes-vous sûr [Y/n] ? "
+
+#: git-bisect.sh:289
+msgid ""
+"You need to give me at least one good and one bad revisions.\n"
+"(You can use \"git bisect bad\" and \"git bisect good\" for that.)"
+msgstr ""
+"Vous devez me donner au moins une bonne et une mauvaise révision.\n"
+"(Vous pouvez utiliser \"git bisect bad\" et \"git bisect good\" pour cela.)"
+
+#: git-bisect.sh:292
+msgid ""
+"You need to start by \"git bisect start\".\n"
+"You then need to give me at least one good and one bad revisions.\n"
+"(You can use \"git bisect bad\" and \"git bisect good\" for that.)"
+msgstr ""
+"Vous devez démarrer avec \"git bisect start\".\n"
+"Puis vous devez me donner au moins une bonne et une mauvaise révision.\n"
+"(Vous pouvez utiliser \"git bisect bad\" et \"git bisect good\" pour cela.)"
+
+#: git-bisect.sh:363 git-bisect.sh:490
+msgid "We are not bisecting."
+msgstr "Pas de bissection en cours."
+
+#: git-bisect.sh:370
+#, sh-format
+msgid "'$invalid' is not a valid commit"
+msgstr "'$invalid' n'est pas une validation valide"
+
+#: git-bisect.sh:379
+#, sh-format
+msgid ""
+"Could not check out original HEAD '$branch'.\n"
+"Try 'git bisect reset <commit>'."
+msgstr ""
+"Échec d'extraction de la HEAD d'origine '$branch'.\n"
+"Essayez 'git bisect reset <commit>'."
+
+#: git-bisect.sh:406
+msgid "No logfile given"
+msgstr "Pas de fichier de log donné"
+
+#: git-bisect.sh:407
+#, sh-format
+msgid "cannot read $file for replaying"
+msgstr "impossible de lire $file pour rejouer"
+
+#: git-bisect.sh:424
+msgid "?? what are you talking about?"
+msgstr "?? de quoi parlez-vous ?"
+
+#: git-bisect.sh:436
+#, sh-format
+msgid "running $command"
+msgstr "lancement de $command"
+
+#: git-bisect.sh:443
+#, sh-format
+msgid ""
+"bisect run failed:\n"
+"exit code $res from '$command' is < 0 or >= 128"
+msgstr ""
+"la bissection a échoué :\n"
+"le code retour $res de '$command' est < 0 ou >= 128"
+
+#: git-bisect.sh:469
+msgid "bisect run cannot continue any more"
+msgstr "la bissection ne peut plus continuer"
+
+#: git-bisect.sh:475
+#, sh-format
+msgid ""
+"bisect run failed:\n"
+"'bisect_state $state' exited with error code $res"
+msgstr ""
+"la bissection a échoué :\n"
+"'bisect_state $state' a retourné le code erreur $res"
+
+#: git-bisect.sh:482
+msgid "bisect run success"
+msgstr "succès de la bissection"
+
+#: git-pull.sh:21
+msgid ""
+"Pull is not possible because you have unmerged files.\n"
+"Please, fix them up in the work tree, and then use 'git add/rm <file>'\n"
+"as appropriate to mark resolution, or use 'git commit -a'."
+msgstr ""
+"Le pull n'est pas possible car vous avez des fichiers non fusionnés.\n"
+"Merci de corriger dans votre copie de travail, et utilisez alors 'git add/rm <file>'\n"
+"si nécessaire pour marquer comme résolu, ou utilisez 'git commit -a'."
+
+#: git-pull.sh:25
+msgid "Pull is not possible because you have unmerged files."
+msgstr "Le pull n'est pas possible car vous avez des fichiers non fusionnés."
+
+#: git-pull.sh:203
+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"
+
+#. The fetch involved updating the current branch.
+#. The working tree and the index file is still based on the
+#. $orig_head commit, but we are merging into $curr_head.
+#. First update the working tree to match $curr_head.
+#: git-pull.sh:235
+#, sh-format
+msgid ""
+"Warning: fetch updated the current branch head.\n"
+"Warning: fast-forwarding your working tree from\n"
+"Warning: commit $orig_head."
+msgstr ""
+"Attention : fetch a mis à jour la tête de la branche courante.\n"
+"Attention : mise à jour en avance rapide de votre copie de travail\n"
+"Attention : depuis la validation $orig_head."
+
+#: git-pull.sh:260
+msgid "Cannot merge multiple branches into empty head"
+msgstr "Impossible de fusionner de multiples branches sur une tête vide"
+
+#: git-pull.sh:264
+msgid "Cannot rebase onto multiple branches"
+msgstr "Impossible de rebaser sur de multiples branches"
+
+#: git-rebase.sh:53
+msgid ""
+"When you have resolved this problem, run \"git rebase --continue\".\n"
+"If you prefer to skip this patch, run \"git rebase --skip\" instead.\n"
+"To check out the original branch and stop rebasing, run \"git rebase --abort"
+"\"."
+msgstr ""
+"Lorsque vous aurez résolu ce problème, lancez \"git rebase --continue\".\n"
+"Si vous préférez sauter ce patch, lancez \"git rebase --skip\" à la place.\n"
+"Pour extraire la branche d'origine et stopper le rebasage, lancez \"git rebase --abort\"."
+
+#: git-rebase.sh:160
+msgid "The pre-rebase hook refused to rebase."
+msgstr "Le hook pre-rebase a refusé de rebaser."
+
+#: git-rebase.sh:165
+msgid "It looks like git-am is in progress. Cannot rebase."
+msgstr "Il semble que git-am soit en cours. Impossible de rebaser."
+
+#: git-rebase.sh:296
+msgid "The --exec option must be used with the --interactive option"
+msgstr "L'option --exec doit être utilisée avec l'option --interactive"
+
+#: git-rebase.sh:301
+msgid "No rebase in progress?"
+msgstr "Pas de rebasage en cours ?"
+
+#: git-rebase.sh:312
+msgid "The --edit-todo action can only be used during interactive rebase."
+msgstr "L'action --edit-todo peut seulement être utilisée lors d'un rebasage interactif."
+
+#: git-rebase.sh:319
+msgid "Cannot read HEAD"
+msgstr "Impossible de lire HEAD"
+
+#: git-rebase.sh:322
+msgid ""
+"You must edit all merge conflicts and then\n"
+"mark them as resolved using git add"
+msgstr ""
+"Vous devez éditer tous les conflits de fusion et\n"
+"les marquer comme résolus avec git add"
+
+#: git-rebase.sh:340
+#, sh-format
+msgid "Could not move back to $head_name"
+msgstr "Impossible de revenir à $head_name"
+
+#: git-rebase.sh:359
+#, sh-format
+msgid ""
+"It seems that there is already a $state_dir_base directory, and\n"
+"I wonder if you are in the middle of another rebase.  If that is the\n"
+"case, please try\n"
+"\t$cmd_live_rebase\n"
+"If that is not the case, please\n"
+"\t$cmd_clear_stale_rebase\n"
+"and run me again.  I am stopping in case you still have something\n"
+"valuable there."
+msgstr ""
+"Il semble qu'il y ait déjà un répertoire $state_dir_base, et je me demande\n"
+"si vous n'êtes pas au milieu d'un autre rebasage.  Si c'est le cas,\n"
+"merci d'essayer\n"
+"\t$cmd_live_rebase\n"
+"Si ça n'est pas le cas, merci de\n"
+"\t$cmd_clear_stale_rebase\n"
+"et relancer à nouveau.  Je m'arrête au cas où vous auriez quelque chose\n"
+"d'important ici."
+
+#: git-rebase.sh:404
+#, sh-format
+msgid "invalid upstream $upstream_name"
+msgstr "invalide $upstream_name en amont"
+
+#: git-rebase.sh:428
+#, sh-format
+msgid "$onto_name: there are more than one merge bases"
+msgstr "$onto_name : il y a plus d'une base de fusion"
+
+#: git-rebase.sh:431 git-rebase.sh:435
+#, sh-format
+msgid "$onto_name: there is no merge base"
+msgstr "$onto_name : il n'y a pas de base de fusion"
+
+#: git-rebase.sh:440
+#, sh-format
+msgid "Does not point to a valid commit: $onto_name"
+msgstr "Ne pointe pas sur une validation valide : $onto_name"
+
+#: git-rebase.sh:463
+#, sh-format
+msgid "fatal: no such branch: $branch_name"
+msgstr "fatal : pas de branche : $branch_name"
+
+#: git-rebase.sh:483
+msgid "Please commit or stash them."
+msgstr "Merci de les valider ou de les remiser."
+
+#: git-rebase.sh:501
+#, sh-format
+msgid "Current branch $branch_name is up to date."
+msgstr "La branche courante $branch_name est à jour."
+
+#: git-rebase.sh:504
+#, sh-format
+msgid "Current branch $branch_name is up to date, rebase forced."
+msgstr "La branche courante $branch_name est à jour, rebasage forcé."
+
+#: git-rebase.sh:515
+#, sh-format
+msgid "Changes from $mb to $onto:"
+msgstr "Changements de $mb sur $onto :"
+
+#. Detach HEAD and reset the tree
+#: git-rebase.sh:524
+msgid "First, rewinding head to replay your work on top of it..."
+msgstr "Premièrement, retour de head pour rejouer votre travail par-dessus..."
+
+#: git-rebase.sh:532
+#, sh-format
+msgid "Fast-forwarded $branch_name to $onto_name."
+msgstr "$branch_name mise à jour en avance rapide sur $onto_name."
+
+#: git-stash.sh:51
+msgid "git stash clear with parameters is unimplemented"
+msgstr "git stash clear avec des paramètres n'est pas implémenté"
+
+#: git-stash.sh:74
+msgid "You do not have the initial commit yet"
+msgstr "Vous n'avez pas encore la validation initiale"
+
+#: git-stash.sh:89
+msgid "Cannot save the current index state"
+msgstr "Impossible de sauver l'état courant de l'index"
+
+#: git-stash.sh:123 git-stash.sh:136
+msgid "Cannot save the current worktree state"
+msgstr "Impossible de sauver l'état courant de la copie de travail"
+
+#: git-stash.sh:140
+msgid "No changes selected"
+msgstr "Aucun changement sélectionné"
+
+#: git-stash.sh:143
+msgid "Cannot remove temporary index (can't happen)"
+msgstr "Impossible de supprimer l'index temporaire (ne peut pas se produire)"
+
+#: git-stash.sh:156
+msgid "Cannot record working tree state"
+msgstr "Impossible d'enregistrer l'état de la copie de travail"
+
+#. TRANSLATORS: $option is an invalid option, like
+#. `--blah-blah'. The 7 spaces at the beginning of the
+#. second line correspond to "error: ". So you should line
+#. up the second line with however many characters the
+#. translation of "error: " takes in your language. E.g. in
+#. English this is:
+#.
+#. $ git stash save --blah-blah 2>&1 | head -n 2
+#. error: unknown option for 'stash save': --blah-blah
+#. To provide a message, use git stash save -- '--blah-blah'
+#: git-stash.sh:202
+#, sh-format
+msgid ""
+"error: unknown option for 'stash save': $option\n"
+"       To provide a message, use git stash save -- '$option'"
+msgstr ""
+"erreur: option inconnue pour 'stash save': $option\n"
+"        Pour fournir un message, utilisez git stash save -- '$option'"
+
+#: git-stash.sh:223
+msgid "No local changes to save"
+msgstr "Pas de changements en local à sauver"
+
+#: git-stash.sh:227
+msgid "Cannot initialize stash"
+msgstr "Impossible d'initialiser le remisage"
+
+#: git-stash.sh:235
+msgid "Cannot save the current status"
+msgstr "Impossible de sauver le statut courant"
+
+#: git-stash.sh:253
+msgid "Cannot remove worktree changes"
+msgstr "Impossible de supprimer les changements de la copie de travail"
+
+#: git-stash.sh:352
+msgid "No stash found."
+msgstr "Pas de remisage trouvé."
+
+#: git-stash.sh:359
+#, sh-format
+msgid "Too many revisions specified: $REV"
+msgstr "Trop de révisions spécifiées : $REV"
+
+#: git-stash.sh:365
+#, sh-format
+msgid "$reference is not valid reference"
+msgstr "$reference n'est pas une référence valide"
+
+#: git-stash.sh:393
+#, sh-format
+msgid "'$args' is not a stash-like commit"
+msgstr "'$args' n'est pas une validation de type remisage"
+
+#: git-stash.sh:404
+#, sh-format
+msgid "'$args' is not a stash reference"
+msgstr "'$args' n'est pas une référence de remisage"
+
+#: git-stash.sh:412
+msgid "unable to refresh index"
+msgstr "impossible de rafraîchir l'index"
+
+#: git-stash.sh:416
+msgid "Cannot apply a stash in the middle of a merge"
+msgstr "Impossible d'appliquer un remisage au milieu d'une fusion"
+
+#: git-stash.sh:424
+msgid "Conflicts in index. Try without --index."
+msgstr "Conflits dans l'index. Essayez sans --index."
+
+#: git-stash.sh:426
+msgid "Could not save index tree"
+msgstr "Impossible de sauver l'arbre d'index"
+
+#: git-stash.sh:460
+msgid "Cannot unstage modified files"
+msgstr "Impossible de désindexer les fichiers modifiés"
+
+#: git-stash.sh:475
+msgid "Index was not unstashed."
+msgstr ""
+
+#: git-stash.sh:492
+#, sh-format
+msgid "Dropped ${REV} ($s)"
+msgstr "${REV} supprimé ($s)"
+
+#: git-stash.sh:493
+#, sh-format
+msgid "${REV}: Could not drop stash entry"
+msgstr "${REV}: Impossible de supprimer l'entrée de stash"
+
+#: git-stash.sh:500
+msgid "No branch name specified"
+msgstr "Aucune branche spécifiée"
+
+#: git-stash.sh:571
+msgid "(To restore them type \"git stash apply\")"
+msgstr "(Pour les restaurer tapez \"git stash apply\")"
+
+#: git-submodule.sh:91
+#, sh-format
+msgid "cannot strip one component off url '$remoteurl'"
+msgstr "impossible de supprimer un composant de l'URL '$remoteurl'"
+
+#: git-submodule.sh:196
+#, sh-format
+msgid "No submodule mapping found in .gitmodules for path '$sm_path'"
+msgstr "Pas de mappage du sous-module trouvé dans .gitmodules pour le chemin '$sm_path'"
+
+#: git-submodule.sh:239
+#, sh-format
+msgid "Clone of '$url' into submodule path '$sm_path' failed"
+msgstr "Le clonage de '$url' dans le chemin de sous-module '$sm_path' a échoué"
+
+#: git-submodule.sh:251
+#, sh-format
+msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa"
+msgstr "Le répertoire Git '$a' fait partie du chemin de sous-module '$b' ou vice-versa"
+
+#: git-submodule.sh:349
+#, sh-format
+msgid "repo URL: '$repo' must be absolute or begin with ./|../"
+msgstr "L'URL de dépôt '$repo' doit être absolu ou commencer par ./|../"
+
+#: git-submodule.sh:366
+#, sh-format
+msgid "'$sm_path' already exists in the index"
+msgstr "'$sm_path' existe déjà dans l'index"
+
+#: git-submodule.sh:370
+#, 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 ""
+"Le chemin suivant est ignoré par un de vos fichiers .gitignore :\n"
+"$sm_path\n"
+"Utilisez -f si vous voulez vraiment l'ajouter."
+
+#: git-submodule.sh:388
+#, sh-format
+msgid "Adding existing repo at '$sm_path' to the index"
+msgstr "Ajout du dépôt existant à '$sm_path' dans l'index"
+
+#: git-submodule.sh:390
+#, sh-format
+msgid "'$sm_path' already exists and is not a valid git repo"
+msgstr "'$sm_path' existe déjà et n'est pas un dépôt git valide"
+
+#: git-submodule.sh:398
+#, sh-format
+msgid "A git directory for '$sm_name' is found locally with remote(s):"
+msgstr "Un répertoire git pour '$sm_name' est trouvé en local avec le(s) serveur(s) distant(s) :"
+
+#: git-submodule.sh:400
+#, sh-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from"
+msgstr "Si vous voulez réutiliser ce répertoire git local au lieu de cloner à nouveau depuis"
+
+#: git-submodule.sh:402
+#, sh-format
+msgid ""
+"use the '--force' option. If the local git directory is not the correct repo"
+msgstr "utilisez l'option '--force'. Si le répertoire local git n'est pas le dépôt correct"
+
+#: git-submodule.sh:403
+#, sh-format
+msgid ""
+"or you are unsure what this means choose another name with the '--name' "
+"option."
+msgstr "ou vous ne savez pas ce que cela signifie de choisir un autre nom avec l'option '--name'."
+
+#: git-submodule.sh:405
+#, sh-format
+msgid "Reactivating local git directory for submodule '$sm_name'."
+msgstr "Réactivation du répertoire git local pour le sous-module '$sm_name'."
+
+#: git-submodule.sh:417
+#, sh-format
+msgid "Unable to checkout submodule '$sm_path'"
+msgstr "Impossible d'extraire le sous-module '$sm_path'"
+
+#: git-submodule.sh:422
+#, sh-format
+msgid "Failed to add submodule '$sm_path'"
+msgstr "Échec d'ajout du sous-module '$sm_path'"
+
+#: git-submodule.sh:431
+#, sh-format
+msgid "Failed to register submodule '$sm_path'"
+msgstr "Échec d'enregistrement du sous-module '$sm_path'"
+
+#: git-submodule.sh:474
+#, sh-format
+msgid "Entering '$prefix$sm_path'"
+msgstr "Entrée dans '$prefix$sm_path'"
+
+#: git-submodule.sh:488
+#, sh-format
+msgid "Stopping at '$sm_path'; script returned non-zero status."
+msgstr "Arrêt sur '$sm_path' ; le script a retourné un statut non nul."
+
+#: git-submodule.sh:532
+#, sh-format
+msgid "No url found for submodule path '$sm_path' in .gitmodules"
+msgstr "URL non trouvé pour le chemin de sous-module '$sm_path' dans .gitmodules"
+
+#: git-submodule.sh:541
+#, sh-format
+msgid "Failed to register url for submodule path '$sm_path'"
+msgstr "Échec d'enregistrement de l'URL pour le chemin de sous-module '$sm_path'"
+
+#: git-submodule.sh:543
+#, sh-format
+msgid "Submodule '$name' ($url) registered for path '$sm_path'"
+msgstr "Sous-module '$name' ($url) enregistré pour le chemin '$sm_path'"
+
+#: git-submodule.sh:551
+#, sh-format
+msgid "Failed to register update mode for submodule path '$sm_path'"
+msgstr "Échec d'enregistrement du mode de mise à jour pour le chemin de sous-module '$sm_path'"
+
+#: git-submodule.sh:588
+#, sh-format
+msgid "Use '.' if you really want to deinitialize all submodules"
+msgstr "Utilisez '.' si vous voulez vraiment réinitialiser tous les sous-modules"
+
+#: git-submodule.sh:603
+#, sh-format
+msgid "Submodule work tree '$sm_path' contains a .git directory"
+msgstr "La copie de travail du sous-module '$sm_path' contient un répertoire .git"
+
+#: git-submodule.sh:604
+#, sh-format
+msgid ""
+"(use 'rm -rf' if you really want to remove it including all of its history)"
+msgstr "(utilisez 'rm -rf' si vous voulez vraiment le supprimer en incluant tout son historique)"
+
+#: git-submodule.sh:610
+#, sh-format
+msgid ""
+"Submodule work tree '$sm_path' contains local modifications; use '-f' to "
+"discard them"
+msgstr "La copie de travail du sous-module '$sm_path' contient des modifications locales; utilisez '-f' pour les annuler"
+
+#: git-submodule.sh:613
+#, sh-format
+msgid "Cleared directory '$sm_path'"
+msgstr "Répertoire '$sm_path' nettoyé"
+
+#: git-submodule.sh:614
+#, sh-format
+msgid "Could not remove submodule work tree '$sm_path'"
+msgstr "Impossible de supprimer la copie de travail du sous-module '$sm_path'"
+
+#: git-submodule.sh:617
+#, sh-format
+msgid "Could not create empty submodule directory '$sm_path'"
+msgstr "Impossible de créer le répertoire vide du sous-module '$sm_path'"
+
+#: git-submodule.sh:626
+#, sh-format
+msgid "Submodule '$name' ($url) unregistered for path '$sm_path'"
+msgstr "Le sous-module '$name' ($url) n'est pas enregistré pour le chemin '$sm_path'"
+
+#: git-submodule.sh:731
+#, sh-format
+msgid ""
+"Submodule path '$prefix$sm_path' not initialized\n"
+"Maybe you want to use 'update --init'?"
+msgstr ""
+"Chemin de sous-module '$prefix$sm_path' non initialisé\n"
+"Peut-être souhaitez-vous utiliser 'update --init' ?"
+
+#: git-submodule.sh:744
+#, sh-format
+msgid "Unable to find current revision in submodule path '$prefix$sm_path'"
+msgstr "Impossible de trouver la révision courante dans le chemin de sous-module '$prefix$sm_path'"
+
+#: git-submodule.sh:753
+#, sh-format
+msgid "Unable to fetch in submodule path '$sm_path'"
+msgstr "Impossible de rapatrier dans le chemin de sous-module '$sm_path'"
+
+#: git-submodule.sh:777
+#, sh-format
+msgid "Unable to fetch in submodule path '$prefix$sm_path'"
+msgstr "Impossible de rapatrier dans le chemin de sous-module '$prefix$sm_path'"
+
+#: git-submodule.sh:791
+#, sh-format
+msgid "Unable to rebase '$sha1' in submodule path '$prefix$sm_path'"
+msgstr "Impossible de rebaser '$sha1' dans le chemin de sous-module '$prefix$sm_path'"
+
+#: git-submodule.sh:792
+#, sh-format
+msgid "Submodule path '$prefix$sm_path': rebased into '$sha1'"
+msgstr "Chemin de sous-module '$prefix$sm_path' : rebasé dans '$sha1'"
+
+#: git-submodule.sh:797
+#, sh-format
+msgid "Unable to merge '$sha1' in submodule path '$prefix$sm_path'"
+msgstr "Impossible de fusionner '$sha1' dans le chemin de sous-module '$prefix$sm_path'"
+
+#: git-submodule.sh:798
+#, sh-format
+msgid "Submodule path '$prefix$sm_path': merged in '$sha1'"
+msgstr "Chemin de sous-module '$prefix$sm_path' : fusionné dans '$sha1'"
+
+#: git-submodule.sh:803
+#, sh-format
+msgid "Unable to checkout '$sha1' in submodule path '$prefix$sm_path'"
+msgstr "Impossible d'extraire '$sha1' dans le chemin de sous-module '$prefix$sm_path'"
+
+#: git-submodule.sh:804
+#, sh-format
+msgid "Submodule path '$prefix$sm_path': checked out '$sha1'"
+msgstr "Chemin de sous-module '$prefix$sm_path' : '$sha1' extrait"
+
+#: git-submodule.sh:831
+#, sh-format
+msgid "Failed to recurse into submodule path '$prefix$sm_path'"
+msgstr "Échec de parcours dans le chemin du sous-module '$prefix$sm_path'"
+
+#: git-submodule.sh:939
+msgid "The --cached option cannot be used with the --files option"
+msgstr "L'option --cached ne peut pas être utilisée avec l'option --files"
+
+#. unexpected type
+#: git-submodule.sh:979
+#, sh-format
+msgid "unexpected mode $mod_dst"
+msgstr "mode $mod_dst inattendu"
+
+#: git-submodule.sh:997
+#, sh-format
+msgid "  Warn: $name doesn't contain commit $sha1_src"
+msgstr "  Attention : $name ne contient pas la validation $sha1_src"
+
+#: git-submodule.sh:1000
+#, sh-format
+msgid "  Warn: $name doesn't contain commit $sha1_dst"
+msgstr "  Attention : $name ne contient pas la validation $sha1_dst"
+
+#: git-submodule.sh:1003
+#, sh-format
+msgid "  Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
+msgstr "  Attention : $name ne contient pas les validations $sha1_src et $sha1_dst"
+
+#: git-submodule.sh:1028
+msgid "blob"
+msgstr "blob"
+
+#: git-submodule.sh:1066
+msgid "Submodules changed but not updated:"
+msgstr "Sous-modules modifiés mais non mis à jour :"
+
+#: git-submodule.sh:1068
+msgid "Submodule changes to be committed:"
+msgstr "Changements du sous-module à valider :"
+
+#: git-submodule.sh:1153
+#, sh-format
+msgid "Failed to recurse into submodule path '$sm_path'"
+msgstr "Échec de parcours dans le chemin du sous-module '$sm_path'"
+
+#: git-submodule.sh:1216
+#, sh-format
+msgid "Synchronizing submodule url for '$prefix$sm_path'"
+msgstr "Synchronisation de l'URL sous-module pour '$prefix$sm_path'"
index aacf98cb13e8256100e2866c4888ce9b8ecce402..cf1e44633079895608a3b0da3ff27c986e8903ac 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: 2013-07-26 14:19+0800\n"
+"POT-Creation-Date: 2013-08-06 14:10+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"
@@ -250,7 +250,7 @@ msgstr ""
 msgid "unrecognized header: %s%s (%d)"
 msgstr ""
 
-#: bundle.c:89 builtin/commit.c:683
+#: bundle.c:89 builtin/commit.c:697
 #, c-format
 msgid "could not open '%s'"
 msgstr ""
@@ -484,48 +484,48 @@ msgstr ""
 msgid "'%s': short read %s"
 msgstr ""
 
-#: help.c:213
+#: help.c:210
 #, c-format
 msgid "available git commands in '%s'"
 msgstr ""
 
-#: help.c:220
+#: help.c:217
 msgid "git commands available from elsewhere on your $PATH"
 msgstr ""
 
-#: help.c:236
+#: help.c:233
 msgid "The most commonly used git commands are:"
 msgstr ""
 
-#: help.c:293
+#: help.c:290
 #, 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:350
+#: help.c:347
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr ""
 
-#: help.c:372
+#: help.c:369
 #, c-format
 msgid ""
 "WARNING: You called a Git command named '%s', which does not exist.\n"
 "Continuing under the assumption that you meant '%s'"
 msgstr ""
 
-#: help.c:377
+#: help.c:374
 #, c-format
 msgid "in %0.1f seconds automatically..."
 msgstr ""
 
-#: help.c:384
+#: help.c:381
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr ""
 
-#: help.c:388 help.c:447
+#: help.c:385 help.c:444
 msgid ""
 "\n"
 "Did you mean this?"
@@ -535,7 +535,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: help.c:443
+#: help.c:440
 #, c-format
 msgid "%s: %s - %s"
 msgstr ""
@@ -1155,7 +1155,7 @@ msgid ""
 "\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.object_name_warning false\""
+"running \"git config advice.objectNameWarning false\""
 msgstr ""
 
 #: sha1_name.c:1097
@@ -1654,7 +1654,7 @@ msgstr ""
 msgid "unexpected diff status %c"
 msgstr ""
 
-#: builtin/add.c:149 builtin/commit.c:238
+#: builtin/add.c:149 builtin/commit.c:252
 msgid "updating files failed"
 msgstr ""
 
@@ -1703,14 +1703,14 @@ msgstr ""
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr ""
 
-#: builtin/add.c:394 builtin/clean.c:851 builtin/fetch.c:78 builtin/mv.c:63
+#: builtin/add.c:394 builtin/clean.c:875 builtin/fetch.c:78 builtin/mv.c:63
 #: builtin/prune-packed.c:73 builtin/push.c:451 builtin/remote.c:1253
 #: builtin/rm.c:268
 msgid "dry run"
 msgstr ""
 
 #: builtin/add.c:395 builtin/apply.c:4410 builtin/check-ignore.c:19
-#: builtin/commit.c:1201 builtin/count-objects.c:95 builtin/fsck.c:613
+#: builtin/commit.c:1220 builtin/count-objects.c:95 builtin/fsck.c:613
 #: builtin/log.c:1573 builtin/mv.c:62 builtin/read-tree.c:113
 msgid "be verbose"
 msgstr ""
@@ -1791,8 +1791,8 @@ msgstr ""
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr ""
 
-#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:895
-#: builtin/commit.c:298 builtin/mv.c:82 builtin/rm.c:297
+#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:919
+#: builtin/commit.c:312 builtin/mv.c:82 builtin/rm.c:297
 msgid "index file corrupt"
 msgstr ""
 
@@ -2635,8 +2635,8 @@ msgid "act on remote-tracking branches"
 msgstr ""
 
 #: builtin/branch.c:805 builtin/branch.c:811 builtin/branch.c:832
-#: builtin/branch.c:838 builtin/commit.c:1414 builtin/commit.c:1415
-#: builtin/commit.c:1416 builtin/commit.c:1417 builtin/tag.c:468
+#: builtin/branch.c:838 builtin/commit.c:1433 builtin/commit.c:1434
+#: builtin/commit.c:1435 builtin/commit.c:1436 builtin/tag.c:468
 msgid "commit"
 msgstr ""
 
@@ -2813,43 +2813,43 @@ msgstr ""
 msgid "Need a repository to unbundle."
 msgstr ""
 
-#: builtin/cat-file.c:303
+#: builtin/cat-file.c:285
 msgid "git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>"
 msgstr ""
 
-#: builtin/cat-file.c:304
+#: builtin/cat-file.c:286
 msgid "git cat-file (--batch|--batch-check) < <list_of_objects>"
 msgstr ""
 
-#: builtin/cat-file.c:341
+#: builtin/cat-file.c:323
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr ""
 
-#: builtin/cat-file.c:342
+#: builtin/cat-file.c:324
 msgid "show object type"
 msgstr ""
 
-#: builtin/cat-file.c:343
+#: builtin/cat-file.c:325
 msgid "show object size"
 msgstr ""
 
-#: builtin/cat-file.c:345
+#: builtin/cat-file.c:327
 msgid "exit with zero when there's no error"
 msgstr ""
 
-#: builtin/cat-file.c:346
+#: builtin/cat-file.c:328
 msgid "pretty-print object's content"
 msgstr ""
 
-#: builtin/cat-file.c:348
+#: builtin/cat-file.c:330
 msgid "for blob objects, run textconv on object's content"
 msgstr ""
 
-#: builtin/cat-file.c:350
+#: builtin/cat-file.c:332
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 
-#: builtin/cat-file.c:353
+#: builtin/cat-file.c:335
 msgid "show info about objects fed from the standard input"
 msgstr ""
 
@@ -3299,35 +3299,35 @@ msgid ""
 "           - (empty) finish selecting"
 msgstr ""
 
-#: builtin/clean.c:491
+#: builtin/clean.c:515
 #, c-format
 msgid "Huh (%s)?"
 msgstr ""
 
-#: builtin/clean.c:634
+#: builtin/clean.c:658
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr ""
 
-#: builtin/clean.c:671
+#: builtin/clean.c:695
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr ""
 
-#: builtin/clean.c:692
+#: builtin/clean.c:716
 msgid "Select items to delete"
 msgstr ""
 
-#: builtin/clean.c:732
+#: builtin/clean.c:756
 #, c-format
 msgid "remove %s? "
 msgstr ""
 
-#: builtin/clean.c:757
+#: builtin/clean.c:781
 msgid "Bye."
 msgstr ""
 
-#: builtin/clean.c:765
+#: builtin/clean.c:789
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -3338,68 +3338,68 @@ msgid ""
 "?                   - help for prompt selection"
 msgstr ""
 
-#: builtin/clean.c:792
+#: builtin/clean.c:816
 msgid "*** Commands ***"
 msgstr ""
 
-#: builtin/clean.c:793
+#: builtin/clean.c:817
 msgid "What now"
 msgstr ""
 
-#: builtin/clean.c:801
+#: builtin/clean.c:825
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] ""
 msgstr[1] ""
 
-#: builtin/clean.c:818
+#: builtin/clean.c:842
 msgid "No more files to clean, exiting."
 msgstr ""
 
-#: builtin/clean.c:850
+#: builtin/clean.c:874
 msgid "do not print names of files removed"
 msgstr ""
 
-#: builtin/clean.c:852
+#: builtin/clean.c:876
 msgid "force"
 msgstr ""
 
-#: builtin/clean.c:853
+#: builtin/clean.c:877
 msgid "interactive cleaning"
 msgstr ""
 
-#: builtin/clean.c:855
+#: builtin/clean.c:879
 msgid "remove whole directories"
 msgstr ""
 
-#: builtin/clean.c:856 builtin/describe.c:420 builtin/grep.c:716
+#: builtin/clean.c:880 builtin/describe.c:420 builtin/grep.c:716
 #: builtin/ls-files.c:493 builtin/name-rev.c:315 builtin/show-ref.c:186
 msgid "pattern"
 msgstr ""
 
-#: builtin/clean.c:857
+#: builtin/clean.c:881
 msgid "add <pattern> to ignore rules"
 msgstr ""
 
-#: builtin/clean.c:858
+#: builtin/clean.c:882
 msgid "remove ignored files, too"
 msgstr ""
 
-#: builtin/clean.c:860
+#: builtin/clean.c:884
 msgid "remove only ignored files"
 msgstr ""
 
-#: builtin/clean.c:878
+#: builtin/clean.c:902
 msgid "-x and -X cannot be used together"
 msgstr ""
 
-#: builtin/clean.c:882
+#: builtin/clean.c:906
 msgid ""
 "clean.requireForce set to true and neither -i, -n nor -f given; refusing to "
 "clean"
 msgstr ""
 
-#: builtin/clean.c:885
+#: builtin/clean.c:909
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n nor -f given; "
 "refusing to clean"
@@ -3714,96 +3714,109 @@ msgid ""
 "\n"
 "    git commit --allow-empty\n"
 "\n"
-"Otherwise, please use 'git reset'\n"
 msgstr ""
 
-#: builtin/commit.c:265
+#: builtin/commit.c:69
+msgid "Otherwise, please use 'git reset'\n"
+msgstr ""
+
+#: builtin/commit.c:72
+msgid ""
+"If you wish to skip this commit, use:\n"
+"\n"
+"    git reset\n"
+"\n"
+"Then \"git cherry-pick --continue\" will resume cherry-picking\n"
+"the remaining commits.\n"
+msgstr ""
+
+#: builtin/commit.c:279
 msgid "failed to unpack HEAD tree object"
 msgstr ""
 
-#: builtin/commit.c:307
+#: builtin/commit.c:321
 msgid "unable to create temporary index"
 msgstr ""
 
-#: builtin/commit.c:313
+#: builtin/commit.c:327
 msgid "interactive add failed"
 msgstr ""
 
-#: builtin/commit.c:346 builtin/commit.c:367 builtin/commit.c:417
+#: builtin/commit.c:360 builtin/commit.c:381 builtin/commit.c:431
 msgid "unable to write new_index file"
 msgstr ""
 
-#: builtin/commit.c:398
+#: builtin/commit.c:412
 msgid "cannot do a partial commit during a merge."
 msgstr ""
 
-#: builtin/commit.c:400
+#: builtin/commit.c:414
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr ""
 
-#: builtin/commit.c:410
+#: builtin/commit.c:424
 msgid "cannot read the index"
 msgstr ""
 
-#: builtin/commit.c:430
+#: builtin/commit.c:444
 msgid "unable to write temporary index file"
 msgstr ""
 
-#: builtin/commit.c:521 builtin/commit.c:527
+#: builtin/commit.c:535 builtin/commit.c:541
 #, c-format
 msgid "invalid commit: %s"
 msgstr ""
 
-#: builtin/commit.c:549
+#: builtin/commit.c:563
 msgid "malformed --author parameter"
 msgstr ""
 
-#: builtin/commit.c:569
+#: builtin/commit.c:583
 #, c-format
 msgid "Malformed ident string: '%s'"
 msgstr ""
 
-#: builtin/commit.c:607 builtin/commit.c:640 builtin/commit.c:963
+#: builtin/commit.c:621 builtin/commit.c:654 builtin/commit.c:982
 #, c-format
 msgid "could not lookup commit %s"
 msgstr ""
 
-#: builtin/commit.c:619 builtin/shortlog.c:271
+#: builtin/commit.c:633 builtin/shortlog.c:271
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr ""
 
-#: builtin/commit.c:621
+#: builtin/commit.c:635
 msgid "could not read log from standard input"
 msgstr ""
 
-#: builtin/commit.c:625
+#: builtin/commit.c:639
 #, c-format
 msgid "could not read log file '%s'"
 msgstr ""
 
-#: builtin/commit.c:631
+#: builtin/commit.c:645
 msgid "commit has empty message"
 msgstr ""
 
-#: builtin/commit.c:647
+#: builtin/commit.c:661
 msgid "could not read MERGE_MSG"
 msgstr ""
 
-#: builtin/commit.c:651
+#: builtin/commit.c:665
 msgid "could not read SQUASH_MSG"
 msgstr ""
 
-#: builtin/commit.c:655
+#: builtin/commit.c:669
 #, c-format
 msgid "could not read '%s'"
 msgstr ""
 
-#: builtin/commit.c:716
+#: builtin/commit.c:730
 msgid "could not write commit template"
 msgstr ""
 
-#: builtin/commit.c:727
+#: builtin/commit.c:741
 #, c-format
 msgid ""
 "\n"
@@ -3813,7 +3826,7 @@ msgid ""
 "and try again.\n"
 msgstr ""
 
-#: builtin/commit.c:732
+#: builtin/commit.c:746
 #, c-format
 msgid ""
 "\n"
@@ -3823,14 +3836,14 @@ msgid ""
 "and try again.\n"
 msgstr ""
 
-#: builtin/commit.c:744
+#: builtin/commit.c:758
 #, 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:749
+#: builtin/commit.c:763
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -3838,351 +3851,351 @@ msgid ""
 "An empty message aborts the commit.\n"
 msgstr ""
 
-#: builtin/commit.c:762
+#: builtin/commit.c:776
 #, c-format
 msgid "%sAuthor:    %s"
 msgstr ""
 
-#: builtin/commit.c:769
+#: builtin/commit.c:783
 #, c-format
 msgid "%sCommitter: %s"
 msgstr ""
 
-#: builtin/commit.c:789
+#: builtin/commit.c:803
 msgid "Cannot read index"
 msgstr ""
 
-#: builtin/commit.c:826
+#: builtin/commit.c:845
 msgid "Error building trees"
 msgstr ""
 
-#: builtin/commit.c:841 builtin/tag.c:359
+#: builtin/commit.c:860 builtin/tag.c:359
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr ""
 
-#: builtin/commit.c:938
+#: builtin/commit.c:957
 #, c-format
 msgid "No existing author found with '%s'"
 msgstr ""
 
-#: builtin/commit.c:953 builtin/commit.c:1189
+#: builtin/commit.c:972 builtin/commit.c:1208
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr ""
 
-#: builtin/commit.c:990
+#: builtin/commit.c:1009
 msgid "--long and -z are incompatible"
 msgstr ""
 
-#: builtin/commit.c:1020
+#: builtin/commit.c:1039
 msgid "Using both --reset-author and --author does not make sense"
 msgstr ""
 
-#: builtin/commit.c:1031
+#: builtin/commit.c:1050
 msgid "You have nothing to amend."
 msgstr ""
 
-#: builtin/commit.c:1034
+#: builtin/commit.c:1053
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr ""
 
-#: builtin/commit.c:1036
+#: builtin/commit.c:1055
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr ""
 
-#: builtin/commit.c:1039
+#: builtin/commit.c:1058
 msgid "Options --squash and --fixup cannot be used together"
 msgstr ""
 
-#: builtin/commit.c:1049
+#: builtin/commit.c:1068
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr ""
 
-#: builtin/commit.c:1051
+#: builtin/commit.c:1070
 msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
 msgstr ""
 
-#: builtin/commit.c:1059
+#: builtin/commit.c:1078
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 
-#: builtin/commit.c:1076
+#: builtin/commit.c:1095
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 
-#: builtin/commit.c:1078
+#: builtin/commit.c:1097
 msgid "No paths with --include/--only does not make sense."
 msgstr ""
 
-#: builtin/commit.c:1080
+#: builtin/commit.c:1099
 msgid "Clever... amending the last one with dirty index."
 msgstr ""
 
-#: builtin/commit.c:1082
+#: builtin/commit.c:1101
 msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
 msgstr ""
 
-#: builtin/commit.c:1092 builtin/tag.c:575
+#: builtin/commit.c:1111 builtin/tag.c:575
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr ""
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1116
 msgid "Paths with -a does not make sense."
 msgstr ""
 
-#: builtin/commit.c:1203 builtin/commit.c:1436
+#: builtin/commit.c:1222 builtin/commit.c:1455
 msgid "show status concisely"
 msgstr ""
 
-#: builtin/commit.c:1205 builtin/commit.c:1438
+#: builtin/commit.c:1224 builtin/commit.c:1457
 msgid "show branch information"
 msgstr ""
 
-#: builtin/commit.c:1207 builtin/commit.c:1440 builtin/push.c:452
+#: builtin/commit.c:1226 builtin/commit.c:1459 builtin/push.c:452
 msgid "machine-readable output"
 msgstr ""
 
-#: builtin/commit.c:1210 builtin/commit.c:1442
+#: builtin/commit.c:1229 builtin/commit.c:1461
 msgid "show status in long format (default)"
 msgstr ""
 
-#: builtin/commit.c:1213 builtin/commit.c:1445
+#: builtin/commit.c:1232 builtin/commit.c:1464
 msgid "terminate entries with NUL"
 msgstr ""
 
-#: builtin/commit.c:1215 builtin/commit.c:1448 builtin/fast-export.c:667
+#: builtin/commit.c:1234 builtin/commit.c:1467 builtin/fast-export.c:667
 #: builtin/fast-export.c:670 builtin/tag.c:459
 msgid "mode"
 msgstr ""
 
-#: builtin/commit.c:1216 builtin/commit.c:1448
+#: builtin/commit.c:1235 builtin/commit.c:1467
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1238
 msgid "show ignored files"
 msgstr ""
 
-#: builtin/commit.c:1220 parse-options.h:154
+#: builtin/commit.c:1239 parse-options.h:154
 msgid "when"
 msgstr ""
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1240
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
 
-#: builtin/commit.c:1223
+#: builtin/commit.c:1242
 msgid "list untracked files in columns"
 msgstr ""
 
-#: builtin/commit.c:1294
+#: builtin/commit.c:1313
 msgid "couldn't look up newly created commit"
 msgstr ""
 
-#: builtin/commit.c:1296
+#: builtin/commit.c:1315
 msgid "could not parse newly created commit"
 msgstr ""
 
-#: builtin/commit.c:1337
+#: builtin/commit.c:1356
 msgid "detached HEAD"
 msgstr ""
 
-#: builtin/commit.c:1339
+#: builtin/commit.c:1358
 msgid " (root-commit)"
 msgstr ""
 
-#: builtin/commit.c:1406
+#: builtin/commit.c:1425
 msgid "suppress summary after successful commit"
 msgstr ""
 
-#: builtin/commit.c:1407
+#: builtin/commit.c:1426
 msgid "show diff in commit message template"
 msgstr ""
 
-#: builtin/commit.c:1409
+#: builtin/commit.c:1428
 msgid "Commit message options"
 msgstr ""
 
-#: builtin/commit.c:1410 builtin/tag.c:457
+#: builtin/commit.c:1429 builtin/tag.c:457
 msgid "read message from file"
 msgstr ""
 
-#: builtin/commit.c:1411
+#: builtin/commit.c:1430
 msgid "author"
 msgstr ""
 
-#: builtin/commit.c:1411
+#: builtin/commit.c:1430
 msgid "override author for commit"
 msgstr ""
 
-#: builtin/commit.c:1412 builtin/gc.c:178
+#: builtin/commit.c:1431 builtin/gc.c:178
 msgid "date"
 msgstr ""
 
-#: builtin/commit.c:1412
+#: builtin/commit.c:1431
 msgid "override date for commit"
 msgstr ""
 
-#: builtin/commit.c:1413 builtin/merge.c:223 builtin/notes.c:405
+#: builtin/commit.c:1432 builtin/merge.c:223 builtin/notes.c:405
 #: builtin/notes.c:562 builtin/tag.c:455
 msgid "message"
 msgstr ""
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1432
 msgid "commit message"
 msgstr ""
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1433
 msgid "reuse and edit message from specified commit"
 msgstr ""
 
-#: builtin/commit.c:1415
+#: builtin/commit.c:1434
 msgid "reuse message from specified commit"
 msgstr ""
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1435
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 
-#: builtin/commit.c:1417
+#: builtin/commit.c:1436
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1437
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr ""
 
-#: builtin/commit.c:1419 builtin/log.c:1160 builtin/revert.c:111
+#: builtin/commit.c:1438 builtin/log.c:1160 builtin/revert.c:111
 msgid "add Signed-off-by:"
 msgstr ""
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1439
 msgid "use specified template file"
 msgstr ""
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1440
 msgid "force edit of commit"
 msgstr ""
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1441
 msgid "default"
 msgstr ""
 
-#: builtin/commit.c:1422 builtin/tag.c:460
+#: builtin/commit.c:1441 builtin/tag.c:460
 msgid "how to strip spaces and #comments from message"
 msgstr ""
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1442
 msgid "include status in commit message template"
 msgstr ""
 
-#: builtin/commit.c:1424 builtin/merge.c:230 builtin/tag.c:461
+#: builtin/commit.c:1443 builtin/merge.c:230 builtin/tag.c:461
 msgid "key id"
 msgstr ""
 
-#: builtin/commit.c:1425 builtin/merge.c:231
+#: builtin/commit.c:1444 builtin/merge.c:231
 msgid "GPG sign commit"
 msgstr ""
 
 #. end commit message options
-#: builtin/commit.c:1428
+#: builtin/commit.c:1447
 msgid "Commit contents options"
 msgstr ""
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1448
 msgid "commit all changed files"
 msgstr ""
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1449
 msgid "add specified files to index for commit"
 msgstr ""
 
-#: builtin/commit.c:1431
+#: builtin/commit.c:1450
 msgid "interactively add files"
 msgstr ""
 
-#: builtin/commit.c:1432
+#: builtin/commit.c:1451
 msgid "interactively add changes"
 msgstr ""
 
-#: builtin/commit.c:1433
+#: builtin/commit.c:1452
 msgid "commit only specified files"
 msgstr ""
 
-#: builtin/commit.c:1434
+#: builtin/commit.c:1453
 msgid "bypass pre-commit hook"
 msgstr ""
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1454
 msgid "show what would be committed"
 msgstr ""
 
-#: builtin/commit.c:1446
+#: builtin/commit.c:1465
 msgid "amend previous commit"
 msgstr ""
 
-#: builtin/commit.c:1447
+#: builtin/commit.c:1466
 msgid "bypass post-rewrite hook"
 msgstr ""
 
-#: builtin/commit.c:1452
+#: builtin/commit.c:1471
 msgid "ok to record an empty change"
 msgstr ""
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1474
 msgid "ok to record a change with an empty message"
 msgstr ""
 
-#: builtin/commit.c:1488
+#: builtin/commit.c:1507
 msgid "could not parse HEAD commit"
 msgstr ""
 
-#: builtin/commit.c:1526 builtin/merge.c:525
+#: builtin/commit.c:1545 builtin/merge.c:525
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr ""
 
-#: builtin/commit.c:1533
+#: builtin/commit.c:1552
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr ""
 
-#: builtin/commit.c:1540
+#: builtin/commit.c:1559
 msgid "could not read MERGE_MODE"
 msgstr ""
 
-#: builtin/commit.c:1559
+#: builtin/commit.c:1578
 #, c-format
 msgid "could not read commit message: %s"
 msgstr ""
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1592
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr ""
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1597
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr ""
 
-#: builtin/commit.c:1593 builtin/merge.c:861 builtin/merge.c:886
+#: builtin/commit.c:1612 builtin/merge.c:861 builtin/merge.c:886
 msgid "failed to write commit object"
 msgstr ""
 
-#: builtin/commit.c:1614
+#: builtin/commit.c:1633
 msgid "cannot lock HEAD ref"
 msgstr ""
 
-#: builtin/commit.c:1618
+#: builtin/commit.c:1637
 msgid "cannot update HEAD ref"
 msgstr ""
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1648
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full or quota is\n"
@@ -9316,7 +9329,7 @@ msgstr ""
 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\" it at any time.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
 
 #: git-rebase.sh:190
index a5c88c96a584e367b2a0db7101f61df22f8b4ae1..12dfca92f4a829247ef1e62f05cd43915b911e7b 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git 1.8.3\n"
+"Project-Id-Version: git 1.8.4\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2013-04-30 08:25+0800\n"
-"PO-Revision-Date: 2013-04-30 12:22+0100\n"
+"POT-Creation-Date: 2013-08-06 14:10+0800\n"
+"PO-Revision-Date: 2013-08-06 12:37+0100\n"
 "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: advice.c:53
+#: advice.c:57
 #, c-format
 msgid "hint: %.*s\n"
 msgstr "tips: %.*s\n"
@@ -26,7 +26,7 @@ msgstr "tips: %.*s\n"
 #. * Message used both when 'git commit' fails and when
 #. * other commands doing a merge do.
 #.
-#: advice.c:83
+#: advice.c:87
 msgid ""
 "Fix them up in the work tree,\n"
 "and then use 'git add/rm <file>' as\n"
@@ -65,7 +65,7 @@ msgstr "fmt"
 msgid "archive format"
 msgstr "arkivformat"
 
-#: archive.c:324 builtin/log.c:1126
+#: archive.c:324 builtin/log.c:1173
 msgid "prefix"
 msgstr "prefix"
 
@@ -73,11 +73,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:326 builtin/archive.c:88 builtin/blame.c:2371
-#: builtin/blame.c:2372 builtin/config.c:55 builtin/fast-export.c:665
-#: builtin/fast-export.c:667 builtin/grep.c:715 builtin/hash-object.c:77
-#: builtin/ls-files.c:490 builtin/ls-files.c:493 builtin/notes.c:536
-#: builtin/notes.c:693 builtin/read-tree.c:107 parse-options.h:149
+#: archive.c:326 builtin/archive.c:88 builtin/blame.c:2292
+#: builtin/blame.c:2293 builtin/config.c:56 builtin/fast-export.c:673
+#: builtin/fast-export.c:675 builtin/grep.c:714 builtin/hash-object.c:77
+#: builtin/ls-files.c:496 builtin/ls-files.c:499 builtin/notes.c:408
+#: builtin/notes.c:565 builtin/read-tree.c:108 parse-options.h:152
 msgid "file"
 msgstr "fil"
 
@@ -109,7 +109,7 @@ msgstr "komprimera bättre"
 msgid "list supported archive formats"
 msgstr "visa understödda arkivformat"
 
-#: archive.c:345 builtin/archive.c:90 builtin/clone.c:86
+#: archive.c:345 builtin/archive.c:90 builtin/clone.c:85
 msgid "repo"
 msgstr "arkiv"
 
@@ -117,7 +117,7 @@ msgstr "arkiv"
 msgid "retrieve the archive from remote repository <repo>"
 msgstr "hämta arkivet från fjärrarkivet <arkiv>"
 
-#: archive.c:347 builtin/archive.c:92 builtin/notes.c:615
+#: archive.c:347 builtin/archive.c:92 builtin/notes.c:487
 msgid "command"
 msgstr "kommando"
 
@@ -204,17 +204,17 @@ msgstr "Det finns redan en gren som heter \"%s\""
 msgid "Cannot force update the current branch."
 msgstr "Kan inte tvinga uppdatering av aktuell gren."
 
-#: branch.c:201
+#: branch.c:216
 #, c-format
 msgid "Cannot setup tracking information; starting point '%s' is not a branch."
 msgstr "Kan inte ställa in spårning; startpunkten \"%s\" är inte en gren."
 
-#: branch.c:203
+#: branch.c:218
 #, c-format
 msgid "the requested upstream branch '%s' does not exist"
 msgstr "den efterfrågade uppströmsgrenen \"%s\" finns inte"
 
-#: branch.c:205
+#: branch.c:220
 msgid ""
 "\n"
 "If you are planning on basing your work on an upstream\n"
@@ -234,26 +234,26 @@ msgstr ""
 "spåra dess fjärrmotsvarighet kan du använda \"git push -u\"\n"
 "för att ställa in uppströmskonfigurationen när du sänder in."
 
-#: branch.c:250
+#: branch.c:265
 #, c-format
 msgid "Not a valid object name: '%s'."
 msgstr "Objektnamnet är inte giltigt: \"%s\"."
 
-#: branch.c:270
+#: branch.c:285
 #, c-format
 msgid "Ambiguous object name: '%s'."
 msgstr "Objektnamnet är tvetydigt: \"%s\"."
 
-#: branch.c:275
+#: branch.c:290
 #, c-format
 msgid "Not a valid branch point: '%s'."
 msgstr "Avgreningspunkten är inte giltig: \"%s\""
 
-#: branch.c:281
+#: branch.c:296
 msgid "Failed to lock ref for update"
 msgstr "Misslyckades låsa referens för uppdatering"
 
-#: branch.c:299
+#: branch.c:314
 msgid "Failed to write ref"
 msgstr "Misslyckades skriva referens"
 
@@ -267,7 +267,7 @@ msgstr "'%s' ser inte ut som en v2-bundle-fil"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "okänt huvud: %s%s (%d)"
 
-#: bundle.c:89 builtin/commit.c:676
+#: bundle.c:89 builtin/commit.c:697
 #, c-format
 msgid "could not open '%s'"
 msgstr "kunde inte öppna \"%s\""
@@ -276,9 +276,9 @@ msgstr "kunde inte öppna \"%s\""
 msgid "Repository lacks these prerequisite commits:"
 msgstr "Arkivet saknar dessa nödvändiga incheckningar:"
 
-#: bundle.c:164 sequencer.c:651 sequencer.c:1101 builtin/log.c:300
-#: builtin/log.c:770 builtin/log.c:1344 builtin/log.c:1570 builtin/merge.c:349
-#: builtin/shortlog.c:155
+#: bundle.c:164 sequencer.c:661 sequencer.c:1111 builtin/log.c:331
+#: builtin/log.c:801 builtin/log.c:1399 builtin/log.c:1625 builtin/merge.c:364
+#: builtin/shortlog.c:156
 msgid "revision walk setup failed"
 msgstr "misslyckades skapa revisionstraversering"
 
@@ -304,7 +304,7 @@ msgstr[1] "Paketet (bundlen) kräver dessa %d referenser:"
 msgid "rev-list died"
 msgstr "rev-list dog"
 
-#: bundle.c:300 builtin/log.c:1255 builtin/shortlog.c:258
+#: bundle.c:300 builtin/log.c:1310 builtin/shortlog.c:259
 #, c-format
 msgid "unrecognized argument: %s"
 msgstr "okänt argument: %s"
@@ -335,12 +335,12 @@ msgstr "kan inte skapa \"%s\""
 msgid "index-pack died"
 msgstr "index-pack dog"
 
-#: commit.c:50
+#: commit.c:53
 #, c-format
 msgid "could not parse %s"
 msgstr "kunde inte tolka %s"
 
-#: commit.c:52
+#: commit.c:55
 #, c-format
 msgid "%s %s is not a commit!"
 msgstr "%s %s är inte en incheckning!"
@@ -349,16 +349,16 @@ msgstr "%s %s är inte en incheckning!"
 msgid "memory exhausted"
 msgstr "minnet slut"
 
-#: connected.c:39
+#: connected.c:60
 msgid "Could not run 'git rev-list'"
 msgstr "Kunde inte köra \"git rev-list\""
 
-#: connected.c:48
+#: connected.c:80
 #, c-format
 msgid "failed write to rev-list: %s"
 msgstr "kunde inte skriva till rev-list: %s"
 
-#: connected.c:56
+#: connected.c:88
 #, c-format
 msgid "failed to close rev-list's stdin: %s"
 msgstr "kunde inte stänga rev-list:s standard in: %s"
@@ -454,7 +454,7 @@ msgstr ""
 "Hittade fel i konfigurationsvariabeln \"diff.dirstat\":\n"
 "%s"
 
-#: diff.c:3481
+#: diff.c:3487
 #, c-format
 msgid ""
 "Failed to parse --dirstat/-X option parameter:\n"
@@ -463,7 +463,7 @@ msgstr ""
 "Misslyckades tolka argument till flaggan --dirstat/-X;\n"
 "%s"
 
-#: diff.c:3495
+#: diff.c:3501
 #, c-format
 msgid "Failed to parse --submodule option parameter: '%s'"
 msgstr "Misslyckades tolka argument till flaggan --submodule: \"%s\""
@@ -505,20 +505,20 @@ msgstr "\"%s\": %s"
 msgid "'%s': short read %s"
 msgstr "\"%s\": kort läsning %s"
 
-#: help.c:212
+#: help.c:210
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "git-kommandon tillgängliga i \"%s\""
 
-#: help.c:219
+#: help.c:217
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "git-kommandon från andra platser i din $PATH"
 
-#: help.c:235
+#: help.c:233
 msgid "The most commonly used git commands are:"
 msgstr "De mest använda git-kommandona är:"
 
-#: help.c:292
+#: help.c:290
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -527,11 +527,11 @@ msgstr ""
 "\"%s\" verkar vara ett git-kommando, men vi kan inte\n"
 "köra det. Kanske git-%s är trasigt?"
 
-#: help.c:349
+#: help.c:347
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Oj då. Ditt system rapporterar inga Git-kommandon alls."
 
-#: help.c:371
+#: help.c:369
 #, c-format
 msgid ""
 "WARNING: You called a Git command named '%s', which does not exist.\n"
@@ -540,17 +540,17 @@ msgstr ""
 "VARNING: Du anropade ett Git-kommando vid namn \"%s\", som inte finns.\n"
 "Fortsätter under förutsättningen att du menade \"%s\""
 
-#: help.c:376
+#: help.c:374
 #, c-format
 msgid "in %0.1f seconds automatically..."
 msgstr "automatiskt om %0.1f sekunder..."
 
-#: help.c:383
+#: help.c:381
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: \"%s\" är inte ett git-kommando. Se \"git --help\"."
 
-#: help.c:387
+#: help.c:385 help.c:444
 msgid ""
 "\n"
 "Did you mean this?"
@@ -564,12 +564,17 @@ msgstr[1] ""
 "\n"
 "Menade du ett av dessa?"
 
+#: help.c:440
+#, c-format
+msgid "%s: %s - %s"
+msgstr "%s: %s - %s"
+
 #: merge.c:56
 msgid "failed to read the cache"
 msgstr "misslyckads läsa cachen"
 
 #: merge.c:110 builtin/checkout.c:365 builtin/checkout.c:566
-#: builtin/clone.c:645
+#: builtin/clone.c:656
 msgid "unable to write new index file"
 msgstr "kunde inte skriva ny indexfil"
 
@@ -583,70 +588,70 @@ msgstr "(felaktig incheckning)\n"
 msgid "addinfo_cache failed for path '%s'"
 msgstr "addinfo_cache misslyckades för sökvägen \"%s\""
 
-#: merge-recursive.c:268
+#: merge-recursive.c:269
 msgid "error building trees"
 msgstr "fel vid byggande av träd"
 
-#: merge-recursive.c:672
+#: merge-recursive.c:673
 #, c-format
 msgid "failed to create path '%s'%s"
 msgstr "misslyckades skapa sökvägen \"%s\"%s"
 
-#: merge-recursive.c:683
+#: merge-recursive.c:684
 #, 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"
 
 #. something else exists
 #. .. but not some other error (who really cares what?)
-#: merge-recursive.c:697 merge-recursive.c:718
+#: merge-recursive.c:698 merge-recursive.c:719
 msgid ": perhaps a D/F conflict?"
 msgstr ": kanske en K/F-konflikt?"
 
-#: merge-recursive.c:708
+#: merge-recursive.c:709
 #, c-format
 msgid "refusing to lose untracked file at '%s'"
 msgstr "vägrar förlora ospårad fil vid \"%s\""
 
-#: merge-recursive.c:748
+#: merge-recursive.c:749
 #, c-format
 msgid "cannot read object %s '%s'"
 msgstr "kan inte läsa objektet %s: \"%s\""
 
-#: merge-recursive.c:750
+#: merge-recursive.c:751
 #, c-format
 msgid "blob expected for %s '%s'"
 msgstr "blob förväntades för %s \"%s\""
 
-#: merge-recursive.c:773 builtin/clone.c:313
+#: merge-recursive.c:774 builtin/clone.c:312
 #, c-format
 msgid "failed to open '%s'"
 msgstr "misslyckades öppna \"%s\""
 
-#: merge-recursive.c:781
+#: merge-recursive.c:782
 #, c-format
 msgid "failed to symlink '%s'"
 msgstr "misslyckades ta skapa symboliska länken \"%s\""
 
-#: merge-recursive.c:784
+#: merge-recursive.c:785
 #, c-format
 msgid "do not know what to do with %06o %s '%s'"
 msgstr "vet inte hur %06o %s \"%s\" skall hanteras"
 
-#: merge-recursive.c:922
+#: merge-recursive.c:923
 msgid "Failed to execute internal merge"
 msgstr "Misslyckades exekvera intern sammanslagning"
 
-#: merge-recursive.c:926
+#: merge-recursive.c:927
 #, c-format
 msgid "Unable to add %s to database"
 msgstr "Kunde inte lägga till %s till databasen"
 
-#: merge-recursive.c:942
+#: merge-recursive.c:943
 msgid "unsupported object type in the tree"
 msgstr "objekttyp som ej stöds upptäcktes i trädet"
 
-#: merge-recursive.c:1021 merge-recursive.c:1035
+#: merge-recursive.c:1022 merge-recursive.c:1036
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -655,7 +660,7 @@ msgstr ""
 "KONFLIKT (%s/radera): %s raderad i %s och %s i %s. Versionen %s av %s lämnad "
 "i trädet."
 
-#: merge-recursive.c:1027 merge-recursive.c:1040
+#: merge-recursive.c:1028 merge-recursive.c:1041
 #, c-format
 msgid ""
 "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -664,20 +669,20 @@ 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:1081
+#: merge-recursive.c:1082
 msgid "rename"
 msgstr "namnbyte"
 
-#: merge-recursive.c:1081
+#: merge-recursive.c:1082
 msgid "renamed"
 msgstr "namnbytt"
 
-#: merge-recursive.c:1137
+#: merge-recursive.c:1138
 #, c-format
 msgid "%s is a directory in %s adding as %s instead"
 msgstr "%s är en katalog i %s lägger till som %s istället"
 
-#: merge-recursive.c:1159
+#: merge-recursive.c:1160
 #, c-format
 msgid ""
 "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -686,148 +691,169 @@ msgstr ""
 "KONFLIKT (namnbyte/namnbyte): Namnbyte \"%s\"->\"%s\" på grenen \"%s\" "
 "namnbyte \"%s\"->\"%s\" i \"%s\"%s"
 
-#: merge-recursive.c:1164
+#: merge-recursive.c:1165
 msgid " (left unresolved)"
 msgstr " (lämnad olöst)"
 
-#: merge-recursive.c:1218
+#: merge-recursive.c:1219
 #, c-format
 msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
 msgstr ""
 "KONFLIKT (namnbyte/namnbyte): Namnbyte %s->%s i %s. Namnbyte %s->%s i %s"
 
-#: merge-recursive.c:1248
+#: merge-recursive.c:1249
 #, c-format
 msgid "Renaming %s to %s and %s to %s instead"
 msgstr "Byter namn på %s till %s och %s till %s istället"
 
-#: merge-recursive.c:1447
+#: merge-recursive.c:1448
 #, c-format
 msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
 msgstr "KONFLIKT (namnbyte/tillägg): Namnbyte %s->%s i %s. %s tillagd i %s"
 
-#: merge-recursive.c:1457
+#: merge-recursive.c:1458
 #, c-format
 msgid "Adding merged %s"
 msgstr "Lägger till sammanslagen %s"
 
-#: merge-recursive.c:1462 merge-recursive.c:1660
+#: merge-recursive.c:1463 merge-recursive.c:1661
 #, c-format
 msgid "Adding as %s instead"
 msgstr "Lägger till som %s iställer"
 
-#: merge-recursive.c:1513
+#: merge-recursive.c:1514
 #, c-format
 msgid "cannot read object %s"
 msgstr "kan inte läsa objektet %s"
 
-#: merge-recursive.c:1516
+#: merge-recursive.c:1517
 #, c-format
 msgid "object %s is not a blob"
 msgstr "objektet %s är inte en blob"
 
-#: merge-recursive.c:1564
+#: merge-recursive.c:1565
 msgid "modify"
 msgstr "ändra"
 
-#: merge-recursive.c:1564
+#: merge-recursive.c:1565
 msgid "modified"
 msgstr "ändrad"
 
-#: merge-recursive.c:1574
+#: merge-recursive.c:1575
 msgid "content"
 msgstr "innehåll"
 
-#: merge-recursive.c:1581
+#: merge-recursive.c:1582
 msgid "add/add"
 msgstr "tillägg/tillägg"
 
-#: merge-recursive.c:1615
+#: merge-recursive.c:1616
 #, c-format
 msgid "Skipped %s (merged same as existing)"
 msgstr "Hoppade över %s (sammanslagen samma som befintlig)"
 
-#: merge-recursive.c:1629
+#: merge-recursive.c:1630
 #, c-format
 msgid "Auto-merging %s"
 msgstr "Slår ihop %s automatiskt"
 
-#: merge-recursive.c:1633 git-submodule.sh:1029
+#: merge-recursive.c:1634 git-submodule.sh:1118
 msgid "submodule"
 msgstr "undermodul"
 
-#: merge-recursive.c:1634
+#: merge-recursive.c:1635
 #, c-format
 msgid "CONFLICT (%s): Merge conflict in %s"
 msgstr "KONFLIKT (%s): Sammanslagningskonflikt i %s"
 
-#: merge-recursive.c:1724
+#: merge-recursive.c:1725
 #, c-format
 msgid "Removing %s"
 msgstr "Tar bort %s"
 
-#: merge-recursive.c:1749
+#: merge-recursive.c:1750
 msgid "file/directory"
 msgstr "fil/katalog"
 
-#: merge-recursive.c:1755
+#: merge-recursive.c:1756
 msgid "directory/file"
 msgstr "katalog/fil"
 
-#: merge-recursive.c:1760
+#: merge-recursive.c:1761
 #, c-format
 msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
 msgstr ""
 "KONFLIKT (%s): Det finns en katalog med namnet %s i %s. Lägger till %s som %s"
 
-#: merge-recursive.c:1770
+#: merge-recursive.c:1771
 #, c-format
 msgid "Adding %s"
 msgstr "Lägger till %s"
 
-#: merge-recursive.c:1787
+#: merge-recursive.c:1788
 msgid "Fatal merge failure, shouldn't happen."
 msgstr "Ödesdigert sammanslagningsfel, borde inte inträffa."
 
-#: merge-recursive.c:1806
+#: merge-recursive.c:1807
 msgid "Already up-to-date!"
 msgstr "Redan à jour!"
 
-#: merge-recursive.c:1815
+#: merge-recursive.c:1816
 #, c-format
 msgid "merging of trees %s and %s failed"
 msgstr "sammanslagning av träden %s och %s misslyckades"
 
-#: merge-recursive.c:1845
+#: merge-recursive.c:1846
 #, c-format
 msgid "Unprocessed path??? %s"
 msgstr "Obehandlad sökväg??? %s"
 
-#: merge-recursive.c:1890
+#: merge-recursive.c:1891
 msgid "Merging:"
 msgstr "Slår ihop:"
 
-#: merge-recursive.c:1903
+#: merge-recursive.c:1904
 #, 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:1940
+#: merge-recursive.c:1941
 msgid "merge returned no commit"
 msgstr "sammanslagningen returnerade ingen incheckning"
 
-#: merge-recursive.c:1997
+#: merge-recursive.c:1998
 #, c-format
 msgid "Could not parse object '%s'"
 msgstr "Kunde inte tolka objektet \"%s\""
 
-#: merge-recursive.c:2009 builtin/merge.c:658
+#: merge-recursive.c:2010 builtin/merge.c:672
 msgid "Unable to write index."
 msgstr "Kunde inte skriva indexet."
 
-#: object.c:195
+#: notes-utils.c:40
+msgid "Cannot commit uninitialized/unreferenced notes tree"
+msgstr "Kan inte checka in oinitierat/orefererat anteckningsträd"
+
+#: notes-utils.c:81
+#, c-format
+msgid "Bad notes.rewriteMode value: '%s'"
+msgstr "Felaktigt värde för notes.rewriteMode: '%s'"
+
+#: notes-utils.c:91
+#, c-format
+msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
+msgstr "Vägrar skriva över anteckningar i %s (utanför refs/notes/)"
+
+#. TRANSLATORS: The first %s is the name of the
+#. environment variable, the second %s is its value
+#: notes-utils.c:118
+#, c-format
+msgid "Bad %s value: '%s'"
+msgstr "Felaktigt värde på %s: \"%s\""
+
+#: object.c:204
 #, c-format
 msgid "unable to parse object: %s"
 msgstr "kunde inte tolka objektet: %s"
@@ -867,18 +893,18 @@ msgstr "Sökvägen \"%s\" är i undermodulen \"%.*s\""
 msgid "'%s' is beyond a symbolic link"
 msgstr "\"%s\" är på andra sidan av en symbolisk länk"
 
-#: remote.c:1781
+#: remote.c:1788
 #, 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:1787
+#: remote.c:1794
 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:1790
+#: remote.c:1797
 #, c-format
 msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
 msgid_plural ""
@@ -888,11 +914,11 @@ msgstr[0] ""
 msgstr[1] ""
 "Din gren ligger efter \"%s\" med %d incheckningar, och kan snabbspolas.\n"
 
-#: remote.c:1798
+#: remote.c:1805
 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:1801
+#: remote.c:1808
 #, c-format
 msgid ""
 "Your branch and '%s' have diverged,\n"
@@ -907,18 +933,27 @@ msgstr[1] ""
 "Din gren och \"%s\" har divergerat,\n"
 "och har %d respektive %d olika incheckningar.\n"
 
-#: remote.c:1811
+#: remote.c:1818
 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"
 
-#: sequencer.c:206 builtin/merge.c:776 builtin/merge.c:889 builtin/merge.c:999
-#: builtin/merge.c:1009
+#: run-command.c:80
+msgid "open /dev/null failed"
+msgstr "misslyckades öppna /dev/null"
+
+#: run-command.c:82
+#, c-format
+msgid "dup2(%d,%d) failed"
+msgstr "dup2(%d,%d) misslyckades"
+
+#: sequencer.c:206 builtin/merge.c:790 builtin/merge.c:903
+#: builtin/merge.c:1013 builtin/merge.c:1023
 #, c-format
 msgid "Could not open '%s' for writing"
 msgstr "Kunde inte öppna \"%s\" för skrivning"
 
-#: sequencer.c:208 builtin/merge.c:335 builtin/merge.c:779
-#: builtin/merge.c:1001 builtin/merge.c:1014
+#: sequencer.c:208 builtin/merge.c:350 builtin/merge.c:793
+#: builtin/merge.c:1015 builtin/merge.c:1028
 #, c-format
 msgid "Could not write to '%s'"
 msgstr "Kunde inte skriva till \"%s\""
@@ -941,7 +976,7 @@ msgstr ""
 "med \"git add <sökvägar>\" eller \"git rm <sökvägar>\"\n"
 "och checka in resultatet med \"git commit\""
 
-#: sequencer.c:245 sequencer.c:859 sequencer.c:942
+#: sequencer.c:245 sequencer.c:869 sequencer.c:952
 #, c-format
 msgid "Could not write to %s"
 msgstr "Kunde inte skriva till %s"
@@ -964,215 +999,237 @@ msgid "Commit your changes or stash them to proceed."
 msgstr "Checka in dina ändringar eller använd \"stash\" för att fortsätta."
 
 #. TRANSLATORS: %s will be "revert" or "cherry-pick"
-#: sequencer.c:319
+#: sequencer.c:324
 #, c-format
 msgid "%s: Unable to write new index file"
 msgstr "%s: Kunde inte skriva ny indexfil"
 
-#: sequencer.c:350
+#: sequencer.c:355
 msgid "Could not resolve HEAD commit\n"
 msgstr "Kunde inte bestämma HEAD:s incheckning\n"
 
-#: sequencer.c:371
+#: sequencer.c:377
 msgid "Unable to update cache tree\n"
 msgstr "Kan inte uppdatera cacheträd\n"
 
-#: sequencer.c:416
+#: sequencer.c:422
 #, c-format
 msgid "Could not parse commit %s\n"
 msgstr "Kunde inte tolka incheckningen %s\n"
 
-#: sequencer.c:421
+#: sequencer.c:427
 #, c-format
 msgid "Could not parse parent commit %s\n"
 msgstr "Kunde inte tolka föräldraincheckningen %s\n"
 
-#: sequencer.c:487
+#: sequencer.c:493
 msgid "Your index file is unmerged."
 msgstr "Din indexfil har inte slagits ihop."
 
-#: sequencer.c:506
+#: sequencer.c:512
 #, c-format
 msgid "Commit %s is a merge but no -m option was given."
 msgstr "Incheckning %s är en sammanslagning, men flaggan -m angavs inte."
 
-#: sequencer.c:514
+#: sequencer.c:520
 #, c-format
 msgid "Commit %s does not have parent %d"
 msgstr "Incheckning %s har inte förälder %d"
 
-#: sequencer.c:518
+#: sequencer.c:524
 #, c-format
 msgid "Mainline was specified but commit %s is not a merge."
 msgstr "Huvudlinje angavs, men incheckningen %s är inte en sammanslagning"
 
 #. TRANSLATORS: The first %s will be "revert" or
 #. "cherry-pick", the second %s a SHA1
-#: sequencer.c:531
+#: sequencer.c:537
 #, c-format
 msgid "%s: cannot parse parent commit %s"
 msgstr "%s: kan inte tolka föräldraincheckningen %s"
 
-#: sequencer.c:535
+#: sequencer.c:541
 #, c-format
 msgid "Cannot get commit message for %s"
 msgstr "Kan inte hämta incheckningsmeddelande för %s"
 
-#: sequencer.c:621
+#: sequencer.c:627
 #, c-format
 msgid "could not revert %s... %s"
 msgstr "kunde inte ångra %s... %s"
 
-#: sequencer.c:622
+#: sequencer.c:628
 #, c-format
 msgid "could not apply %s... %s"
 msgstr "kunde inte tillämpa %s... %s"
 
-#: sequencer.c:654
+#: sequencer.c:664
 msgid "empty commit set passed"
 msgstr "den angivna uppsättningen incheckningar är tom"
 
-#: sequencer.c:662
+#: sequencer.c:672
 #, c-format
 msgid "git %s: failed to read the index"
 msgstr "git %s: misslyckades läsa indexet"
 
-#: sequencer.c:667
+#: sequencer.c:677
 #, c-format
 msgid "git %s: failed to refresh the index"
 msgstr "git %s: misslyckades uppdatera indexet"
 
-#: sequencer.c:725
+#: sequencer.c:735
 #, c-format
 msgid "Cannot %s during a %s"
 msgstr "kan inte %s under en %s"
 
-#: sequencer.c:747
+#: sequencer.c:757
 #, c-format
 msgid "Could not parse line %d."
 msgstr "Kan inte tolka rad %d."
 
-#: sequencer.c:752
+#: sequencer.c:762
 msgid "No commits parsed."
 msgstr "Inga incheckningar lästes."
 
-#: sequencer.c:765
+#: sequencer.c:775
 #, c-format
 msgid "Could not open %s"
 msgstr "Kunde inte öppna %s"
 
-#: sequencer.c:769
+#: sequencer.c:779
 #, c-format
 msgid "Could not read %s."
 msgstr "kunde inte läsa %s."
 
-#: sequencer.c:776
+#: sequencer.c:786
 #, c-format
 msgid "Unusable instruction sheet: %s"
 msgstr "Oanvändbart manus: %s"
 
-#: sequencer.c:804
+#: sequencer.c:814
 #, c-format
 msgid "Invalid key: %s"
 msgstr "Felaktig nyckel: %s"
 
-#: sequencer.c:807
+#: sequencer.c:817
 #, c-format
 msgid "Invalid value for %s: %s"
 msgstr "Felaktigt värde för %s: %s"
 
-#: sequencer.c:819
+#: sequencer.c:829
 #, c-format
 msgid "Malformed options sheet: %s"
 msgstr "Trasigt manus: %s"
 
-#: sequencer.c:840
+#: sequencer.c:850
 msgid "a cherry-pick or revert is already in progress"
 msgstr "en \"cherry-pick\" eller \"revert\" pågår redan"
 
-#: sequencer.c:841
+#: sequencer.c:851
 msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
 msgstr "testa \"git cherry-pick (--continue | --quit | --abort)\""
 
-#: sequencer.c:845
+#: sequencer.c:855
 #, c-format
 msgid "Could not create sequencer directory %s"
 msgstr "Kunde inte skapa \"sequencer\"-katalogen \"%s\""
 
-#: sequencer.c:861 sequencer.c:946
+#: sequencer.c:871 sequencer.c:956
 #, c-format
 msgid "Error wrapping up %s."
 msgstr "Fel vid ombrytning av %s."
 
-#: sequencer.c:880 sequencer.c:1014
+#: sequencer.c:890 sequencer.c:1024
 msgid "no cherry-pick or revert in progress"
 msgstr "ingen \"cherry-pick\" eller \"revert\" pågår"
 
-#: sequencer.c:882
+#: sequencer.c:892
 msgid "cannot resolve HEAD"
 msgstr "kan inte bestämma HEAD"
 
-#: sequencer.c:884
+#: sequencer.c:894
 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:906 builtin/apply.c:4060
+#: sequencer.c:916 builtin/apply.c:4061
 #, c-format
 msgid "cannot open %s: %s"
 msgstr "kan inte öppna %s: %s"
 
-#: sequencer.c:909
+#: sequencer.c:919
 #, c-format
 msgid "cannot read %s: %s"
 msgstr "kan inte läsa %s: %s"
 
-#: sequencer.c:910
+#: sequencer.c:920
 msgid "unexpected end of file"
 msgstr "oväntat filslut"
 
-#: sequencer.c:916
+#: sequencer.c:926
 #, 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:939
+#: sequencer.c:949
 #, c-format
 msgid "Could not format %s."
 msgstr "Kunde inte formatera %s."
 
-#: sequencer.c:1083
+#: sequencer.c:1092
 #, c-format
 msgid "%s: can't cherry-pick a %s"
 msgstr "%s: kan inte göra \"cherry-pick\" på typen \"%s\""
 
-#: sequencer.c:1085
+#: sequencer.c:1095
 #, c-format
 msgid "%s: bad revision"
 msgstr "%s: felaktig revision"
 
-#: sequencer.c:1119
+#: sequencer.c:1129
 msgid "Can't revert as initial commit"
 msgstr "Kan inte ångra som första incheckning"
 
-#: sequencer.c:1120
+#: sequencer.c:1130
 msgid "Can't cherry-pick into empty head"
 msgstr "Kan inte göra \"cherry-pick\" i ett tomt huvud"
 
-#: sha1_name.c:1036
+#: sha1_name.c:440
+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 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 checkout -b $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\""
+
+#: sha1_name.c:1097
 msgid "HEAD does not point to a branch"
 msgstr "HEAD pekar inte på en gren"
 
-#: sha1_name.c:1039
+#: sha1_name.c:1100
 #, c-format
 msgid "No such branch: '%s'"
 msgstr "Okänd gren: \"%s\""
 
-#: sha1_name.c:1041
+#: sha1_name.c:1102
 #, c-format
 msgid "No upstream configured for branch '%s'"
 msgstr "Ingen standarduppström angiven för grenen \"%s\""
 
-#: sha1_name.c:1044
+#: sha1_name.c:1106
 #, 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"
@@ -1182,166 +1239,166 @@ msgstr "Uppströmsgrenen \"%s\" är inte lagrad som en fjärrspårande gren"
 msgid "unable to access '%s': %s"
 msgstr "kan inte komma åt \"%s\": %s"
 
-#: wrapper.c:423
+#: wrapper.c:429
 #, c-format
 msgid "unable to access '%s'"
 msgstr "kan inte komma åt \"%s\""
 
-#: wrapper.c:434
+#: wrapper.c:440
 #, c-format
 msgid "unable to look up current user in the passwd file: %s"
 msgstr "kan inte slå upp aktuell användare i passwd-filen: %s"
 
-#: wrapper.c:435
+#: wrapper.c:441
 msgid "no such user"
 msgstr "okänd användare"
 
-#: wt-status.c:140
+#: wt-status.c:141
 msgid "Unmerged paths:"
 msgstr "Ej sammanslagna sökvägar:"
 
-#: wt-status.c:167 wt-status.c:194
+#: wt-status.c:168 wt-status.c:195
 #, c-format
 msgid "  (use \"git reset %s <file>...\" to unstage)"
 msgstr "  (använd \"git reset %s <fil>...\" för att ta bort från kö)"
 
-#: wt-status.c:169 wt-status.c:196
+#: wt-status.c:170 wt-status.c:197
 msgid "  (use \"git rm --cached <file>...\" to unstage)"
 msgstr "  (använd \"git rm --cached <fil>...\" för att ta bort från kö)"
 
-#: wt-status.c:173
+#: wt-status.c:174
 msgid "  (use \"git add <file>...\" to mark resolution)"
 msgstr "  (använd \"git add <fil>...\" för att ange lösning)"
 
-#: wt-status.c:175 wt-status.c:179
+#: wt-status.c:176 wt-status.c:180
 msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
 msgstr "  (använd \"git add/rm <fil>...\" som lämpligt för att ange lösning)"
 
-#: wt-status.c:177
+#: wt-status.c:178
 msgid "  (use \"git rm <file>...\" to mark resolution)"
 msgstr "  (använd \"git rm <fil>...\" för att ange lösning)"
 
-#: wt-status.c:188
+#: wt-status.c:189
 msgid "Changes to be committed:"
 msgstr "Ändringar att checka in:"
 
-#: wt-status.c:206
+#: wt-status.c:207
 msgid "Changes not staged for commit:"
 msgstr "Ändringar ej i incheckningskön:"
 
-#: wt-status.c:210
+#: wt-status.c:211
 msgid "  (use \"git add <file>...\" to update what will be committed)"
 msgstr ""
 "  (använd \"git add <fil>...\" för att uppdatera vad som skall checkas in)"
 
-#: wt-status.c:212
+#: wt-status.c:213
 msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
 msgstr ""
 "  (använd \"git add/rm <fil>...\" för att uppdatera vad som skall checkas in)"
 
-#: wt-status.c:213
+#: wt-status.c:214
 msgid ""
 "  (use \"git checkout -- <file>...\" to discard changes in working directory)"
 msgstr ""
 "  (använd \"git checkout -- <fil>...\" för att förkasta ändringar i "
 "arbetskatalogen)"
 
-#: wt-status.c:215
+#: wt-status.c:216
 msgid "  (commit or discard the untracked or modified content in submodules)"
 msgstr ""
 "  (checka in eller förkasta ospårat eller ändrat innehåll i undermoduler)"
 
-#: wt-status.c:227
+#: wt-status.c:228
 #, c-format
 msgid "  (use \"git %s <file>...\" to include in what will be committed)"
 msgstr ""
 "  (använd \"git %s <fil>...\" för att ta med i det som skall checkas in)"
 
-#: wt-status.c:244
+#: wt-status.c:245
 msgid "bug"
 msgstr "programfel"
 
-#: wt-status.c:249
+#: wt-status.c:250
 msgid "both deleted:"
 msgstr "borttaget av bägge:"
 
-#: wt-status.c:250
+#: wt-status.c:251
 msgid "added by us:"
 msgstr "tillagt av oss:"
 
-#: wt-status.c:251
+#: wt-status.c:252
 msgid "deleted by them:"
 msgstr "borttaget av dem:"
 
-#: wt-status.c:252
+#: wt-status.c:253
 msgid "added by them:"
 msgstr "tillagt av dem:"
 
-#: wt-status.c:253
+#: wt-status.c:254
 msgid "deleted by us:"
 msgstr "borttaget av oss:"
 
-#: wt-status.c:254
+#: wt-status.c:255
 msgid "both added:"
 msgstr "tillagt av bägge:"
 
-#: wt-status.c:255
+#: wt-status.c:256
 msgid "both modified:"
 msgstr "ändrat av bägge:"
 
-#: wt-status.c:285
+#: wt-status.c:286
 msgid "new commits, "
 msgstr "nya incheckningar, "
 
-#: wt-status.c:287
+#: wt-status.c:288
 msgid "modified content, "
 msgstr "ändrat innehåll, "
 
-#: wt-status.c:289
+#: wt-status.c:290
 msgid "untracked content, "
 msgstr "ospårat innehåll, "
 
-#: wt-status.c:306
+#: wt-status.c:307
 #, c-format
 msgid "new file:   %s"
 msgstr "ny fil:     %s"
 
-#: wt-status.c:309
+#: wt-status.c:310
 #, c-format
 msgid "copied:     %s -> %s"
 msgstr "kopierad:   %s -> %s"
 
-#: wt-status.c:312
+#: wt-status.c:313
 #, c-format
 msgid "deleted:    %s"
 msgstr "borttagen:  %s"
 
-#: wt-status.c:315
+#: wt-status.c:316
 #, c-format
 msgid "modified:   %s"
 msgstr "ändrad:     %s"
 
-#: wt-status.c:318
+#: wt-status.c:319
 #, c-format
 msgid "renamed:    %s -> %s"
 msgstr "namnbyte:   %s -> %s"
 
-#: wt-status.c:321
+#: wt-status.c:322
 #, c-format
 msgid "typechange: %s"
 msgstr "typbyte:    %s"
 
-#: wt-status.c:324
+#: wt-status.c:325
 #, c-format
 msgid "unknown:    %s"
 msgstr "okänd:      %s"
 
-#: wt-status.c:327
+#: wt-status.c:328
 #, c-format
 msgid "unmerged:   %s"
 msgstr "osammansl.: %s"
 
-#: wt-status.c:330
+#: wt-status.c:331
 #, c-format
 msgid "bug: unhandled diff status %c"
 msgstr "programfel: diff-status %c ej hanterad"
@@ -1350,7 +1407,7 @@ msgstr "programfel: diff-status %c ej hanterad"
 msgid "You have unmerged paths."
 msgstr "Du har ej sammanslagna sökvägar."
 
-#: wt-status.c:806 wt-status.c:958
+#: wt-status.c:806
 msgid "  (fix conflicts and run \"git commit\")"
 msgstr "  (rätta konflikter och kör \"git commit\")"
 
@@ -1371,8 +1428,8 @@ msgid "The current patch is empty."
 msgstr "Aktuell patch är tom."
 
 #: wt-status.c:829
-msgid "  (fix conflicts and then run \"git am --resolved\")"
-msgstr "  (rätta konflikter och kör sedan \"git am --resolved\")"
+msgid "  (fix conflicts and then run \"git am --continue\")"
+msgstr "  (rätta konflikter och kör sedan \"git am --continue\")"
 
 #: wt-status.c:831
 msgid "  (use \"git am --skip\" to skip this patch)"
@@ -1448,37 +1505,47 @@ msgstr "  (använd \"git rebase --continue\" när du är nöjd med dina ändring
 msgid "You are currently cherry-picking."
 msgstr "Du håller på med en \"cherry-pick\"."
 
+#: wt-status.c:958
+msgid "  (fix conflicts and run \"git cherry-pick --continue\")"
+msgstr "  (rätta konflikter och kör sedan \"git cherry-pick --continue\")"
+
 #: wt-status.c:961
-msgid "  (all conflicts fixed: run \"git commit\")"
-msgstr "  (alla konflikter har rättats: kör \"git commit\")"
+msgid "  (all conflicts fixed: run \"git cherry-pick --continue\")"
+msgstr "  (alla konflikter rättade: kör \"git cherry-pick --continue\")"
 
-#: wt-status.c:970
+#: wt-status.c:963
+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:972
 #, c-format
 msgid "You are currently reverting commit %s."
 msgstr "Du håller på med att ångra incheckningen %s."
 
-#: wt-status.c:975
+#: wt-status.c:977
 msgid "  (fix conflicts and run \"git revert --continue\")"
 msgstr "  (rätta konflikter och kör sedan \"git revert --continue\")"
 
-#: wt-status.c:978
+#: wt-status.c:980
 msgid "  (all conflicts fixed: run \"git revert --continue\")"
 msgstr "  (alla konflikter rättade: kör \"git revert --continue\")"
 
-#: wt-status.c:980
+#: wt-status.c:982
 msgid "  (use \"git revert --abort\" to cancel the revert operation)"
 msgstr "  (använd \"git revert --abort\" för att avbryta ångrandet)"
 
-#: wt-status.c:991
+#: wt-status.c:993
 #, 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:995
+#: wt-status.c:997
 msgid "You are currently bisecting."
 msgstr "Du håller på med en \"bisect\"."
 
-#: wt-status.c:998
+#: wt-status.c:1000
 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)"
@@ -1487,31 +1554,35 @@ msgstr ""
 msgid "On branch "
 msgstr "På grenen "
 
-#: wt-status.c:1184
+#: wt-status.c:1180
+msgid "rebase in progress; onto "
+msgstr "ombasering pågår; ovanpå"
+
+#: wt-status.c:1187
 msgid "HEAD detached at "
 msgstr "HEAD frånkopplad vid "
 
-#: wt-status.c:1186
+#: wt-status.c:1189
 msgid "HEAD detached from "
 msgstr "HEAD frånkopplad från "
 
-#: wt-status.c:1189
+#: wt-status.c:1192
 msgid "Not currently on any branch."
 msgstr "Inte på någon gren för närvarande."
 
-#: wt-status.c:1206
+#: wt-status.c:1209
 msgid "Initial commit"
 msgstr "Första incheckning"
 
-#: wt-status.c:1220
+#: wt-status.c:1223
 msgid "Untracked files"
 msgstr "Ospårade filer"
 
-#: wt-status.c:1222
+#: wt-status.c:1225
 msgid "Ignored files"
 msgstr "Ignorerade filer"
 
-#: wt-status.c:1226
+#: wt-status.c:1229
 #, c-format
 msgid ""
 "It took %.2f seconds to enumerate untracked files. 'status -uno'\n"
@@ -1523,32 +1594,32 @@ msgstr ""
 "lägga till nya filer själv (se \"git help status\")."
 
 # %s är nästa sträng eller tom.
-#: wt-status.c:1232
+#: wt-status.c:1235
 #, c-format
 msgid "Untracked files not listed%s"
 msgstr "Ospårade filer visas ej%s"
 
-#: wt-status.c:1234
+#: wt-status.c:1237
 msgid " (use -u option to show untracked files)"
 msgstr " (använd flaggan -u för att visa ospårade filer)"
 
-#: wt-status.c:1240
+#: wt-status.c:1243
 msgid "No changes"
 msgstr "Inga ändringar"
 
-#: wt-status.c:1245
+#: wt-status.c:1248
 #, 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:1248
+#: wt-status.c:1251
 #, c-format
 msgid "no changes added to commit\n"
 msgstr "inga ändringar att checka in\n"
 
-#: wt-status.c:1251
+#: wt-status.c:1254
 #, c-format
 msgid ""
 "nothing added to commit but untracked files present (use \"git add\" to "
@@ -1557,52 +1628,52 @@ msgstr ""
 "inget köat för incheckning, men ospårade filer finns (spåra med \"git add"
 "\")\n"
 
-#: wt-status.c:1254
+#: wt-status.c:1257
 #, 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:1257
+#: wt-status.c:1260
 #, 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:1260 wt-status.c:1265
+#: wt-status.c:1263 wt-status.c:1268
 #, c-format
 msgid "nothing to commit\n"
 msgstr "inget att checka in\n"
 
-#: wt-status.c:1263
+#: wt-status.c:1266
 #, 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:1267
+#: wt-status.c:1270
 #, c-format
 msgid "nothing to commit, working directory clean\n"
 msgstr "inget att checka in, arbetskatalogen ren\n"
 
-#: wt-status.c:1375
+#: wt-status.c:1378
 msgid "HEAD (no branch)"
 msgstr "HEAD (ingen gren)"
 
-#: wt-status.c:1381
+#: wt-status.c:1384
 msgid "Initial commit on "
 msgstr "Första incheckning på "
 
-#: wt-status.c:1396
+#: wt-status.c:1399
 msgid "behind "
 msgstr "efter "
 
-#: wt-status.c:1399 wt-status.c:1402
+#: wt-status.c:1402 wt-status.c:1405
 msgid "ahead "
 msgstr "före "
 
-#: wt-status.c:1404
+#: wt-status.c:1407
 msgid ", behind "
 msgstr ", efter "
 
-#: compat/precompose_utf8.c:58 builtin/clone.c:352
+#: compat/precompose_utf8.c:58 builtin/clone.c:351
 #, c-format
 msgid "failed to unlink '%s'"
 msgstr "misslyckades ta bort länken \"%s\""
@@ -1688,7 +1759,7 @@ msgstr ""
 msgid "unexpected diff status %c"
 msgstr "diff-status %c förväntades inte"
 
-#: builtin/add.c:149 builtin/commit.c:233
+#: builtin/add.c:149 builtin/commit.c:252
 msgid "updating files failed"
 msgstr "misslyckades uppdatera filer"
 
@@ -1701,7 +1772,7 @@ msgstr "ta bort \"%s\"\n"
 msgid "Unstaged changes after refreshing the index:"
 msgstr "Ospårade ändringar efter att ha uppdaterat indexet:"
 
-#: builtin/add.c:256 builtin/add.c:572 builtin/rm.c:275
+#: builtin/add.c:256 builtin/add.c:573 builtin/rm.c:337
 #, c-format
 msgid "pathspec '%s' did not match any files"
 msgstr "sökvägsangivelsen \"%s\" motsvarade inte några filer"
@@ -1710,127 +1781,127 @@ msgstr "sökvägsangivelsen \"%s\" motsvarade inte några filer"
 msgid "Could not read the index"
 msgstr "Kunde inte läsa indexet"
 
-#: builtin/add.c:349
+#: builtin/add.c:350
 #, c-format
 msgid "Could not open '%s' for writing."
 msgstr "Kunde inte öppna \"%s\" för skrivning"
 
-#: builtin/add.c:353
+#: builtin/add.c:354
 msgid "Could not write patch"
 msgstr "Kunde inte skriva patch"
 
-#: builtin/add.c:358
+#: builtin/add.c:359
 #, c-format
 msgid "Could not stat '%s'"
 msgstr "Kunde inte ta status på \"%s\""
 
-#: builtin/add.c:360
+#: builtin/add.c:361
 msgid "Empty patch. Aborted."
 msgstr "Tom patch. Avbryter."
 
-#: builtin/add.c:366
+#: builtin/add.c:367
 #, c-format
 msgid "Could not apply '%s'"
 msgstr "Kunde inte tillämpa \"%s\""
 
-#: builtin/add.c:376
+#: builtin/add.c:377
 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:393 builtin/clean.c:161 builtin/fetch.c:78 builtin/mv.c:63
-#: builtin/prune-packed.c:76 builtin/push.c:425 builtin/remote.c:1253
-#: builtin/rm.c:206
+#: builtin/add.c:394 builtin/clean.c:875 builtin/fetch.c:78 builtin/mv.c:63
+#: builtin/prune-packed.c:73 builtin/push.c:451 builtin/remote.c:1253
+#: builtin/rm.c:268
 msgid "dry run"
 msgstr "testkörning"
 
-#: builtin/add.c:394 builtin/apply.c:4409 builtin/check-ignore.c:19
-#: builtin/commit.c:1152 builtin/count-objects.c:95 builtin/fsck.c:613
-#: builtin/log.c:1518 builtin/mv.c:62 builtin/read-tree.c:112
+#: builtin/add.c:395 builtin/apply.c:4410 builtin/check-ignore.c:19
+#: builtin/commit.c:1220 builtin/count-objects.c:95 builtin/fsck.c:613
+#: builtin/log.c:1573 builtin/mv.c:62 builtin/read-tree.c:113
 msgid "be verbose"
 msgstr "var pratsam"
 
-#: builtin/add.c:396
+#: builtin/add.c:397
 msgid "interactive picking"
 msgstr "plocka interaktivt"
 
-#: builtin/add.c:397 builtin/checkout.c:1063 builtin/reset.c:258
+#: builtin/add.c:398 builtin/checkout.c:1073 builtin/reset.c:261
 msgid "select hunks interactively"
 msgstr "välj stycken interaktivt"
 
-#: builtin/add.c:398
+#: builtin/add.c:399
 msgid "edit current diff and apply"
 msgstr "redigera aktuell diff och applicera"
 
-#: builtin/add.c:399
+#: builtin/add.c:400
 msgid "allow adding otherwise ignored files"
 msgstr "tillåt lägga till annars ignorerade filer"
 
-#: builtin/add.c:400
+#: builtin/add.c:401
 msgid "update tracked files"
 msgstr "uppdatera spårade filer"
 
-#: builtin/add.c:401
+#: builtin/add.c:402
 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:402
+#: builtin/add.c:403
 msgid "add changes from all tracked and untracked files"
 msgstr "lägg till ändringar från alla spårade och ospårade filer"
 
 #. takes no arguments
-#: builtin/add.c:405
+#: builtin/add.c:406
 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:407
+#: builtin/add.c:408
 msgid "don't add, only refresh the index"
 msgstr "lägg inte till, uppdatera endast indexet"
 
-#: builtin/add.c:408
+#: builtin/add.c:409
 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:409
+#: builtin/add.c:410
 msgid "check if - even missing - files are ignored in dry run"
 msgstr "se om - även saknade - filer ignoreras i testkörning"
 
-#: builtin/add.c:431
+#: builtin/add.c:432
 #, c-format
 msgid "Use -f if you really want to add them.\n"
 msgstr "Använd -f om du verkligen vill lägga till dem.\n"
 
-#: builtin/add.c:432
+#: builtin/add.c:433
 msgid "no files added"
 msgstr "inga filer har lagts till"
 
-#: builtin/add.c:438
+#: builtin/add.c:439
 msgid "adding files failed"
 msgstr "misslyckades lägga till filer"
 
-#: builtin/add.c:477
+#: builtin/add.c:478
 msgid "-A and -u are mutually incompatible"
 msgstr "-A och -u är ömsesidigt inkompatibla"
 
-#: builtin/add.c:495
+#: builtin/add.c:496
 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:525
+#: builtin/add.c:526
 #, c-format
 msgid "Nothing specified, nothing added.\n"
 msgstr "Inget angivet, inget tillagt.\n"
 
-#: builtin/add.c:526
+#: builtin/add.c:527
 #, c-format
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Kanske menade du att skriva \"git add .\"?\n"
 
-#: builtin/add.c:532 builtin/check-ignore.c:66 builtin/clean.c:204
-#: builtin/commit.c:293 builtin/mv.c:82 builtin/rm.c:235
+#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:919
+#: builtin/commit.c:312 builtin/mv.c:82 builtin/rm.c:297
 msgid "index file corrupt"
 msgstr "indexfilen trasig"
 
-#: builtin/add.c:604 builtin/apply.c:4505 builtin/mv.c:229 builtin/rm.c:370
+#: builtin/add.c:605 builtin/apply.c:4506 builtin/mv.c:229 builtin/rm.c:432
 msgid "Unable to write new index file"
 msgstr "Kunde inte skriva ny indexfil"
 
@@ -2014,293 +2085,293 @@ msgstr "patch misslyckades: %s:%ld"
 msgid "cannot checkout %s"
 msgstr "kan inte checka ut %s"
 
-#: builtin/apply.c:3140 builtin/apply.c:3149 builtin/apply.c:3193
+#: builtin/apply.c:3140 builtin/apply.c:3149 builtin/apply.c:3194
 #, c-format
 msgid "read of %s failed"
 msgstr "misslyckades läsa %s"
 
-#: builtin/apply.c:3173 builtin/apply.c:3395
+#: builtin/apply.c:3174 builtin/apply.c:3396
 #, c-format
 msgid "path %s has been renamed/deleted"
 msgstr "sökvägen %s har ändrat namn/tagits bort"
 
-#: builtin/apply.c:3254 builtin/apply.c:3409
+#: builtin/apply.c:3255 builtin/apply.c:3410
 #, c-format
 msgid "%s: does not exist in index"
 msgstr "%s: finns inte i indexet"
 
-#: builtin/apply.c:3258 builtin/apply.c:3401 builtin/apply.c:3423
+#: builtin/apply.c:3259 builtin/apply.c:3402 builtin/apply.c:3424
 #, c-format
 msgid "%s: %s"
 msgstr "%s: %s"
 
-#: builtin/apply.c:3263 builtin/apply.c:3417
+#: builtin/apply.c:3264 builtin/apply.c:3418
 #, c-format
 msgid "%s: does not match index"
 msgstr "%s: motsvarar inte indexet"
 
-#: builtin/apply.c:3365
+#: builtin/apply.c:3366
 msgid "removal patch leaves file contents"
 msgstr "patch för borttagning lämnar kvar filinnehåll"
 
-#: builtin/apply.c:3434
+#: builtin/apply.c:3435
 #, c-format
 msgid "%s: wrong type"
 msgstr "%s: fel typ"
 
-#: builtin/apply.c:3436
+#: builtin/apply.c:3437
 #, c-format
 msgid "%s has type %o, expected %o"
 msgstr "%s har typen %o, förväntade %o"
 
-#: builtin/apply.c:3537
+#: builtin/apply.c:3538
 #, c-format
 msgid "%s: already exists in index"
 msgstr "%s: finns redan i indexet"
 
-#: builtin/apply.c:3540
+#: builtin/apply.c:3541
 #, c-format
 msgid "%s: already exists in working directory"
 msgstr "%s: finns redan i arbetskatalogen"
 
-#: builtin/apply.c:3560
+#: builtin/apply.c:3561
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o)"
 msgstr "nytt läge (%o) för %s motsvarar inte gammalt läge (%o)"
 
-#: builtin/apply.c:3565
+#: builtin/apply.c:3566
 #, c-format
 msgid "new mode (%o) of %s does not match old mode (%o) of %s"
 msgstr "nytt läge (%o) för %s motsvarar inte gammalt läge (%o) för %s"
 
-#: builtin/apply.c:3573
+#: builtin/apply.c:3574
 #, c-format
 msgid "%s: patch does not apply"
 msgstr "%s: patchen kan inte tillämpas"
 
-#: builtin/apply.c:3586
+#: builtin/apply.c:3587
 #, c-format
 msgid "Checking patch %s..."
 msgstr "Kontrollerar patchen %s..."
 
-#: builtin/apply.c:3679 builtin/checkout.c:216 builtin/reset.c:124
+#: builtin/apply.c:3680 builtin/checkout.c:216 builtin/reset.c:127
 #, c-format
 msgid "make_cache_entry failed for path '%s'"
 msgstr "make_cache_entry misslyckades för sökvägen \"%s\""
 
-#: builtin/apply.c:3822
+#: builtin/apply.c:3823
 #, c-format
 msgid "unable to remove %s from index"
 msgstr "kan inte ta bort %s från indexet"
 
-#: builtin/apply.c:3850
+#: builtin/apply.c:3851
 #, c-format
-msgid "corrupt patch for subproject %s"
-msgstr "trasig patch för underprojektet %s"
+msgid "corrupt patch for submodule %s"
+msgstr "trasig patch för undermodulen %s"
 
-#: builtin/apply.c:3854
+#: builtin/apply.c:3855
 #, c-format
 msgid "unable to stat newly created file '%s'"
 msgstr "kan inte ta status på nyligen skapade filen \"%s\""
 
-#: builtin/apply.c:3859
+#: builtin/apply.c:3860
 #, c-format
 msgid "unable to create backing store for newly created file %s"
 msgstr "kan inte skapa säkerhetsminne för nyligen skapade filen %s"
 
-#: builtin/apply.c:3862 builtin/apply.c:3970
+#: builtin/apply.c:3863 builtin/apply.c:3971
 #, c-format
 msgid "unable to add cache entry for %s"
 msgstr "kan inte lägga till cachepost för %s"
 
-#: builtin/apply.c:3895
+#: builtin/apply.c:3896
 #, c-format
 msgid "closing file '%s'"
 msgstr "stänger filen \"%s\""
 
-#: builtin/apply.c:3944
+#: builtin/apply.c:3945
 #, c-format
 msgid "unable to write file '%s' mode %o"
 msgstr "kan inte skriva filen \"%s\" läge %o"
 
-#: builtin/apply.c:4031
+#: builtin/apply.c:4032
 #, c-format
 msgid "Applied patch %s cleanly."
 msgstr "Tillämpade patchen %s rent."
 
-#: builtin/apply.c:4039
+#: builtin/apply.c:4040
 msgid "internal error"
 msgstr "internt fel"
 
 #. Say this even without --verbose
-#: builtin/apply.c:4042
+#: builtin/apply.c:4043
 #, c-format
 msgid "Applying patch %%s with %d reject..."
 msgid_plural "Applying patch %%s with %d rejects..."
 msgstr[0] "Tillämpade patchen %%s med %d refuserad..."
 msgstr[1] "Tillämpade patchen %%s med %d refuserade..."
 
-#: builtin/apply.c:4052
+#: builtin/apply.c:4053
 #, c-format
 msgid "truncating .rej filename to %.*s.rej"
 msgstr "trunkerar .rej-filnamnet till %.*s.rej"
 
-#: builtin/apply.c:4073
+#: builtin/apply.c:4074
 #, c-format
 msgid "Hunk #%d applied cleanly."
 msgstr "Stycke %d tillämpades rent."
 
-#: builtin/apply.c:4076
+#: builtin/apply.c:4077
 #, c-format
 msgid "Rejected hunk #%d."
 msgstr "Refuserar stycke %d."
 
-#: builtin/apply.c:4226
+#: builtin/apply.c:4227
 msgid "unrecognized input"
 msgstr "indata känns inte igen"
 
-#: builtin/apply.c:4237
+#: builtin/apply.c:4238
 msgid "unable to read index file"
 msgstr "kan inte läsa indexfilen"
 
-#: builtin/apply.c:4356 builtin/apply.c:4359 builtin/clone.c:92
+#: builtin/apply.c:4357 builtin/apply.c:4360 builtin/clone.c:91
 #: builtin/fetch.c:63
 msgid "path"
 msgstr "sökväg"
 
-#: builtin/apply.c:4357
+#: builtin/apply.c:4358
 msgid "don't apply changes matching the given path"
 msgstr "tillämpa inte ändringar som motsvarar given sökväg"
 
-#: builtin/apply.c:4360
+#: builtin/apply.c:4361
 msgid "apply changes matching the given path"
 msgstr "tillämpa ändringar som motsvarar given sökväg"
 
-#: builtin/apply.c:4362
+#: builtin/apply.c:4363
 msgid "num"
 msgstr "antal"
 
-#: builtin/apply.c:4363
+#: builtin/apply.c:4364
 msgid "remove <num> leading slashes from traditional diff paths"
 msgstr "ta bort <antal> inledande snedstreck från traditionella diff-sökvägar"
 
-#: builtin/apply.c:4366
+#: builtin/apply.c:4367
 msgid "ignore additions made by the patch"
 msgstr "ignorera tillägg gjorda av patchen"
 
-#: builtin/apply.c:4368
+#: builtin/apply.c:4369
 msgid "instead of applying the patch, output diffstat for the input"
 msgstr "istället för att tillämpa patchen, skriv ut diffstat för indata"
 
-#: builtin/apply.c:4372
+#: builtin/apply.c:4373
 msgid "show number of added and deleted lines in decimal notation"
 msgstr "visa antal tillagda och borttagna rader decimalt"
 
-#: builtin/apply.c:4374
+#: builtin/apply.c:4375
 msgid "instead of applying the patch, output a summary for the input"
 msgstr "istället för att tillämpa patchen, skriv ut en summering av indata"
 
-#: builtin/apply.c:4376
+#: builtin/apply.c:4377
 msgid "instead of applying the patch, see if the patch is applicable"
 msgstr "istället för att tillämpa patchen, se om patchen kan tillämpas"
 
-#: builtin/apply.c:4378
+#: builtin/apply.c:4379
 msgid "make sure the patch is applicable to the current index"
 msgstr "se till att patchen kan tillämpas på aktuellt index"
 
-#: builtin/apply.c:4380
+#: builtin/apply.c:4381
 msgid "apply a patch without touching the working tree"
 msgstr "tillämpa en patch utan att röra arbetskatalogen"
 
-#: builtin/apply.c:4382
+#: builtin/apply.c:4383
 msgid "also apply the patch (use with --stat/--summary/--check)"
 msgstr "tillämpa också patchen (använd med --stat/--summary/--check)"
 
-#: builtin/apply.c:4384
+#: builtin/apply.c:4385
 msgid "attempt three-way merge if a patch does not apply"
 msgstr "försök en trevägssammanslagning om patchen inte kan tillämpas"
 
-#: builtin/apply.c:4386
+#: builtin/apply.c:4387
 msgid "build a temporary index based on embedded index information"
 msgstr "bygg ett temporärt index baserat på inbyggd indexinformation"
 
-#: builtin/apply.c:4388 builtin/checkout-index.c:197 builtin/ls-files.c:456
+#: builtin/apply.c:4389 builtin/checkout-index.c:197 builtin/ls-files.c:462
 msgid "paths are separated with NUL character"
 msgstr "sökvägar avdelas med NUL-tecken"
 
-#: builtin/apply.c:4391
+#: builtin/apply.c:4392
 msgid "ensure at least <n> lines of context match"
 msgstr "se till att åtminstone <n> rader sammanhang är lika"
 
-#: builtin/apply.c:4392
+#: builtin/apply.c:4393
 msgid "action"
 msgstr "åtgärd"
 
-#: builtin/apply.c:4393
+#: builtin/apply.c:4394
 msgid "detect new or modified lines that have whitespace errors"
 msgstr "detektera nya eller ändrade rader som har fel i blanktecken"
 
-#: builtin/apply.c:4396 builtin/apply.c:4399
+#: builtin/apply.c:4397 builtin/apply.c:4400
 msgid "ignore changes in whitespace when finding context"
 msgstr "ignorera ändringar i blanktecken för sammanhang"
 
-#: builtin/apply.c:4402
+#: builtin/apply.c:4403
 msgid "apply the patch in reverse"
 msgstr "tillämpa patchen baklänges"
 
-#: builtin/apply.c:4404
+#: builtin/apply.c:4405
 msgid "don't expect at least one line of context"
 msgstr "förvänta inte minst en rad sammanhang"
 
-#: builtin/apply.c:4406
+#: builtin/apply.c:4407
 msgid "leave the rejected hunks in corresponding *.rej files"
 msgstr "lämna refuserade stycken i motsvarande *.rej-filer"
 
-#: builtin/apply.c:4408
+#: builtin/apply.c:4409
 msgid "allow overlapping hunks"
 msgstr "tillåt överlappande stycken"
 
-#: builtin/apply.c:4411
+#: builtin/apply.c:4412
 msgid "tolerate incorrectly detected missing new-line at the end of file"
 msgstr "tolerera felaktigt detekterade saknade nyradstecken vid filslut"
 
-#: builtin/apply.c:4414
+#: builtin/apply.c:4415
 msgid "do not trust the line counts in the hunk headers"
 msgstr "lite inte på antalet linjer i styckehuvuden"
 
-#: builtin/apply.c:4416
+#: builtin/apply.c:4417
 msgid "root"
 msgstr "rot"
 
-#: builtin/apply.c:4417
+#: builtin/apply.c:4418
 msgid "prepend <root> to all filenames"
 msgstr "lägg till <rot> i alla filnamn"
 
-#: builtin/apply.c:4439
+#: builtin/apply.c:4440
 msgid "--3way outside a repository"
 msgstr "--3way utanför arkiv"
 
-#: builtin/apply.c:4447
+#: builtin/apply.c:4448
 msgid "--index outside a repository"
 msgstr "--index utanför arkiv"
 
-#: builtin/apply.c:4450
+#: builtin/apply.c:4451
 msgid "--cached outside a repository"
 msgstr "--cached utanför arkiv"
 
-#: builtin/apply.c:4466
+#: builtin/apply.c:4467
 #, c-format
 msgid "can't open patch '%s'"
 msgstr "kan inte öppna patchen \"%s\""
 
-#: builtin/apply.c:4480
+#: builtin/apply.c:4481
 #, c-format
 msgid "squelched %d whitespace error"
 msgid_plural "squelched %d whitespace errors"
 msgstr[0] "undertryckte %d fel i blanksteg"
 msgstr[1] "undertryckte %d fel i blanksteg"
 
-#: builtin/apply.c:4486 builtin/apply.c:4496
+#: builtin/apply.c:4487 builtin/apply.c:4497
 #, c-format
 msgid "%d line adds whitespace errors."
 msgid_plural "%d lines add whitespace errors."
@@ -2354,103 +2425,103 @@ msgstr "utför 'git bisect next'"
 msgid "update BISECT_HEAD instead of checking out the current commit"
 msgstr "uppdatera BISECT_HEAD istället för att checka ut aktuell incheckning"
 
-#: builtin/blame.c:25
+#: builtin/blame.c:26
 msgid "git blame [options] [rev-opts] [rev] [--] file"
 msgstr "git blame [flaggor] [rev-flaggor] [rev] [--] fil"
 
-#: builtin/blame.c:30
+#: builtin/blame.c:31
 msgid "[rev-opts] are documented in git-rev-list(1)"
 msgstr "[rev-flaggor] dokumenteras i git-rev-list(1)"
 
-#: builtin/blame.c:2355
+#: builtin/blame.c:2276
 msgid "Show blame entries as we find them, incrementally"
 msgstr "Visa klandringsposter när vi hittar dem, interaktivt"
 
-#: builtin/blame.c:2356
+#: builtin/blame.c:2277
 msgid "Show blank SHA-1 for boundary commits (Default: off)"
 msgstr "Visa blank SHA-1 för gränsincheckningar (Standard: av)"
 
-#: builtin/blame.c:2357
+#: builtin/blame.c:2278
 msgid "Do not treat root commits as boundaries (Default: off)"
 msgstr "Behandla inte rotincheckningar som gränser (Standard: av)"
 
-#: builtin/blame.c:2358
+#: builtin/blame.c:2279
 msgid "Show work cost statistics"
 msgstr "Visa statistik över arbetskostnad"
 
-#: builtin/blame.c:2359
+#: builtin/blame.c:2280
 msgid "Show output score for blame entries"
 msgstr "Visa utdatapoäng för klandringsposter"
 
-#: builtin/blame.c:2360
+#: builtin/blame.c:2281
 msgid "Show original filename (Default: auto)"
 msgstr "Visa originalfilnamn (Standard: auto)"
 
-#: builtin/blame.c:2361
+#: builtin/blame.c:2282
 msgid "Show original linenumber (Default: off)"
 msgstr "Visa ursprungligt radnummer (Standard: av)"
 
-#: builtin/blame.c:2362
+#: builtin/blame.c:2283
 msgid "Show in a format designed for machine consumption"
 msgstr "Visa i ett format avsett för maskinkonsumtion"
 
-#: builtin/blame.c:2363
+#: builtin/blame.c:2284
 msgid "Show porcelain format with per-line commit information"
 msgstr "Visa porslinsformat med per-rad-incheckningsinformation"
 
-#: builtin/blame.c:2364
+#: builtin/blame.c:2285
 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:2365
+#: builtin/blame.c:2286
 msgid "Show raw timestamp (Default: off)"
 msgstr "Visa rå tidsstämpel (Standard: av)"
 
-#: builtin/blame.c:2366
+#: builtin/blame.c:2287
 msgid "Show long commit SHA1 (Default: off)"
 msgstr "Visa lång inchecknings-SHA1 (Standard: av)"
 
-#: builtin/blame.c:2367
+#: builtin/blame.c:2288
 msgid "Suppress author name and timestamp (Default: off)"
 msgstr "Undertryck författarnamn och tidsstämpel (Standard: av)"
 
-#: builtin/blame.c:2368
+#: builtin/blame.c:2289
 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:2369
+#: builtin/blame.c:2290
 msgid "Ignore whitespace differences"
 msgstr "Ignorera ändringar i blanksteg"
 
-#: builtin/blame.c:2370
+#: builtin/blame.c:2291
 msgid "Spend extra cycles to find better match"
 msgstr "Slösa extra cykler med att hitta bättre träff"
 
-#: builtin/blame.c:2371
+#: builtin/blame.c:2292
 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:2372
+#: builtin/blame.c:2293
 msgid "Use <file>'s contents as the final image"
 msgstr "Använd <fil>s innehåll som slutgiltig bild"
 
-#: builtin/blame.c:2373 builtin/blame.c:2374
+#: builtin/blame.c:2294 builtin/blame.c:2295
 msgid "score"
 msgstr "poäng"
 
-#: builtin/blame.c:2373
+#: builtin/blame.c:2294
 msgid "Find line copies within and across files"
 msgstr "Hitta kopierade rader inuti och mellan filer"
 
-#: builtin/blame.c:2374
+#: builtin/blame.c:2295
 msgid "Find line movements within and across files"
 msgstr "Hitta flyttade rader inuti och mellan filer"
 
-#: builtin/blame.c:2375
+#: builtin/blame.c:2296
 msgid "n,m"
 msgstr "n,m"
 
-#: builtin/blame.c:2375
+#: builtin/blame.c:2296
 msgid "Process only line range n,m, counting from 1"
 msgstr "Behandla endast radintervallet n,m, med början på 1"
 
@@ -2683,8 +2754,8 @@ msgid "act on remote-tracking branches"
 msgstr "arbeta på fjärrspårande grenar"
 
 #: builtin/branch.c:805 builtin/branch.c:811 builtin/branch.c:832
-#: builtin/branch.c:838 builtin/commit.c:1368 builtin/commit.c:1369
-#: builtin/commit.c:1370 builtin/commit.c:1371 builtin/tag.c:468
+#: builtin/branch.c:838 builtin/commit.c:1433 builtin/commit.c:1434
+#: builtin/commit.c:1435 builtin/commit.c:1436 builtin/tag.c:468
 msgid "commit"
 msgstr "incheckning"
 
@@ -2748,7 +2819,7 @@ msgstr "visa grenar i spalter"
 msgid "Failed to resolve HEAD as a valid ref."
 msgstr "Misslyckades slå upp HEAD som giltig referens"
 
-#: builtin/branch.c:860 builtin/clone.c:619
+#: builtin/branch.c:860 builtin/clone.c:630
 msgid "HEAD not found below refs/heads!"
 msgstr "HEAD hittades inte under refs/heads!"
 
@@ -2870,43 +2941,43 @@ msgstr "Behöver ett arkiv för att skapa ett paket (bundle)."
 msgid "Need a repository to unbundle."
 msgstr "Behöver ett arkiv för att packa upp ett paket (bundle)."
 
-#: builtin/cat-file.c:176
+#: builtin/cat-file.c:285
 msgid "git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>"
 msgstr "git cat-file (-t|-s|-e|-p|<typ>|--textconv) <objekt>"
 
-#: builtin/cat-file.c:177
+#: builtin/cat-file.c:286
 msgid "git cat-file (--batch|--batch-check) < <list_of_objects>"
 msgstr "git cat-file (--batch|--batch-check) < <objektlista>"
 
-#: builtin/cat-file.c:195
+#: builtin/cat-file.c:323
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<typ> kan vara en av: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:196
+#: builtin/cat-file.c:324
 msgid "show object type"
 msgstr "visa objekttyp"
 
-#: builtin/cat-file.c:197
+#: builtin/cat-file.c:325
 msgid "show object size"
 msgstr "visa objektstorlek"
 
-#: builtin/cat-file.c:199
+#: builtin/cat-file.c:327
 msgid "exit with zero when there's no error"
 msgstr "avsluta med noll när det inte uppstått något fel"
 
-#: builtin/cat-file.c:200
+#: builtin/cat-file.c:328
 msgid "pretty-print object's content"
 msgstr "visa objektets innehåll snyggt"
 
-#: builtin/cat-file.c:202
+#: builtin/cat-file.c:330
 msgid "for blob objects, run textconv on object's content"
 msgstr "för blob-objekt, kör textconv på objektets innehåll"
 
-#: builtin/cat-file.c:204
+#: builtin/cat-file.c:332
 msgid "show info and content of objects fed from the standard input"
 msgstr "visa information och innehåll för objekt som listas på standard in"
 
-#: builtin/cat-file.c:207
+#: builtin/cat-file.c:335
 msgid "show info about objects fed from the standard input"
 msgstr "visa information för objekt som listas på standard in"
 
@@ -2934,30 +3005,55 @@ msgstr "läs filnamn från standard in"
 msgid "input paths are terminated by a null character"
 msgstr "sökvägar avdelas med null-tecken"
 
-#: builtin/check-ignore.c:18 builtin/checkout.c:1044 builtin/gc.c:177
+#: builtin/check-ignore.c:18 builtin/checkout.c:1054 builtin/gc.c:177
 msgid "suppress progress reporting"
 msgstr "undertryck förloppsrapportering"
 
-#: builtin/check-ignore.c:146
+#: builtin/check-ignore.c:26
+msgid "show non-matching input paths"
+msgstr "visa indatasökvägar som inte träffas"
+
+#: builtin/check-ignore.c:143
 msgid "cannot specify pathnames with --stdin"
 msgstr "kan inte ange sökvägsnamn med --stdin"
 
-#: builtin/check-ignore.c:149
+#: builtin/check-ignore.c:146
 msgid "-z only makes sense with --stdin"
 msgstr "-z kan endast användas tillsammans med --stdin"
 
-#: builtin/check-ignore.c:151
+#: builtin/check-ignore.c:148
 msgid "no path specified"
 msgstr "ingen sökväg angavs"
 
-#: builtin/check-ignore.c:155
+#: builtin/check-ignore.c:152
 msgid "--quiet is only valid with a single pathname"
 msgstr "--quiet kan endast användas med ett enkelt sökvägsnamn"
 
-#: builtin/check-ignore.c:157
+#: builtin/check-ignore.c:154
 msgid "cannot have both --quiet and --verbose"
 msgstr "kan inte använda både --quiet och --verbose"
 
+#: builtin/check-ignore.c:157
+msgid "--non-matching is only valid with --verbose"
+msgstr "--non-matching är endast giltig med --verbose"
+
+#: builtin/check-mailmap.c:8
+msgid "git check-mailmap [options] <contact>..."
+msgstr "git check-mailmap [flaggor] <kontakt>..."
+
+#: builtin/check-mailmap.c:13
+msgid "also read contacts from stdin"
+msgstr "läs även kontakter från standard in"
+
+#: builtin/check-mailmap.c:24
+#, c-format
+msgid "unable to parse contact: %s"
+msgstr "kunde inte tolka kontakt: %s"
+
+#: builtin/check-mailmap.c:47
+msgid "no contacts specified"
+msgstr "inga kontakter angavs"
+
 #: builtin/checkout-index.c:126
 msgid "git checkout-index [options] [--] [<file>...]"
 msgstr "git checkout-index [flaggor] [--] [<fil>...]"
@@ -3074,42 +3170,42 @@ msgstr "du måste lösa ditt befintliga index först"
 msgid "Can not do reflog for '%s'\n"
 msgstr "Kan inte skapa referenslog för \"%s\"\n"
 
-#: builtin/checkout.c:634
+#: builtin/checkout.c:639
 msgid "HEAD is now at"
 msgstr "HEAD är nu på"
 
-#: builtin/checkout.c:641
+#: builtin/checkout.c:646
 #, c-format
 msgid "Reset branch '%s'\n"
 msgstr "Återställ gren \"%s\"\n"
 
-#: builtin/checkout.c:644
+#: builtin/checkout.c:649
 #, c-format
 msgid "Already on '%s'\n"
 msgstr "Redan på \"%s\"\n"
 
-#: builtin/checkout.c:648
+#: builtin/checkout.c:653
 #, c-format
 msgid "Switched to and reset branch '%s'\n"
 msgstr "Växlade till och nollställde grenen \"%s\"\n"
 
-#: builtin/checkout.c:650 builtin/checkout.c:987
+#: builtin/checkout.c:655 builtin/checkout.c:997
 #, c-format
 msgid "Switched to a new branch '%s'\n"
 msgstr "Växlade till en ny gren \"%s\"\n"
 
-#: builtin/checkout.c:652
+#: builtin/checkout.c:657
 #, c-format
 msgid "Switched to branch '%s'\n"
 msgstr "Växlade till grenen \"%s\"\n"
 
-#: builtin/checkout.c:708
+#: builtin/checkout.c:713
 #, c-format
 msgid " ... and %d more.\n"
 msgstr " ... och %d till.\n"
 
 #. The singular version
-#: builtin/checkout.c:714
+#: builtin/checkout.c:719
 #, c-format
 msgid ""
 "Warning: you are leaving %d commit behind, not connected to\n"
@@ -3132,7 +3228,7 @@ msgstr[1] ""
 "\n"
 "%s\n"
 
-#: builtin/checkout.c:732
+#: builtin/checkout.c:737
 #, c-format
 msgid ""
 "If you want to keep them by creating a new branch, this may be a good time\n"
@@ -3147,136 +3243,136 @@ msgstr ""
 " git branch nytt_grennamn %s\n"
 "\n"
 
-#: builtin/checkout.c:762
+#: builtin/checkout.c:767
 msgid "internal error in revision walk"
 msgstr "internt fel vid genomgång av revisioner (revision walk)"
 
-#: builtin/checkout.c:766
+#: builtin/checkout.c:771
 msgid "Previous HEAD position was"
 msgstr "Tidigare position för HEAD var"
 
-#: builtin/checkout.c:793 builtin/checkout.c:982
+#: builtin/checkout.c:798 builtin/checkout.c:992
 msgid "You are on a branch yet to be born"
 msgstr "Du är på en gren som ännu inte är född"
 
 #. case (1)
-#: builtin/checkout.c:918
+#: builtin/checkout.c:928
 #, c-format
 msgid "invalid reference: %s"
 msgstr "felaktig referens: %s"
 
 #. case (1): want a tree
-#: builtin/checkout.c:957
+#: builtin/checkout.c:967
 #, c-format
 msgid "reference is not a tree: %s"
 msgstr "referensen är inte ett träd: %s"
 
-#: builtin/checkout.c:996
+#: builtin/checkout.c:1006
 msgid "paths cannot be used with switching branches"
 msgstr "sökvägar kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:999 builtin/checkout.c:1003
+#: builtin/checkout.c:1009 builtin/checkout.c:1013
 #, c-format
 msgid "'%s' cannot be used with switching branches"
 msgstr "\"%s\" kan inte användas vid byte av gren"
 
-#: builtin/checkout.c:1007 builtin/checkout.c:1010 builtin/checkout.c:1015
-#: builtin/checkout.c:1018
+#: builtin/checkout.c:1017 builtin/checkout.c:1020 builtin/checkout.c:1025
+#: builtin/checkout.c:1028
 #, c-format
 msgid "'%s' cannot be used with '%s'"
 msgstr "\"%s\" kan inte användas med \"%s\""
 
-#: builtin/checkout.c:1023
+#: builtin/checkout.c:1033
 #, c-format
 msgid "Cannot switch branch to a non-commit '%s'"
 msgstr "Kan inte växla gren till icke-incheckningen \"%s\""
 
-#: builtin/checkout.c:1045 builtin/checkout.c:1047 builtin/clone.c:90
+#: builtin/checkout.c:1055 builtin/checkout.c:1057 builtin/clone.c:89
 #: builtin/remote.c:169 builtin/remote.c:171
 msgid "branch"
 msgstr "gren"
 
-#: builtin/checkout.c:1046
+#: builtin/checkout.c:1056
 msgid "create and checkout a new branch"
 msgstr "skapa och checka ut en ny gren"
 
-#: builtin/checkout.c:1048
+#: builtin/checkout.c:1058
 msgid "create/reset and checkout a branch"
 msgstr "skapa/nollställ och checka ut en gren"
 
-#: builtin/checkout.c:1049
+#: builtin/checkout.c:1059
 msgid "create reflog for new branch"
 msgstr "skapa reflogg för ny gren"
 
-#: builtin/checkout.c:1050
+#: builtin/checkout.c:1060
 msgid "detach the HEAD at named commit"
 msgstr "koppla från HEAD vid namngiven incheckning"
 
-#: builtin/checkout.c:1051
+#: builtin/checkout.c:1061
 msgid "set upstream info for new branch"
 msgstr "sätt uppströmsinformation för ny gren"
 
-#: builtin/checkout.c:1053
+#: builtin/checkout.c:1063
 msgid "new branch"
 msgstr "ny gren"
 
-#: builtin/checkout.c:1053
+#: builtin/checkout.c:1063
 msgid "new unparented branch"
 msgstr "ny gren utan förälder"
 
-#: builtin/checkout.c:1054
+#: builtin/checkout.c:1064
 msgid "checkout our version for unmerged files"
 msgstr "checka ut vår version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1056
+#: builtin/checkout.c:1066
 msgid "checkout their version for unmerged files"
 msgstr "checka ut deras version för ej sammanslagna filer"
 
-#: builtin/checkout.c:1058
+#: builtin/checkout.c:1068
 msgid "force checkout (throw away local modifications)"
 msgstr "tvinga utcheckning (kasta bort lokala ändringar)"
 
-#: builtin/checkout.c:1059
+#: builtin/checkout.c:1069
 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:1060 builtin/merge.c:217
+#: builtin/checkout.c:1070 builtin/merge.c:232
 msgid "update ignored files (default)"
 msgstr "uppdatera ignorerade filer (standard)"
 
-#: builtin/checkout.c:1061 builtin/log.c:1158 parse-options.h:245
+#: builtin/checkout.c:1071 builtin/log.c:1208 parse-options.h:249
 msgid "style"
 msgstr "stil"
 
-#: builtin/checkout.c:1062
+#: builtin/checkout.c:1072
 msgid "conflict style (merge or diff3)"
 msgstr "konfliktstil (merge eller diff3)"
 
-#: builtin/checkout.c:1065
+#: builtin/checkout.c:1075
 msgid "do not limit pathspecs to sparse entries only"
 msgstr "begränsa inte sökvägar till endast glesa poster"
 
-#: builtin/checkout.c:1067
+#: builtin/checkout.c:1077
 msgid "second guess 'git checkout no-such-branch'"
 msgstr "förutspå \"git checkout gren-saknas\""
 
-#: builtin/checkout.c:1091
+#: builtin/checkout.c:1101
 msgid "-b, -B and --orphan are mutually exclusive"
 msgstr "-b, -B och --orphan är ömsesidigt uteslutande"
 
-#: builtin/checkout.c:1108
+#: builtin/checkout.c:1118
 msgid "--track needs a branch name"
 msgstr "--track behöver ett namn på en gren"
 
-#: builtin/checkout.c:1115
+#: builtin/checkout.c:1125
 msgid "Missing branch name; try -b"
 msgstr "Grennamn saknas; försök med -b"
 
-#: builtin/checkout.c:1150
+#: builtin/checkout.c:1160
 msgid "invalid path specification"
 msgstr "felaktig sökvägsangivelse"
 
-#: builtin/checkout.c:1157
+#: builtin/checkout.c:1167
 #, c-format
 msgid ""
 "Cannot update paths and switch to branch '%s' at the same time.\n"
@@ -3285,12 +3381,12 @@ msgstr ""
 "Kan inte uppdatera sökvägar och växla till grenen \"%s\" samtidigt.\n"
 "Ville du checka ut \"%s\" som inte kan lösas som en utcheckning?"
 
-#: builtin/checkout.c:1162
+#: builtin/checkout.c:1172
 #, 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:1166
+#: builtin/checkout.c:1176
 msgid ""
 "git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
 "checking out of the index."
@@ -3298,218 +3394,321 @@ msgstr ""
 "git checkout: --ours/--theirs, --force och --merge är inkompatibla när\n"
 "du checkar ut från indexet."
 
-#: builtin/clean.c:20
-msgid "git clean [-d] [-f] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
+#: builtin/clean.c:25
+msgid ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <paths>..."
 msgstr ""
-"git clean [-d] [-f] [-n] [-q] [-e <mönster>] [-x | -X] [--] <sökvägar>..."
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <mönster>] [-x | -X] [--] "
+"<sökvägar>..."
 
-#: builtin/clean.c:24
+#: builtin/clean.c:29
 #, c-format
 msgid "Removing %s\n"
 msgstr "Tar bort %s\n"
 
-#: builtin/clean.c:25
+#: builtin/clean.c:30
 #, c-format
 msgid "Would remove %s\n"
 msgstr "Skulle ta bort %s\n"
 
-#: builtin/clean.c:26
+#: builtin/clean.c:31
 #, c-format
 msgid "Skipping repository %s\n"
 msgstr "Hoppar över arkivet %s\n"
 
-#: builtin/clean.c:27
+#: builtin/clean.c:32
 #, c-format
 msgid "Would skip repository %s\n"
 msgstr "Skulle hoppa över arkivet %s\n"
 
-#: builtin/clean.c:28
+#: builtin/clean.c:33
 #, c-format
 msgid "failed to remove %s"
 msgstr "misslyckades ta bort %s"
 
-#: builtin/clean.c:160
+#: builtin/clean.c:293
+msgid ""
+"Prompt help:\n"
+"1          - select a numbered item\n"
+"foo        - select item based on unique prefix\n"
+"           - (empty) select nothing"
+msgstr ""
+"Kommandohjälp:\n"
+"1          - markera en numrerad post\n"
+"foo        - markera post baserad på unikt prefix\n"
+"           - (tomt) markera ingenting"
+
+#: builtin/clean.c:297
+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"
+msgstr ""
+"Kommandohjälp:\n"
+"1          - markera en ensam post\n"
+"3-5        - markera ett intervall med poster\n"
+"2-3,6-9    - markera flera intervall\n"
+"foo        - markera post baserad på unikt prefix\n"
+"-...       - avmarkera specifika poster\n"
+"*          - välj alla poster\n"
+"           - (tomt) avsluta markering"
+
+#: builtin/clean.c:515
+#, c-format
+msgid "Huh (%s)?"
+msgstr "Vadå (%s)?"
+
+#: builtin/clean.c:658
+#, c-format
+msgid "Input ignore patterns>> "
+msgstr "Ange ignoreringsmönster>>"
+
+#: builtin/clean.c:695
+#, c-format
+msgid "WARNING: Cannot find items matched by: %s"
+msgstr "VARNING: Hittar inte poster som motsvarar: %s"
+
+#: builtin/clean.c:716
+msgid "Select items to delete"
+msgstr "Välj poster att ta bort"
+
+#: builtin/clean.c:756
+#, c-format
+msgid "remove %s? "
+msgstr "ta bort %s?"
+
+#: builtin/clean.c:781
+msgid "Bye."
+msgstr "Hej då."
+
+#: 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 ""
+"clean               - börja städa\n"
+"filter by pattern   - uteslut poster från borttagning\n"
+"select by numbers   - markera poster som ska tas bort med siffror\n"
+"ask each            - bekräfta varje borttagning (som \"rm -i\")\n"
+"quit                - sluta städa\n"
+"help                - denna skärm\n"
+"?                   - hjälp för kommandoval"
+
+#: builtin/clean.c:816
+msgid "*** Commands ***"
+msgstr "*** Kommandon ***"
+
+#: builtin/clean.c:817
+msgid "What now"
+msgstr "Vad nu"
+
+#: builtin/clean.c:825
+msgid "Would remove the following item:"
+msgid_plural "Would remove the following items:"
+msgstr[0] "Skulle ta bort följande post:"
+msgstr[1] "Skulle ta bort följande poster:"
+
+#: builtin/clean.c:842
+msgid "No more files to clean, exiting."
+msgstr "Inga fler filer att städa, avslutar."
+
+#: builtin/clean.c:874
 msgid "do not print names of files removed"
 msgstr "skriv inte ut namn på borttagna filer"
 
-#: builtin/clean.c:162
+#: builtin/clean.c:876
 msgid "force"
 msgstr "tvinga"
 
-#: builtin/clean.c:164
+#: builtin/clean.c:877
+msgid "interactive cleaning"
+msgstr "städa interaktivt"
+
+#: builtin/clean.c:879
 msgid "remove whole directories"
 msgstr "ta bort hela kataloger"
 
-#: builtin/clean.c:165 builtin/describe.c:412 builtin/grep.c:717
-#: builtin/ls-files.c:487 builtin/name-rev.c:231 builtin/show-ref.c:182
+#: builtin/clean.c:880 builtin/describe.c:420 builtin/grep.c:716
+#: builtin/ls-files.c:493 builtin/name-rev.c:315 builtin/show-ref.c:186
 msgid "pattern"
 msgstr "mönster"
 
-#: builtin/clean.c:166
+#: builtin/clean.c:881
 msgid "add <pattern> to ignore rules"
 msgstr "lägg till <mönster> till ignoreringsregler"
 
-#: builtin/clean.c:167
+#: builtin/clean.c:882
 msgid "remove ignored files, too"
 msgstr "ta även bort ignorerade filer"
 
-#: builtin/clean.c:169
+#: builtin/clean.c:884
 msgid "remove only ignored files"
 msgstr "ta endast bort ignorerade filer"
 
-#: builtin/clean.c:187
+#: builtin/clean.c:902
 msgid "-x and -X cannot be used together"
 msgstr "-x och -X kan inte användas samtidigt"
 
-#: builtin/clean.c:191
+#: builtin/clean.c:906
 msgid ""
-"clean.requireForce set to true and neither -n nor -f given; refusing to clean"
+"clean.requireForce set to true and neither -i, -n nor -f given; refusing to "
+"clean"
 msgstr ""
-"clean.requireForce satt till true, men varken -n eller -f angavs; vägrar "
+"clean.requireForce satt till true, men varken -i, -n eller -f angavs; vägrar "
 "städa"
 
-#: builtin/clean.c:194
+#: builtin/clean.c:909
 msgid ""
-"clean.requireForce defaults to true and neither -n nor -f given; refusing to "
-"clean"
+"clean.requireForce defaults to true and neither -i, -n nor -f given; "
+"refusing to clean"
 msgstr ""
-"clean.requireForce har standardvärdet true, men varken -n eller -f angavs; "
-"vägrar städa"
+"clean.requireForce har standardvärdet true och varken -i, -n eller -f "
+"angavs; vägrar städa"
 
-#: builtin/clone.c:37
+#: builtin/clone.c:36
 msgid "git clone [options] [--] <repo> [<dir>]"
 msgstr "git clone [flaggor] [--] <arkiv> [<kat>]"
 
-#: builtin/clone.c:65 builtin/fetch.c:82 builtin/merge.c:214
-#: builtin/push.c:436
+#: builtin/clone.c:64 builtin/fetch.c:82 builtin/merge.c:229
+#: builtin/push.c:462
 msgid "force progress reporting"
 msgstr "tvinga förloppsrapportering"
 
-#: builtin/clone.c:67
+#: builtin/clone.c:66
 msgid "don't create a checkout"
 msgstr "skapa inte någon utcheckning"
 
-#: builtin/clone.c:68 builtin/clone.c:70 builtin/init-db.c:488
+#: builtin/clone.c:67 builtin/clone.c:69 builtin/init-db.c:488
 msgid "create a bare repository"
 msgstr "skapa ett naket (\"bare\") arkiv"
 
-#: builtin/clone.c:73
+#: builtin/clone.c:72
 msgid "create a mirror repository (implies bare)"
 msgstr "skapa ett spegelarkiv (implicerar \"bare\")"
 
-#: builtin/clone.c:75
+#: builtin/clone.c:74
 msgid "to clone from a local repository"
 msgstr "för att klona från ett lokalt arkiv"
 
-#: builtin/clone.c:77
+#: builtin/clone.c:76
 msgid "don't use local hardlinks, always copy"
 msgstr "skapa inte lokala hårda länkar, kopiera alltid"
 
-#: builtin/clone.c:79
+#: builtin/clone.c:78
 msgid "setup as shared repository"
 msgstr "skapa som ett delat arkiv"
 
-#: builtin/clone.c:81 builtin/clone.c:83
+#: builtin/clone.c:80 builtin/clone.c:82
 msgid "initialize submodules in the clone"
 msgstr "initiera undermoduler i klonen"
 
-#: builtin/clone.c:84 builtin/init-db.c:485
+#: builtin/clone.c:83 builtin/init-db.c:485
 msgid "template-directory"
 msgstr "mallkatalog"
 
-#: builtin/clone.c:85 builtin/init-db.c:486
+#: builtin/clone.c:84 builtin/init-db.c:486
 msgid "directory from which templates will be used"
 msgstr "katalog att använda mallar från"
 
-#: builtin/clone.c:87
+#: builtin/clone.c:86
 msgid "reference repository"
 msgstr "referensarkiv"
 
-#: builtin/clone.c:88 builtin/column.c:26 builtin/merge-file.c:44
+#: builtin/clone.c:87 builtin/column.c:26 builtin/merge-file.c:44
 msgid "name"
 msgstr "namn"
 
-#: builtin/clone.c:89
+#: builtin/clone.c:88
 msgid "use <name> instead of 'origin' to track upstream"
 msgstr "använd <namn> istället för \"origin\" för att spåra uppströms"
 
-#: builtin/clone.c:91
+#: builtin/clone.c:90
 msgid "checkout <branch> instead of the remote's HEAD"
 msgstr "checka ut <gren> istället för fjärrens HEAD"
 
-#: builtin/clone.c:93
+#: builtin/clone.c:92
 msgid "path to git-upload-pack on the remote"
 msgstr "sökväg till git-upload-pack på fjärren"
 
-#: builtin/clone.c:94 builtin/fetch.c:83 builtin/grep.c:662
+#: builtin/clone.c:93 builtin/fetch.c:83 builtin/grep.c:661
 msgid "depth"
 msgstr "djup"
 
-#: builtin/clone.c:95
+#: builtin/clone.c:94
 msgid "create a shallow clone of that depth"
 msgstr "skapa en grund klon på detta djup"
 
-#: builtin/clone.c:97
+#: builtin/clone.c:96
 msgid "clone only one branch, HEAD or --branch"
 msgstr "klona endast en gren, HEAD eller --branch"
 
-#: builtin/clone.c:98 builtin/init-db.c:494
+#: builtin/clone.c:97 builtin/init-db.c:494
 msgid "gitdir"
 msgstr "gitkat"
 
-#: builtin/clone.c:99 builtin/init-db.c:495
+#: builtin/clone.c:98 builtin/init-db.c:495
 msgid "separate git dir from working tree"
 msgstr "separera gitkatalogen från arbetskatalogen"
 
-#: builtin/clone.c:100
+#: builtin/clone.c:99
 msgid "key=value"
 msgstr "nyckel=värde"
 
-#: builtin/clone.c:101
+#: builtin/clone.c:100
 msgid "set config inside the new repository"
 msgstr "ställ in konfiguration i det nya arkivet"
 
-#: builtin/clone.c:254
+#: builtin/clone.c:253
 #, c-format
 msgid "reference repository '%s' is not a local repository."
 msgstr "referensarkivet \"%s\" är inte ett lokalt arkiv."
 
-#: builtin/clone.c:317
+#: builtin/clone.c:316
 #, c-format
 msgid "failed to create directory '%s'"
 msgstr "misslyckades skapa katalogen \"%s\""
 
-#: builtin/clone.c:319 builtin/diff.c:77
+#: builtin/clone.c:318 builtin/diff.c:77
 #, c-format
 msgid "failed to stat '%s'"
 msgstr "misslyckades ta status på \"%s\""
 
-#: builtin/clone.c:321
+#: builtin/clone.c:320
 #, c-format
 msgid "%s exists and is not a directory"
 msgstr "%s finns och är ingen katalog"
 
-#: builtin/clone.c:335
+#: builtin/clone.c:334
 #, c-format
 msgid "failed to stat %s\n"
 msgstr "misslyckades ta status på %s\n"
 
-#: builtin/clone.c:357
+#: builtin/clone.c:356
 #, c-format
 msgid "failed to create link '%s'"
 msgstr "misslyckades skapa länken \"%s\""
 
-#: builtin/clone.c:361
+#: builtin/clone.c:360
 #, c-format
 msgid "failed to copy file to '%s'"
 msgstr "misslyckades kopiera filen till \"%s\""
 
-#: builtin/clone.c:384
+#: builtin/clone.c:383
 #, c-format
 msgid "done.\n"
 msgstr "klart.\n"
 
-#: builtin/clone.c:397
+#: builtin/clone.c:396
 msgid ""
 "Clone succeeded, but checkout failed.\n"
 "You can inspect what was checked out with 'git status'\n"
@@ -3519,91 +3718,105 @@ msgstr ""
 "Du kan inspektera det som checkades ut med \"git status\"\n"
 "och försöka checka ut igen med \"git checkout -f HEAD\"\n"
 
-#: builtin/clone.c:476
+#: builtin/clone.c:475
 #, c-format
 msgid "Could not find remote branch %s to clone."
 msgstr "Kunde inte hitta fjärrgrenen %s för att klona."
 
-#: builtin/clone.c:550
+#: builtin/clone.c:555
+#, c-format
+msgid "Checking connectivity... "
+msgstr "Kontrollerar anslutning..."
+
+#: builtin/clone.c:558
 msgid "remote did not send all necessary objects"
 msgstr "fjärren sände inte alla nödvändiga objekt"
 
-#: builtin/clone.c:610
+#: builtin/clone.c:560
+#, c-format
+msgid "done\n"
+msgstr "klart\n"
+
+#: builtin/clone.c:621
 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
 msgstr ""
 "HEAD hos fjärren pekar på en obefintlig referens, kan inte checka ut.\n"
 
-#: builtin/clone.c:641
+#: builtin/clone.c:652
 msgid "unable to checkout working tree"
 msgstr "kunde inte checka ut arbetskatalogen"
 
-#: builtin/clone.c:749
+#: builtin/clone.c:760
 msgid "Too many arguments."
 msgstr "För många argument."
 
-#: builtin/clone.c:753
+#: builtin/clone.c:764
 msgid "You must specify a repository to clone."
 msgstr "Du måste ange ett arkiv att klona."
 
-#: builtin/clone.c:764
+#: builtin/clone.c:775
 #, c-format
 msgid "--bare and --origin %s options are incompatible."
 msgstr "flaggorna --bare och --origin %s är inkompatibla."
 
-#: builtin/clone.c:767
+#: builtin/clone.c:778
 msgid "--bare and --separate-git-dir are incompatible."
 msgstr "flaggorna --bare och --separate-git-dir är inkompatibla."
 
-#: builtin/clone.c:780
+#: builtin/clone.c:791
 #, c-format
 msgid "repository '%s' does not exist"
 msgstr "arkivet \"%s\" finns inte"
 
-#: builtin/clone.c:785
+#: builtin/clone.c:796
 msgid "--depth is ignored in local clones; use file:// instead."
 msgstr "--depth ignoreras i lokala kloningar; använd file:// istället"
 
-#: builtin/clone.c:795
+#: builtin/clone.c:798
+msgid "--local is ignored"
+msgstr "--local ignoreras"
+
+#: builtin/clone.c:808
 #, 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:805
+#: builtin/clone.c:818
 #, c-format
 msgid "working tree '%s' already exists."
 msgstr "arbetsträdet \"%s\" finns redan."
 
-#: builtin/clone.c:818 builtin/clone.c:830
+#: builtin/clone.c:831 builtin/clone.c:843
 #, c-format
 msgid "could not create leading directories of '%s'"
 msgstr "kunde inte skapa inledande kataloger för \"%s\""
 
-#: builtin/clone.c:821
+#: builtin/clone.c:834
 #, c-format
 msgid "could not create work tree dir '%s'."
 msgstr "kunde inte skapa arbetskatalogen \"%s\""
 
-#: builtin/clone.c:840
+#: builtin/clone.c:853
 #, c-format
 msgid "Cloning into bare repository '%s'...\n"
 msgstr "Klonar till ett naket arkiv \"%s\"...\n"
 
-#: builtin/clone.c:842
+#: builtin/clone.c:855
 #, c-format
 msgid "Cloning into '%s'...\n"
 msgstr "Klonar till \"%s\"...\n"
 
-#: builtin/clone.c:877
+#: builtin/clone.c:890
 #, c-format
 msgid "Don't know how to clone %s"
 msgstr "Vet inte hur man klonar %s"
 
-#: builtin/clone.c:926
+#: builtin/clone.c:942
 #, c-format
 msgid "Remote branch %s not found in upstream %s"
 msgstr "Fjärrgrenen %s hittades inte i uppströmsarkivet %s"
 
-#: builtin/clone.c:933
+#: builtin/clone.c:949
 msgid "You appear to have cloned an empty repository."
 msgstr "Du verkar ha klonat ett tomt arkiv."
 
@@ -3639,15 +3852,15 @@ msgstr "Spaltfyllnad mellan spalter"
 msgid "--command must be the first argument"
 msgstr "--command måste vara första argument"
 
-#: builtin/commit.c:34
+#: builtin/commit.c:35
 msgid "git commit [options] [--] <pathspec>..."
 msgstr "git commit [flaggor] [--] <sökväg>..."
 
-#: builtin/commit.c:39
+#: builtin/commit.c:40
 msgid "git status [options] [--] <pathspec>..."
 msgstr "git status [flaggor] [--] <sökväg>..."
 
-#: builtin/commit.c:44
+#: builtin/commit.c:45
 msgid ""
 "Your name and email address were configured automatically based\n"
 "on your username and hostname. Please check that they are accurate.\n"
@@ -3672,7 +3885,7 @@ msgstr ""
 "\n"
 "    git commit --amend --reset-author\n"
 
-#: builtin/commit.c:56
+#: builtin/commit.c:57
 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"
@@ -3682,109 +3895,127 @@ msgstr ""
 "blir den tom. Du kan köra kommandot på nytt med --allow-empty, eller\n"
 "så kan du ta bort incheckningen helt med \"git reset HEAD^\".\n"
 
-#: builtin/commit.c:61
+#: builtin/commit.c:62
 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"
-"Otherwise, please use 'git reset'\n"
 msgstr ""
 "Den tidigare \"cherry-pick\":en är nu tom, kanske på grund av en löst\n"
 "konflikt. Om du vill checka in den ändå använder du:\n"
 "\n"
 "    git commit --allow-empty\n"
 "\n"
-"Annars använder du \"git reset\"\n"
 
-#: builtin/commit.c:260
+#: builtin/commit.c:69
+msgid "Otherwise, please use 'git reset'\n"
+msgstr "Använd annars \"git reset\"\n"
+
+#: builtin/commit.c:72
+msgid ""
+"If you wish to skip this commit, use:\n"
+"\n"
+"    git reset\n"
+"\n"
+"Then \"git cherry-pick --continue\" will resume cherry-picking\n"
+"the remaining commits.\n"
+msgstr ""
+"Om du vill hoppa över incheckningen, använd:\n"
+"\n"
+"    git reset\n"
+"\n"
+"\"git cherry-pick --continue\" kommer därefter att återuppta\n"
+"cherry-pick för återstående incheckningar.\n"
+
+#: builtin/commit.c:279
 msgid "failed to unpack HEAD tree object"
 msgstr "misslyckades packa upp HEAD:s trädobjekt"
 
-#: builtin/commit.c:302
+#: builtin/commit.c:321
 msgid "unable to create temporary index"
 msgstr "kunde inte skapa temporär indexfil"
 
-#: builtin/commit.c:308
+#: builtin/commit.c:327
 msgid "interactive add failed"
 msgstr "interaktiv tilläggning misslyckades"
 
-#: builtin/commit.c:341 builtin/commit.c:362 builtin/commit.c:412
+#: builtin/commit.c:360 builtin/commit.c:381 builtin/commit.c:431
 msgid "unable to write new_index file"
 msgstr "kunde inte skriva filen new_index"
 
-#: builtin/commit.c:393
+#: builtin/commit.c:412
 msgid "cannot do a partial commit during a merge."
 msgstr "kan inte utföra en delvis incheckning under en sammanslagning."
 
-#: builtin/commit.c:395
+#: builtin/commit.c:414
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "kan inte utföra en delvis incheckning under en cherry-pick."
 
-#: builtin/commit.c:405
+#: builtin/commit.c:424
 msgid "cannot read the index"
 msgstr "kan inte läsa indexet"
 
-#: builtin/commit.c:425
+#: builtin/commit.c:444
 msgid "unable to write temporary index file"
 msgstr "kunde inte skriva temporär indexfil"
 
-#: builtin/commit.c:513 builtin/commit.c:519
+#: builtin/commit.c:535 builtin/commit.c:541
 #, c-format
 msgid "invalid commit: %s"
 msgstr "felaktig incheckning: %s"
 
-#: builtin/commit.c:542
+#: builtin/commit.c:563
 msgid "malformed --author parameter"
 msgstr "felformad \"--author\"-flagga"
 
-#: builtin/commit.c:562
+#: builtin/commit.c:583
 #, c-format
 msgid "Malformed ident string: '%s'"
 msgstr "Felaktig indragningssträng: \"%s\""
 
-#: builtin/commit.c:600 builtin/commit.c:633 builtin/commit.c:956
+#: builtin/commit.c:621 builtin/commit.c:654 builtin/commit.c:982
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "kunde inte slå upp incheckningen %s"
 
-#: builtin/commit.c:612 builtin/shortlog.c:270
+#: builtin/commit.c:633 builtin/shortlog.c:271
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(läser loggmeddelande från standard in)\n"
 
-#: builtin/commit.c:614
+#: builtin/commit.c:635
 msgid "could not read log from standard input"
 msgstr "kunde inte läsa logg från standard in"
 
-#: builtin/commit.c:618
+#: builtin/commit.c:639
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "kunde inte läsa loggfilen \"%s\""
 
-#: builtin/commit.c:624
+#: builtin/commit.c:645
 msgid "commit has empty message"
 msgstr "incheckningen har ett tomt meddelande"
 
-#: builtin/commit.c:640
+#: builtin/commit.c:661
 msgid "could not read MERGE_MSG"
 msgstr "kunde inte läsa MERGE_MSG"
 
-#: builtin/commit.c:644
+#: builtin/commit.c:665
 msgid "could not read SQUASH_MSG"
 msgstr "kunde inte läsa SQUASH_MSG"
 
-#: builtin/commit.c:648
+#: builtin/commit.c:669
 #, c-format
 msgid "could not read '%s'"
 msgstr "kunde inte läsa \"%s\""
 
-#: builtin/commit.c:709
+#: builtin/commit.c:730
 msgid "could not write commit template"
 msgstr "kunde inte skriva incheckningsmall"
 
-#: builtin/commit.c:720
+#: builtin/commit.c:741
 #, c-format
 msgid ""
 "\n"
@@ -3799,7 +4030,7 @@ msgstr ""
 "\t%s\n"
 "och försöker igen.\n"
 
-#: builtin/commit.c:725
+#: builtin/commit.c:746
 #, c-format
 msgid ""
 "\n"
@@ -3814,7 +4045,7 @@ msgstr ""
 "\t%s\n"
 "och försöker igen.\n"
 
-#: builtin/commit.c:737
+#: builtin/commit.c:758
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -3824,7 +4055,7 @@ msgstr ""
 "med \"%c\" kommer ignoreras, och ett tomt meddelande avbryter "
 "incheckningen.\n"
 
-#: builtin/commit.c:742
+#: builtin/commit.c:763
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -3835,139 +4066,139 @@ msgstr ""
 "med \"%c\" kommer behållas; du kan själv ta bort dem om du vill.\n"
 "Ett tomt meddelande avbryter incheckningen.\n"
 
-#: builtin/commit.c:755
+#: builtin/commit.c:776
 #, c-format
 msgid "%sAuthor:    %s"
 msgstr "%sFörfattare: %s"
 
-#: builtin/commit.c:762
+#: builtin/commit.c:783
 #, c-format
 msgid "%sCommitter: %s"
 msgstr "%sIncheckare: %s"
 
-#: builtin/commit.c:782
+#: builtin/commit.c:803
 msgid "Cannot read index"
 msgstr "Kan inte läsa indexet"
 
-#: builtin/commit.c:819
+#: builtin/commit.c:845
 msgid "Error building trees"
 msgstr "Fel vid byggande av träd"
 
-#: builtin/commit.c:834 builtin/tag.c:359
+#: builtin/commit.c:860 builtin/tag.c:359
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Ange meddelandet en av flaggorna -m eller -F.\n"
 
-#: builtin/commit.c:931
+#: builtin/commit.c:957
 #, c-format
 msgid "No existing author found with '%s'"
 msgstr "Hittade ingen befintlig författare med \"%s\""
 
-#: builtin/commit.c:946 builtin/commit.c:1140
+#: builtin/commit.c:972 builtin/commit.c:1208
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Ogiltigt läge för ospårade filer: \"%s\""
 
-#: builtin/commit.c:976
+#: builtin/commit.c:1009
+msgid "--long and -z are incompatible"
+msgstr "--long och -z är inkompatibla"
+
+#: builtin/commit.c:1039
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Kan inte använda både --reset-author och --author"
 
-#: builtin/commit.c:987
+#: builtin/commit.c:1050
 msgid "You have nothing to amend."
 msgstr "Du har inget att utöka."
 
-#: builtin/commit.c:990
+#: builtin/commit.c:1053
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "Du är i mitten av en sammanslagning -- kan inte utöka."
 
-#: builtin/commit.c:992
+#: builtin/commit.c:1055
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "Du är i mitten av en cherry-pick -- kan inte utöka."
 
-#: builtin/commit.c:995
+#: builtin/commit.c:1058
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Flaggorna --squash och --fixup kan inte användas samtidigt"
 
-#: builtin/commit.c:1005
+#: builtin/commit.c:1068
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Endast en av -c/-C/-F/--fixup kan användas."
 
-#: builtin/commit.c:1007
+#: builtin/commit.c:1070
 msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
 msgstr "Flaggan -m kan inte kombineras med -c/-C/-F/--fixup."
 
-#: builtin/commit.c:1015
+#: builtin/commit.c:1078
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author kan endast användas med -C, -c eller --amend."
 
-#: builtin/commit.c:1032
+#: builtin/commit.c:1095
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Endast en av --include/--only/--all/--interactive/--patch kan användas."
 
-#: builtin/commit.c:1034
+#: builtin/commit.c:1097
 msgid "No paths with --include/--only does not make sense."
 msgstr "Du måste ange sökvägar tillsammans med --include/--only."
 
-#: builtin/commit.c:1036
+#: builtin/commit.c:1099
 msgid "Clever... amending the last one with dirty index."
 msgstr "Smart... utöka den senaste med smutsigt index."
 
-#: builtin/commit.c:1038
+#: builtin/commit.c:1101
 msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
 msgstr "Explicita sökvägar angavs utan -i eller -o; antar --only sökvägar..."
 
-#: builtin/commit.c:1048 builtin/tag.c:575
+#: builtin/commit.c:1111 builtin/tag.c:575
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Felaktigt städningsläge %s"
 
-#: builtin/commit.c:1053
+#: builtin/commit.c:1116
 msgid "Paths with -a does not make sense."
 msgstr "Kan inte ange sökvägar med -a."
 
-#: builtin/commit.c:1059 builtin/commit.c:1194
-msgid "--long and -z are incompatible"
-msgstr "--long och -z är inkompatibla"
-
-#: builtin/commit.c:1154 builtin/commit.c:1390
+#: builtin/commit.c:1222 builtin/commit.c:1455
 msgid "show status concisely"
-msgstr "vis koncis status"
+msgstr "visa koncis status"
 
-#: builtin/commit.c:1156 builtin/commit.c:1392
+#: builtin/commit.c:1224 builtin/commit.c:1457
 msgid "show branch information"
 msgstr "visa information om gren"
 
-#: builtin/commit.c:1158 builtin/commit.c:1394 builtin/push.c:426
+#: builtin/commit.c:1226 builtin/commit.c:1459 builtin/push.c:452
 msgid "machine-readable output"
 msgstr "maskinläsbar utdata"
 
-#: builtin/commit.c:1161 builtin/commit.c:1396
+#: builtin/commit.c:1229 builtin/commit.c:1461
 msgid "show status in long format (default)"
 msgstr "visa status i långt format (standard)"
 
-#: builtin/commit.c:1164 builtin/commit.c:1399
+#: builtin/commit.c:1232 builtin/commit.c:1464
 msgid "terminate entries with NUL"
 msgstr "terminera poster med NUL"
 
-#: builtin/commit.c:1166 builtin/commit.c:1402 builtin/fast-export.c:659
-#: builtin/fast-export.c:662 builtin/tag.c:459
+#: builtin/commit.c:1234 builtin/commit.c:1467 builtin/fast-export.c:667
+#: builtin/fast-export.c:670 builtin/tag.c:459
 msgid "mode"
 msgstr "läge"
 
-#: builtin/commit.c:1167 builtin/commit.c:1402
+#: builtin/commit.c:1235 builtin/commit.c:1467
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "visa ospårade filer, valfria lägen: alla, normal, no. (Standard: all)"
 
-#: builtin/commit.c:1170
+#: builtin/commit.c:1238
 msgid "show ignored files"
 msgstr "visa ignorerade filer"
 
-#: builtin/commit.c:1171 parse-options.h:151
+#: builtin/commit.c:1239 parse-options.h:154
 msgid "when"
 msgstr "när"
 
-#: builtin/commit.c:1172
+#: builtin/commit.c:1240
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -3975,217 +4206,217 @@ msgstr ""
 "ignorera ändringar i undermoduler, valfritt när: all, dirty, untracked. "
 "(Default: all)"
 
-#: builtin/commit.c:1174
+#: builtin/commit.c:1242
 msgid "list untracked files in columns"
 msgstr "visa ospårade filer i spalter"
 
-#: builtin/commit.c:1248
+#: builtin/commit.c:1313
 msgid "couldn't look up newly created commit"
 msgstr "kunde inte slå upp en precis skapad incheckning"
 
-#: builtin/commit.c:1250
+#: builtin/commit.c:1315
 msgid "could not parse newly created commit"
 msgstr "kunde inte tolka en precis skapad incheckning"
 
-#: builtin/commit.c:1291
+#: builtin/commit.c:1356
 msgid "detached HEAD"
 msgstr "frånkopplad HEAD"
 
-#: builtin/commit.c:1293
+#: builtin/commit.c:1358
 msgid " (root-commit)"
 msgstr " (rotincheckning)"
 
-#: builtin/commit.c:1360
+#: builtin/commit.c:1425
 msgid "suppress summary after successful commit"
 msgstr "undertryck sammanfattning efter framgångsrik incheckning"
 
-#: builtin/commit.c:1361
+#: builtin/commit.c:1426
 msgid "show diff in commit message template"
 msgstr "visa diff i mallen för incheckningsmeddelandet"
 
-#: builtin/commit.c:1363
+#: builtin/commit.c:1428
 msgid "Commit message options"
 msgstr "Alternativ för incheckningsmeddelande"
 
-#: builtin/commit.c:1364 builtin/tag.c:457
+#: builtin/commit.c:1429 builtin/tag.c:457
 msgid "read message from file"
 msgstr "läs meddelande från fil"
 
-#: builtin/commit.c:1365
+#: builtin/commit.c:1430
 msgid "author"
 msgstr "författare"
 
-#: builtin/commit.c:1365
+#: builtin/commit.c:1430
 msgid "override author for commit"
 msgstr "överstyr författare för incheckningen"
 
-#: builtin/commit.c:1366 builtin/gc.c:178
+#: builtin/commit.c:1431 builtin/gc.c:178
 msgid "date"
 msgstr "datum"
 
-#: builtin/commit.c:1366
+#: builtin/commit.c:1431
 msgid "override date for commit"
 msgstr "överstyr datum för inchecknignen"
 
-#: builtin/commit.c:1367 builtin/merge.c:208 builtin/notes.c:533
-#: builtin/notes.c:690 builtin/tag.c:455
+#: builtin/commit.c:1432 builtin/merge.c:223 builtin/notes.c:405
+#: builtin/notes.c:562 builtin/tag.c:455
 msgid "message"
 msgstr "meddelande"
 
-#: builtin/commit.c:1367
+#: builtin/commit.c:1432
 msgid "commit message"
 msgstr "incheckningsmeddelande"
 
-#: builtin/commit.c:1368
+#: builtin/commit.c:1433
 msgid "reuse and edit message from specified commit"
 msgstr "återanvänd och redigera meddelande från angiven incheckning"
 
-#: builtin/commit.c:1369
+#: builtin/commit.c:1434
 msgid "reuse message from specified commit"
 msgstr "återanvänd meddelande från angiven incheckning"
 
-#: builtin/commit.c:1370
+#: builtin/commit.c:1435
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 "använd autosquash-formaterat meddelande för att fixa angiven incheckning"
 
-#: builtin/commit.c:1371
+#: builtin/commit.c:1436
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "använd autosquash-formaterat meddelande för att slå ihop med angiven "
 "incheckning"
 
-#: builtin/commit.c:1372
+#: builtin/commit.c:1437
 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:1373 builtin/log.c:1113 builtin/revert.c:109
+#: builtin/commit.c:1438 builtin/log.c:1160 builtin/revert.c:111
 msgid "add Signed-off-by:"
 msgstr "lägg till Signed-off-by:"
 
-#: builtin/commit.c:1374
+#: builtin/commit.c:1439
 msgid "use specified template file"
 msgstr "använd angiven mallfil"
 
-#: builtin/commit.c:1375
+#: builtin/commit.c:1440
 msgid "force edit of commit"
 msgstr "tvinga redigering av incheckning"
 
-#: builtin/commit.c:1376
+#: builtin/commit.c:1441
 msgid "default"
 msgstr "standard"
 
-#: builtin/commit.c:1376 builtin/tag.c:460
+#: builtin/commit.c:1441 builtin/tag.c:460
 msgid "how to strip spaces and #comments from message"
 msgstr "hur blanksteg och #kommentarer skall tas bort från meddelande"
 
-#: builtin/commit.c:1377
+#: builtin/commit.c:1442
 msgid "include status in commit message template"
 msgstr "inkludera status i mallen för incheckningsmeddelandet"
 
-#: builtin/commit.c:1378 builtin/merge.c:215 builtin/tag.c:461
+#: builtin/commit.c:1443 builtin/merge.c:230 builtin/tag.c:461
 msgid "key id"
 msgstr "nyckel-id"
 
-#: builtin/commit.c:1379 builtin/merge.c:216
+#: builtin/commit.c:1444 builtin/merge.c:231
 msgid "GPG sign commit"
 msgstr "GPG-signera incheckning"
 
 #. end commit message options
-#: builtin/commit.c:1382
+#: builtin/commit.c:1447
 msgid "Commit contents options"
 msgstr "Alternativ för incheckningens innehåll"
 
-#: builtin/commit.c:1383
+#: builtin/commit.c:1448
 msgid "commit all changed files"
 msgstr "checka in alla ändrade filer"
 
-#: builtin/commit.c:1384
+#: builtin/commit.c:1449
 msgid "add specified files to index for commit"
 msgstr "lägg till angivna filer till indexet för incheckning"
 
-#: builtin/commit.c:1385
+#: builtin/commit.c:1450
 msgid "interactively add files"
 msgstr "lägg till filer interaktivt"
 
-#: builtin/commit.c:1386
+#: builtin/commit.c:1451
 msgid "interactively add changes"
 msgstr "lägg till ändringar interaktivt"
 
-#: builtin/commit.c:1387
+#: builtin/commit.c:1452
 msgid "commit only specified files"
 msgstr "checka endast in angivna filer"
 
-#: builtin/commit.c:1388
+#: builtin/commit.c:1453
 msgid "bypass pre-commit hook"
 msgstr "förbigå pre-commit-krok"
 
-#: builtin/commit.c:1389
+#: builtin/commit.c:1454
 msgid "show what would be committed"
 msgstr "visa vad som skulle checkas in"
 
-#: builtin/commit.c:1400
+#: builtin/commit.c:1465
 msgid "amend previous commit"
 msgstr "lägg till föregående incheckning"
 
-#: builtin/commit.c:1401
+#: builtin/commit.c:1466
 msgid "bypass post-rewrite hook"
 msgstr "förbigå post-rewrite-krok"
 
-#: builtin/commit.c:1406
+#: builtin/commit.c:1471
 msgid "ok to record an empty change"
 msgstr "ok att registrera en tom ändring"
 
-#: builtin/commit.c:1409
+#: builtin/commit.c:1474
 msgid "ok to record a change with an empty message"
 msgstr "ok att registrera en ändring med tomt meddelande"
 
-#: builtin/commit.c:1441
+#: builtin/commit.c:1507
 msgid "could not parse HEAD commit"
 msgstr "kunde inte tolka HEAD:s incheckning"
 
-#: builtin/commit.c:1479 builtin/merge.c:510
+#: builtin/commit.c:1545 builtin/merge.c:525
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "kunde inte öppna \"%s\" för läsning"
 
-#: builtin/commit.c:1486
+#: builtin/commit.c:1552
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Trasig MERGE_HEAD-fil (%s)"
 
-#: builtin/commit.c:1493
+#: builtin/commit.c:1559
 msgid "could not read MERGE_MODE"
 msgstr "kunde inte läsa MERGE_MODE"
 
-#: builtin/commit.c:1512
+#: builtin/commit.c:1578
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "kunde inte läsa incheckningsmeddelande: %s"
 
-#: builtin/commit.c:1526
+#: builtin/commit.c:1592
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "Avbryter incheckning; meddelandet inte redigerat.\n"
 
-#: builtin/commit.c:1531
+#: builtin/commit.c:1597
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "Avbryter på grund av tomt incheckningsmeddelande.\n"
 
-#: builtin/commit.c:1546 builtin/merge.c:847 builtin/merge.c:872
+#: builtin/commit.c:1612 builtin/merge.c:861 builtin/merge.c:886
 msgid "failed to write commit object"
 msgstr "kunde inte skriva incheckningsobjekt"
 
-#: builtin/commit.c:1567
+#: builtin/commit.c:1633
 msgid "cannot lock HEAD ref"
 msgstr "kunde inte låsa HEAD-referens"
 
-#: builtin/commit.c:1571
+#: builtin/commit.c:1637
 msgid "cannot update HEAD ref"
 msgstr "kunde inte uppdatera HEAD-referens"
 
-#: builtin/commit.c:1582
+#: builtin/commit.c:1648
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full or quota is\n"
@@ -4200,115 +4431,123 @@ msgstr ""
 msgid "git config [options]"
 msgstr "git config [flaggor]"
 
-#: builtin/config.c:51
+#: builtin/config.c:52
 msgid "Config file location"
 msgstr "Konfigurationsfilens plats"
 
-#: builtin/config.c:52
+#: builtin/config.c:53
 msgid "use global config file"
 msgstr "använd global konfigurationsfil"
 
-#: builtin/config.c:53
+#: builtin/config.c:54
 msgid "use system config file"
 msgstr "använd systemets konfigurationsfil"
 
-#: builtin/config.c:54
+#: builtin/config.c:55
 msgid "use repository config file"
 msgstr "använd arkivets konfigurationsfil"
 
-#: builtin/config.c:55
+#: builtin/config.c:56
 msgid "use given config file"
 msgstr "använd angiven konfigurationsil"
 
-#: builtin/config.c:56
+#: builtin/config.c:57
+msgid "blob-id"
+msgstr "blob-id"
+
+#: builtin/config.c:57
+msgid "read config from given blob object"
+msgstr "läs konfiguration från givet blob-objekt"
+
+#: builtin/config.c:58
 msgid "Action"
 msgstr "Åtgärd"
 
-#: builtin/config.c:57
+#: builtin/config.c:59
 msgid "get value: name [value-regex]"
 msgstr "hämta värde: namn [värde-reguttr]"
 
-#: builtin/config.c:58
+#: builtin/config.c:60
 msgid "get all values: key [value-regex]"
 msgstr "hämta alla värden: nyckel [värde-reguttr]"
 
-#: builtin/config.c:59
+#: builtin/config.c:61
 msgid "get values for regexp: name-regex [value-regex]"
 msgstr "hämta värden för reguttr: namn-reguttr [värde-reguttr]"
 
-#: builtin/config.c:60
+#: builtin/config.c:62
 msgid "replace all matching variables: name value [value_regex]"
 msgstr "ersätt alla motsvarande variabler: namn värde [värde-reguttr]"
 
-#: builtin/config.c:61
+#: builtin/config.c:63
 msgid "add a new variable: name value"
 msgstr "lägg till en ny variabel: namn värde"
 
-#: builtin/config.c:62
+#: builtin/config.c:64
 msgid "remove a variable: name [value-regex]"
 msgstr "ta bort en variabel: namn [värde-reguttr]"
 
-#: builtin/config.c:63
+#: builtin/config.c:65
 msgid "remove all matches: name [value-regex]"
 msgstr "ta bort alla träffar: namn [värde-reguttr]"
 
-#: builtin/config.c:64
+#: builtin/config.c:66
 msgid "rename section: old-name new-name"
 msgstr "byt namn på sektion: gammalt-namn nytt-namn"
 
-#: builtin/config.c:65
+#: builtin/config.c:67
 msgid "remove a section: name"
 msgstr "ta bort en sektion: namn"
 
-#: builtin/config.c:66
+#: builtin/config.c:68
 msgid "list all"
 msgstr "visa alla"
 
-#: builtin/config.c:67
+#: builtin/config.c:69
 msgid "open an editor"
 msgstr "öppna textredigeringsprogram"
 
-#: builtin/config.c:68 builtin/config.c:69
+#: builtin/config.c:70 builtin/config.c:71
 msgid "slot"
 msgstr "plats"
 
-#: builtin/config.c:68
+#: builtin/config.c:70
 msgid "find the color configured: [default]"
 msgstr "hitta den inställda färgen: [default]"
 
-#: builtin/config.c:69
+#: builtin/config.c:71
 msgid "find the color setting: [stdout-is-tty]"
 msgstr "hitta färginställningen: [stdout-is-tty]"
 
-#: builtin/config.c:70
+#: builtin/config.c:72
 msgid "Type"
 msgstr "Typ"
 
-#: builtin/config.c:71
+#: builtin/config.c:73
 msgid "value is \"true\" or \"false\""
 msgstr "värdet är \"true\" eller \"false\""
 
-#: builtin/config.c:72
+#: builtin/config.c:74
 msgid "value is decimal number"
 msgstr "värdet är ett decimalt tal"
 
-#: builtin/config.c:73
+#: builtin/config.c:75
 msgid "value is --bool or --int"
 msgstr "värdet är --bool eller --int"
 
-#: builtin/config.c:74
+#: builtin/config.c:76
 msgid "value is a path (file or directory name)"
 msgstr "värdet är en sökväg (fil- eller katalognamn)"
 
-#: builtin/config.c:75
+#: builtin/config.c:77
 msgid "Other"
 msgstr "Andra"
 
-#: builtin/config.c:76
+#: builtin/config.c:78
 msgid "terminate values with NUL byte"
 msgstr "terminera värden med NUL-byte"
 
-#: builtin/config.c:77
+#: builtin/config.c:79
 msgid "respect include directives on lookup"
 msgstr "respektera inkluderingsdirektiv vid uppslag"
 
@@ -4320,55 +4559,55 @@ msgstr "git count-objects [-v] [-H | --human-readable]"
 msgid "print sizes in human readable format"
 msgstr "skriv storlekar i människoläsbart format"
 
-#: builtin/describe.c:15
+#: builtin/describe.c:16
 msgid "git describe [options] <committish>*"
 msgstr "git describe [flaggor] <incheckning-igt>*"
 
-#: builtin/describe.c:16
+#: builtin/describe.c:17
 msgid "git describe [options] --dirty"
 msgstr "git describe [flaggor] --dirty"
 
-#: builtin/describe.c:233
+#: builtin/describe.c:237
 #, c-format
 msgid "annotated tag %s not available"
 msgstr "den annoterade taggen %s inte tillgänglig"
 
-#: builtin/describe.c:237
+#: builtin/describe.c:241
 #, c-format
 msgid "annotated tag %s has no embedded name"
 msgstr "den annoterade taggen %s har inget inbäddat namn"
 
-#: builtin/describe.c:239
+#: builtin/describe.c:243
 #, c-format
 msgid "tag '%s' is really '%s' here"
 msgstr "taggen \"%s\" är i verkligheten \"%s\" här"
 
-#: builtin/describe.c:266
+#: builtin/describe.c:270
 #, c-format
 msgid "Not a valid object name %s"
 msgstr "Objektnamnet är inte giltigt: %s"
 
-#: builtin/describe.c:269
+#: builtin/describe.c:273
 #, c-format
 msgid "%s is not a valid '%s' object"
 msgstr "%s är inte ett giltigt \"%s\"-objekt"
 
-#: builtin/describe.c:286
+#: builtin/describe.c:290
 #, c-format
 msgid "no tag exactly matches '%s'"
 msgstr "ingen tagg motsvarar \"%s\" exakt"
 
-#: builtin/describe.c:288
+#: builtin/describe.c:292
 #, c-format
 msgid "searching to describe %s\n"
 msgstr "söker för att beskriva %s\n"
 
-#: builtin/describe.c:328
+#: builtin/describe.c:332
 #, c-format
 msgid "finished search at %s\n"
 msgstr "avslutade sökning på %s\n"
 
-#: builtin/describe.c:352
+#: builtin/describe.c:359
 #, c-format
 msgid ""
 "No annotated tags can describe '%s'.\n"
@@ -4377,7 +4616,7 @@ msgstr ""
 "Inga annoterade taggar kan beskriva \"%s\".\n"
 "Det finns dock oannoterade taggar: testa --tags."
 
-#: builtin/describe.c:356
+#: builtin/describe.c:363
 #, c-format
 msgid ""
 "No tags can describe '%s'.\n"
@@ -4386,12 +4625,12 @@ msgstr ""
 "Inga taggar kan beskriva \"%s\".\n"
 "Testa --always, eller skapa några taggar."
 
-#: builtin/describe.c:377
+#: builtin/describe.c:384
 #, c-format
 msgid "traversed %lu commits\n"
 msgstr "traverserade %lu incheckningar\n"
 
-#: builtin/describe.c:380
+#: builtin/describe.c:387
 #, c-format
 msgid ""
 "more than %i tags found; listed %i most recent\n"
@@ -4400,59 +4639,63 @@ msgstr ""
 "mer än %i taggar hittades; listar de %i senaste\n"
 "gav upp sökningen vid %s\n"
 
-#: builtin/describe.c:402
+#: builtin/describe.c:409
 msgid "find the tag that comes after the commit"
 msgstr "hitta taggen som kommer efter incheckningen"
 
-#: builtin/describe.c:403
+#: builtin/describe.c:410
 msgid "debug search strategy on stderr"
 msgstr "felsök sökstrategin på standard fel"
 
-#: builtin/describe.c:404
+#: builtin/describe.c:411
 msgid "use any ref"
 msgstr "använd alla referenser"
 
-#: builtin/describe.c:405
+#: builtin/describe.c:412
 msgid "use any tag, even unannotated"
 msgstr "använd alla taggar, även oannoterade"
 
-#: builtin/describe.c:406
+#: builtin/describe.c:413
 msgid "always use long format"
 msgstr "använd alltid långt format"
 
-#: builtin/describe.c:409
+#: builtin/describe.c:414
+msgid "only follow first parent"
+msgstr "följ endast första föräldern"
+
+#: builtin/describe.c:417
 msgid "only output exact matches"
 msgstr "skriv endast ut exakta träffar"
 
-#: builtin/describe.c:411
+#: builtin/describe.c:419
 msgid "consider <n> most recent tags (default: 10)"
 msgstr "överväg de <n> nyaste taggarna (standard: 10)"
 
-#: builtin/describe.c:413
+#: builtin/describe.c:421
 msgid "only consider tags matching <pattern>"
 msgstr "överväg endast taggar som motsvarar <mönster>"
 
-#: builtin/describe.c:415 builtin/name-rev.c:238
+#: builtin/describe.c:423 builtin/name-rev.c:322
 msgid "show abbreviated commit object as fallback"
 msgstr "visa förkortade incheckningsobjekt som standard"
 
-#: builtin/describe.c:416
+#: builtin/describe.c:424
 msgid "mark"
 msgstr "märke"
 
-#: builtin/describe.c:417
+#: builtin/describe.c:425
 msgid "append <mark> on dirty working tree (default: \"-dirty\")"
 msgstr "lägg till <märke> på lortigt arbetsträd (standard: \"-dirty\")"
 
-#: builtin/describe.c:435
+#: builtin/describe.c:443
 msgid "--long is incompatible with --abbrev=0"
 msgstr "--long är inkompatibel med --abbrev=0"
 
-#: builtin/describe.c:461
+#: builtin/describe.c:469
 msgid "No names found, cannot describe anything."
 msgstr "Inga namn hittades, kan inte beskriva något."
 
-#: builtin/describe.c:481
+#: builtin/describe.c:489
 msgid "--dirty is incompatible with committishes"
 msgstr "--dirty är inkompatibelt med \"committish\"-värden"
 
@@ -4461,31 +4704,26 @@ msgstr "--dirty är inkompatibelt med \"committish\"-värden"
 msgid "'%s': not a regular file or symlink"
 msgstr "\"%s\": inte en normal fil eller symbolisk länk"
 
-#: builtin/diff.c:228
+#: builtin/diff.c:230
 #, c-format
 msgid "invalid option: %s"
 msgstr "ogiltig flagga: %s"
 
-#: builtin/diff.c:305
+#: builtin/diff.c:307
 msgid "Not a git repository"
 msgstr "Inte ett git-arkiv"
 
-#: builtin/diff.c:348
+#: builtin/diff.c:350
 #, c-format
 msgid "invalid object '%s' given."
 msgstr "objektet \"%s\" som angavs är felaktigt."
 
-#: builtin/diff.c:353
-#, c-format
-msgid "more than %d trees given: '%s'"
-msgstr "mer än %d träd angavs: \"%s\""
-
-#: builtin/diff.c:363
+#: builtin/diff.c:359
 #, c-format
 msgid "more than two blobs given: '%s'"
 msgstr "mer än två blobbar angavs: \"%s\""
 
-#: builtin/diff.c:371
+#: builtin/diff.c:366
 #, c-format
 msgid "unhandled object '%s' given."
 msgstr "ej hanterat objekt \"%s\" angavs."
@@ -4494,39 +4732,39 @@ msgstr "ej hanterat objekt \"%s\" angavs."
 msgid "git fast-export [rev-list-opts]"
 msgstr "git fast-export [rev-list-flaggor]"
 
-#: builtin/fast-export.c:658
+#: builtin/fast-export.c:666
 msgid "show progress after <n> objects"
 msgstr "visa förlopp efter <n> objekt"
 
-#: builtin/fast-export.c:660
+#: builtin/fast-export.c:668
 msgid "select handling of signed tags"
 msgstr "välj hantering av signerade taggar"
 
-#: builtin/fast-export.c:663
+#: builtin/fast-export.c:671
 msgid "select handling of tags that tag filtered objects"
 msgstr "välj hantering av taggar som har taggfiltrerade objekt"
 
-#: builtin/fast-export.c:666
+#: builtin/fast-export.c:674
 msgid "Dump marks to this file"
 msgstr "Dump märken till filen"
 
-#: builtin/fast-export.c:668
+#: builtin/fast-export.c:676
 msgid "Import marks from this file"
 msgstr "Importera märken från filen"
 
-#: builtin/fast-export.c:670
+#: builtin/fast-export.c:678
 msgid "Fake a tagger when tags lack one"
 msgstr "Fejka taggare när taggen saknar en"
 
-#: builtin/fast-export.c:672
+#: builtin/fast-export.c:680
 msgid "Output full tree for each commit"
 msgstr "Skriv ut hela trädet för varje incheckning"
 
-#: builtin/fast-export.c:674
+#: builtin/fast-export.c:682
 msgid "Use the done feature to terminate the stream"
 msgstr "Använd done-funktionen för att avsluta strömmen"
 
-#: builtin/fast-export.c:675
+#: builtin/fast-export.c:683
 msgid "Skip output of blob data"
 msgstr "Hoppa över skrivning av blob-data"
 
@@ -4602,7 +4840,7 @@ msgstr "fördjupa historik för grund klon"
 msgid "convert to a complete repository"
 msgstr "konvertera till komplett arkiv"
 
-#: builtin/fetch.c:88 builtin/log.c:1130
+#: builtin/fetch.c:88 builtin/log.c:1177
 msgid "dir"
 msgstr "kat"
 
@@ -4614,76 +4852,76 @@ msgstr "lägg till i början av undermodulens sökvägsutdata"
 msgid "default mode for recursion"
 msgstr "standardläge för rekursion"
 
-#: builtin/fetch.c:204
+#: builtin/fetch.c:220
 msgid "Couldn't find remote ref HEAD"
 msgstr "Kunde inte hitta fjärr-referensen HEAD"
 
-#: builtin/fetch.c:257
+#: builtin/fetch.c:273
 #, c-format
 msgid "object %s not found"
 msgstr "objektet %s hittades inte"
 
-#: builtin/fetch.c:262
+#: builtin/fetch.c:278
 msgid "[up to date]"
 msgstr "[àjour]"
 
-#: builtin/fetch.c:276
+#: builtin/fetch.c:292
 #, c-format
 msgid "! %-*s %-*s -> %s  (can't fetch in current branch)"
 msgstr "! %-*s %-*s -> %s  (kan inte hämta i aktuell gren)"
 
-#: builtin/fetch.c:277 builtin/fetch.c:363
+#: builtin/fetch.c:293 builtin/fetch.c:379
 msgid "[rejected]"
 msgstr "[refuserad]"
 
-#: builtin/fetch.c:288
+#: builtin/fetch.c:304
 msgid "[tag update]"
 msgstr "[uppdaterad tagg]"
 
-#: builtin/fetch.c:290 builtin/fetch.c:325 builtin/fetch.c:343
+#: builtin/fetch.c:306 builtin/fetch.c:341 builtin/fetch.c:359
 msgid "  (unable to update local ref)"
 msgstr "  (kunde inte uppdatera lokal ref)"
 
-#: builtin/fetch.c:308
+#: builtin/fetch.c:324
 msgid "[new tag]"
 msgstr "[ny tagg]"
 
-#: builtin/fetch.c:311
+#: builtin/fetch.c:327
 msgid "[new branch]"
 msgstr "[ny gren]"
 
-#: builtin/fetch.c:314
+#: builtin/fetch.c:330
 msgid "[new ref]"
 msgstr "[ny ref]"
 
-#: builtin/fetch.c:359
+#: builtin/fetch.c:375
 msgid "unable to update local ref"
 msgstr "kunde inte uppdatera lokal ref"
 
-#: builtin/fetch.c:359
+#: builtin/fetch.c:375
 msgid "forced update"
 msgstr "tvingad uppdatering"
 
-#: builtin/fetch.c:365
+#: builtin/fetch.c:381
 msgid "(non-fast-forward)"
 msgstr "(ej snabbspolad)"
 
-#: builtin/fetch.c:396 builtin/fetch.c:688
+#: builtin/fetch.c:412 builtin/fetch.c:718
 #, c-format
 msgid "cannot open %s: %s\n"
 msgstr "kan inte öppna %s: %s\n"
 
-#: builtin/fetch.c:405
+#: builtin/fetch.c:421
 #, 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:491
+#: builtin/fetch.c:520
 #, c-format
 msgid "From %.*s\n"
 msgstr "Från %.*s\n"
 
-#: builtin/fetch.c:502
+#: builtin/fetch.c:531
 #, c-format
 msgid ""
 "some local refs could not be updated; try running\n"
@@ -4692,55 +4930,55 @@ 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:552
+#: builtin/fetch.c:581
 #, c-format
 msgid "   (%s will become dangling)"
 msgstr "   (%s kommer bli dinglande)"
 
-#: builtin/fetch.c:553
+#: builtin/fetch.c:582
 #, c-format
 msgid "   (%s has become dangling)"
 msgstr "   (%s har blivit dinglande)"
 
-#: builtin/fetch.c:560
+#: builtin/fetch.c:589
 msgid "[deleted]"
 msgstr "[borttagen]"
 
-#: builtin/fetch.c:561 builtin/remote.c:1055
+#: builtin/fetch.c:590 builtin/remote.c:1055
 msgid "(none)"
 msgstr "(ingen)"
 
-#: builtin/fetch.c:678
+#: builtin/fetch.c:708
 #, 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:712
+#: builtin/fetch.c:742
 #, c-format
 msgid "Don't know how to fetch from %s"
 msgstr "Vet inte hur man hämtar från %s"
 
-#: builtin/fetch.c:789
+#: builtin/fetch.c:823
 #, 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:792
+#: builtin/fetch.c:826
 #, c-format
 msgid "Option \"%s\" is ignored for %s\n"
 msgstr "Flaggan \"%s\" ignoreras för %s\n"
 
-#: builtin/fetch.c:894
+#: builtin/fetch.c:928
 #, c-format
 msgid "Fetching %s\n"
 msgstr "Hämtar %s\n"
 
-#: builtin/fetch.c:896 builtin/remote.c:100
+#: builtin/fetch.c:930 builtin/remote.c:100
 #, c-format
 msgid "Could not fetch %s"
 msgstr "Kunde inte hämta %s"
 
-#: builtin/fetch.c:915
+#: builtin/fetch.c:949
 msgid ""
 "No remote repository specified.  Please, specify either a URL or a\n"
 "remote name from which new revisions should be fetched."
@@ -4748,32 +4986,32 @@ msgstr ""
 "Inget fjärrarkiv angavs. Ange antingen en URL eller namnet på ett\n"
 "fjärrarkiv som nya incheckningar skall hämtas från."
 
-#: builtin/fetch.c:935
+#: builtin/fetch.c:969
 msgid "You need to specify a tag name."
 msgstr "Du måste ange namnet på en tagg."
 
-#: builtin/fetch.c:981
+#: builtin/fetch.c:1015
 msgid "--depth and --unshallow cannot be used together"
 msgstr "--depth och --unshallow kan inte användas samtidigt"
 
-#: builtin/fetch.c:983
+#: builtin/fetch.c:1017
 msgid "--unshallow on a complete repository does not make sense"
 msgstr "--unshallow kan inte användas på ett komplett arkiv"
 
-#: builtin/fetch.c:1002
+#: builtin/fetch.c:1036
 msgid "fetch --all does not take a repository argument"
 msgstr "fetch --all tar inte namnet på ett arkiv som argument"
 
-#: builtin/fetch.c:1004
+#: builtin/fetch.c:1038
 msgid "fetch --all does not make sense with refspecs"
 msgstr "fetch --all kan inte anges med referensspecifikationer"
 
-#: builtin/fetch.c:1015
+#: builtin/fetch.c:1049
 #, c-format
 msgid "No such remote or remote group: %s"
 msgstr "Fjärren eller fjärrgruppen finns inte: %s"
 
-#: builtin/fetch.c:1023
+#: builtin/fetch.c:1057
 msgid "Fetching a group and specifying refspecs does not make sense"
 msgstr "Kan inte hämta från grupp och ange referensspecifikationer"
 
@@ -4782,9 +5020,9 @@ msgid "git fmt-merge-msg [-m <message>] [--log[=<n>]|--no-log] [--file <file>]"
 msgstr ""
 "git fmt-merge-msg [-m <meddelande>] [--log[=<n>]|--no-log] [--file <fil>]"
 
-#: builtin/fmt-merge-msg.c:663 builtin/fmt-merge-msg.c:666 builtin/grep.c:701
-#: builtin/merge.c:188 builtin/show-branch.c:655 builtin/show-ref.c:175
-#: builtin/tag.c:446 parse-options.h:133 parse-options.h:239
+#: builtin/fmt-merge-msg.c:663 builtin/fmt-merge-msg.c:666 builtin/grep.c:700
+#: builtin/merge.c:203 builtin/show-branch.c:655 builtin/show-ref.c:179
+#: builtin/tag.c:446 parse-options.h:133 parse-options.h:243
 msgid "n"
 msgstr "n"
 
@@ -4943,220 +5181,220 @@ msgstr "git grep [flaggor] [-e] <mönster> [<rev>...] [[--] <sökväg>...]"
 msgid "grep: failed to create thread: %s"
 msgstr "grep: misslyckades skapa tråd. %s"
 
-#: builtin/grep.c:365
+#: builtin/grep.c:364
 #, c-format
 msgid "Failed to chdir: %s"
 msgstr "Kunde inte byta katalog (chdir): %s"
 
-#: builtin/grep.c:443 builtin/grep.c:478
+#: builtin/grep.c:442 builtin/grep.c:477
 #, c-format
 msgid "unable to read tree (%s)"
 msgstr "kunde inte läsa träd (%s)"
 
-#: builtin/grep.c:493
+#: builtin/grep.c:492
 #, c-format
 msgid "unable to grep from object of type %s"
 msgstr "Kunde inte \"grep\" från objekt av typen %s"
 
-#: builtin/grep.c:551
+#: builtin/grep.c:550
 #, c-format
 msgid "switch `%c' expects a numerical value"
 msgstr "flaggan \"%c\" antar ett numeriskt värde"
 
-#: builtin/grep.c:568
+#: builtin/grep.c:567
 #, c-format
 msgid "cannot open '%s'"
 msgstr "kan inte öppna \"%s\""
 
-#: builtin/grep.c:643
+#: builtin/grep.c:642
 msgid "search in index instead of in the work tree"
 msgstr "sök i indexet istället för i arbetskatalogen"
 
-#: builtin/grep.c:645
+#: builtin/grep.c:644
 msgid "find in contents not managed by git"
 msgstr "sök i innehål som inte hanteras av git"
 
-#: builtin/grep.c:647
+#: builtin/grep.c:646
 msgid "search in both tracked and untracked files"
 msgstr "sök i både spårade och ospårade filer"
 
-#: builtin/grep.c:649
+#: builtin/grep.c:648
 msgid "search also in ignored files"
 msgstr "sök även i ignorerade filer"
 
-#: builtin/grep.c:652
+#: builtin/grep.c:651
 msgid "show non-matching lines"
-msgstr "vis rader som inte träffas"
+msgstr "visa rader som inte träffas"
 
-#: builtin/grep.c:654
+#: builtin/grep.c:653
 msgid "case insensitive matching"
 msgstr "skiftlägesokänslig sökning"
 
-#: builtin/grep.c:656
+#: builtin/grep.c:655
 msgid "match patterns only at word boundaries"
 msgstr "matcha endast mönster vid ordgränser"
 
-#: builtin/grep.c:658
+#: builtin/grep.c:657
 msgid "process binary files as text"
 msgstr "hantera binärfiler som text"
 
-#: builtin/grep.c:660
+#: builtin/grep.c:659
 msgid "don't match patterns in binary files"
 msgstr "träffa inte mönster i binärfiler"
 
-#: builtin/grep.c:663
+#: builtin/grep.c:662
 msgid "descend at most <depth> levels"
 msgstr "gå som mest ned <djup> nivåer"
 
-#: builtin/grep.c:667
+#: builtin/grep.c:666
 msgid "use extended POSIX regular expressions"
 msgstr "använd utökade POSIX-reguljära uttryck"
 
-#: builtin/grep.c:670
+#: builtin/grep.c:669
 msgid "use basic POSIX regular expressions (default)"
 msgstr "använd grundläggande POSIX-reguljära uttryck (standard)"
 
-#: builtin/grep.c:673
+#: builtin/grep.c:672
 msgid "interpret patterns as fixed strings"
 msgstr "tolka mönster som fixerade strängar"
 
-#: builtin/grep.c:676
+#: builtin/grep.c:675
 msgid "use Perl-compatible regular expressions"
 msgstr "använd Perlkompatibla reguljära uttryck"
 
-#: builtin/grep.c:679
+#: builtin/grep.c:678
 msgid "show line numbers"
 msgstr "visa radnummer"
 
-#: builtin/grep.c:680
+#: builtin/grep.c:679
 msgid "don't show filenames"
 msgstr "visa inte filnamn"
 
-#: builtin/grep.c:681
+#: builtin/grep.c:680
 msgid "show filenames"
 msgstr "visa filnamn"
 
-#: builtin/grep.c:683
+#: builtin/grep.c:682
 msgid "show filenames relative to top directory"
 msgstr "visa filnamn relativa till toppkatalogen"
 
-#: builtin/grep.c:685
+#: builtin/grep.c:684
 msgid "show only filenames instead of matching lines"
 msgstr "visa endast filnamn istället för träffade rader"
 
-#: builtin/grep.c:687
+#: builtin/grep.c:686
 msgid "synonym for --files-with-matches"
 msgstr "synonym för --files-with-matches"
 
-#: builtin/grep.c:690
+#: builtin/grep.c:689
 msgid "show only the names of files without match"
 msgstr "visa endast namn på filer utan träffar"
 
-#: builtin/grep.c:692
+#: builtin/grep.c:691
 msgid "print NUL after filenames"
 msgstr "skriv NUL efter filnamn"
 
-#: builtin/grep.c:694
+#: builtin/grep.c:693
 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:695
+#: builtin/grep.c:694
 msgid "highlight matches"
 msgstr "ljusmarkera träffar"
 
-#: builtin/grep.c:697
+#: builtin/grep.c:696
 msgid "print empty line between matches from different files"
 msgstr "skriv tomma rader mellan träffar från olika filer"
 
-#: builtin/grep.c:699
+#: builtin/grep.c:698
 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:702
+#: builtin/grep.c:701
 msgid "show <n> context lines before and after matches"
 msgstr "visa <n> rader sammanhang före och efter träffar"
 
-#: builtin/grep.c:705
+#: builtin/grep.c:704
 msgid "show <n> context lines before matches"
 msgstr "visa <n> rader sammanhang före träffar"
 
-#: builtin/grep.c:707
+#: builtin/grep.c:706
 msgid "show <n> context lines after matches"
 msgstr "visa <n> rader sammanhang efter träffar"
 
-#: builtin/grep.c:708
+#: builtin/grep.c:707
 msgid "shortcut for -C NUM"
 msgstr "genväg för -C NUM"
 
-#: builtin/grep.c:711
+#: builtin/grep.c:710
 msgid "show a line with the function name before matches"
 msgstr "visa en rad med funktionsnamnet före träffen"
 
-#: builtin/grep.c:713
+#: builtin/grep.c:712
 msgid "show the surrounding function"
 msgstr "visa den omkringliggande funktionen"
 
-#: builtin/grep.c:716
+#: builtin/grep.c:715
 msgid "read patterns from file"
 msgstr "läs mönster från fil"
 
-#: builtin/grep.c:718
+#: builtin/grep.c:717
 msgid "match <pattern>"
 msgstr "träffa <mönster>"
 
-#: builtin/grep.c:720
+#: builtin/grep.c:719
 msgid "combine patterns specified with -e"
 msgstr "kombinera mönster som anges med -e"
 
-#: builtin/grep.c:732
+#: builtin/grep.c:731
 msgid "indicate hit with exit status without output"
 msgstr "ange träff med slutstatuskod utan utdata"
 
-#: builtin/grep.c:734
+#: builtin/grep.c:733
 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:736
+#: builtin/grep.c:735
 msgid "show parse tree for grep expression"
 msgstr "visa analysträd för grep-uttryck"
 
-#: builtin/grep.c:740
+#: builtin/grep.c:739
 msgid "pager"
 msgstr "bläddrare"
 
-#: builtin/grep.c:740
+#: builtin/grep.c:739
 msgid "show matching files in the pager"
 msgstr "visa träffade filer i filbläddraren"
 
-#: builtin/grep.c:743
+#: builtin/grep.c:742
 msgid "allow calling of grep(1) (ignored by this build)"
 msgstr "tillåt anropa grep(1) (ignoreras av detta bygge)"
 
-#: builtin/grep.c:744 builtin/show-ref.c:184
+#: builtin/grep.c:743 builtin/show-ref.c:188
 msgid "show usage"
 msgstr "visa användning"
 
-#: builtin/grep.c:811
+#: builtin/grep.c:810
 msgid "no pattern given."
 msgstr "inget mönster angavs."
 
-#: builtin/grep.c:866
+#: builtin/grep.c:865
 msgid "--open-files-in-pager only works on the worktree"
 msgstr "--open-files-in-pager fungerar endast i arbetskatalogen"
 
-#: builtin/grep.c:889
+#: builtin/grep.c:888
 msgid "--cached or --untracked cannot be used with --no-index."
 msgstr "--cached och --untracked kan inte användas med --no-index."
 
-#: builtin/grep.c:894
+#: builtin/grep.c:893
 msgid "--no-index or --untracked cannot be used with revs."
 msgstr "--no-index och --untracked kan inte användas med revisioner."
 
-#: builtin/grep.c:897
+#: builtin/grep.c:896
 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:905
+#: builtin/grep.c:904
 msgid "both --cached and trees are given."
 msgstr "både --cached och träd angavs."
 
@@ -5196,54 +5434,54 @@ msgstr "spara filen som den är utan filer"
 msgid "process file as it were from this path"
 msgstr "hantera filen som om den kom från sökvägen"
 
-#: builtin/help.c:43
+#: builtin/help.c:41
 msgid "print all available commands"
 msgstr "visa alla tillgängliga kommandon"
 
-#: builtin/help.c:44
+#: builtin/help.c:42
 msgid "print list of useful guides"
 msgstr "lista användbara vägledningar"
 
-#: builtin/help.c:45
+#: builtin/help.c:43
 msgid "show man page"
 msgstr "visa manualsida"
 
-#: builtin/help.c:46
+#: builtin/help.c:44
 msgid "show manual in web browser"
 msgstr "visa manual i webbläsare"
 
-#: builtin/help.c:48
+#: builtin/help.c:46
 msgid "show info page"
 msgstr "visa info-sida"
 
-#: builtin/help.c:54
+#: builtin/help.c:52
 msgid "git help [--all] [--guides] [--man|--web|--info] [command]"
 msgstr "git help [--all] [--guides] [--man|--web|--info] [kommando]"
 
-#: builtin/help.c:66
+#: builtin/help.c:64
 #, c-format
 msgid "unrecognized help format '%s'"
 msgstr "okänt hjälpformat: %s"
 
-#: builtin/help.c:94
+#: builtin/help.c:92
 msgid "Failed to start emacsclient."
 msgstr "Misslyckades starta emacsclient."
 
-#: builtin/help.c:107
+#: builtin/help.c:105
 msgid "Failed to parse emacsclient version."
 msgstr "Kunde inte tolka emacsclient-version."
 
-#: builtin/help.c:115
+#: builtin/help.c:113
 #, c-format
 msgid "emacsclient version '%d' too old (< 22)."
 msgstr "emacsclient version \"%d\" för gammal (< 22)."
 
-#: builtin/help.c:133 builtin/help.c:161 builtin/help.c:170 builtin/help.c:178
+#: builtin/help.c:131 builtin/help.c:159 builtin/help.c:168 builtin/help.c:176
 #, c-format
 msgid "failed to exec '%s': %s"
 msgstr "exec misslyckades för \"%s\": %s"
 
-#: builtin/help.c:218
+#: builtin/help.c:216
 #, c-format
 msgid ""
 "'%s': path for unsupported man viewer.\n"
@@ -5252,7 +5490,7 @@ msgstr ""
 "\"%s\": sökväg för man-visare som ej stöds.\n"
 "Använd \"man.<verktyg>.cmd\" istället."
 
-#: builtin/help.c:230
+#: builtin/help.c:228
 #, c-format
 msgid ""
 "'%s': cmd for supported man viewer.\n"
@@ -5261,335 +5499,335 @@ msgstr ""
 "\"%s\": kommando för man-visare som stöds.\n"
 "Använd \"man.<verktyg>.path\" istället."
 
-#: builtin/help.c:351
+#: builtin/help.c:349
 #, c-format
 msgid "'%s': unknown man viewer."
 msgstr "\"%s\": okänd man-visare."
 
-#: builtin/help.c:368
+#: builtin/help.c:366
 msgid "no man viewer handled the request"
 msgstr "ingen man-visare hanterade förfrågan"
 
-#: builtin/help.c:376
+#: builtin/help.c:374
 msgid "no info viewer handled the request"
 msgstr "ingen info-visare hanterade förfrågan"
 
-#: builtin/help.c:422
+#: builtin/help.c:420
 msgid "Defining attributes per path"
 msgstr "Definierar attribut per sökväg"
 
-#: builtin/help.c:423
+#: builtin/help.c:421
 msgid "A Git glossary"
 msgstr "En Git-ordlista"
 
-#: builtin/help.c:424
+#: builtin/help.c:422
 msgid "Specifies intentionally untracked files to ignore"
 msgstr "Ange avsiktligen ospårade filer att ignorera"
 
-#: builtin/help.c:425
+#: builtin/help.c:423
 msgid "Defining submodule properties"
 msgstr "Ange egenskaper för undermoduler"
 
-#: builtin/help.c:426
+#: builtin/help.c:424
 msgid "Specifying revisions and ranges for Git"
 msgstr "Ange versioner och intervall i Git"
 
-#: builtin/help.c:427
+#: builtin/help.c:425
 msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
 msgstr "Introduktion till Git (för version 1.5.1 och senare)"
 
-#: builtin/help.c:428
+#: builtin/help.c:426
 msgid "An overview of recommended workflows with Git"
 msgstr "Översikt över rekommenderade arbetsflöden med Git"
 
-#: builtin/help.c:440
+#: builtin/help.c:438
 msgid "The common Git guides are:\n"
 msgstr "De vanliga Git-vägledningarna är:\n"
 
-#: builtin/help.c:462 builtin/help.c:478
+#: builtin/help.c:460 builtin/help.c:476
 #, c-format
 msgid "usage: %s%s"
 msgstr "användning: %s%s"
 
-#: builtin/help.c:494
+#: builtin/help.c:492
 #, c-format
 msgid "`git %s' is aliased to `%s'"
 msgstr "\"git %s\" är ett alias för \"%s\""
 
-#: builtin/index-pack.c:182
+#: builtin/index-pack.c:184
 #, c-format
 msgid "object type mismatch at %s"
 msgstr "objekttyp stämmer inte överens vid %s"
 
-#: builtin/index-pack.c:202
+#: builtin/index-pack.c:204
 msgid "object of unexpected type"
 msgstr "objekt av oväntad typ"
 
-#: builtin/index-pack.c:239
+#: builtin/index-pack.c:244
 #, c-format
 msgid "cannot fill %d byte"
 msgid_plural "cannot fill %d bytes"
 msgstr[0] "kan inte fylla %d byte"
 msgstr[1] "kan inte fylla %d byte"
 
-#: builtin/index-pack.c:249
+#: builtin/index-pack.c:254
 msgid "early EOF"
 msgstr "tidigt filslut"
 
-#: builtin/index-pack.c:250
+#: builtin/index-pack.c:255
 msgid "read error on input"
 msgstr "indataläsfel"
 
-#: builtin/index-pack.c:262
+#: builtin/index-pack.c:267
 msgid "used more bytes than were available"
 msgstr "använde fler byte än tillgängligt"
 
-#: builtin/index-pack.c:269
+#: builtin/index-pack.c:274
 msgid "pack too large for current definition of off_t"
 msgstr "paket för stort för nuvarande definition av off_t"
 
-#: builtin/index-pack.c:285
+#: builtin/index-pack.c:290
 #, c-format
 msgid "unable to create '%s'"
 msgstr "kunde inte skapa \"%s\""
 
-#: builtin/index-pack.c:290
+#: builtin/index-pack.c:295
 #, c-format
 msgid "cannot open packfile '%s'"
 msgstr "kan inte öppna paketfilen \"%s\""
 
-#: builtin/index-pack.c:304
+#: builtin/index-pack.c:309
 msgid "pack signature mismatch"
 msgstr "paketsignatur stämmer inte överens"
 
-#: builtin/index-pack.c:306
+#: builtin/index-pack.c:311
 #, c-format
 msgid "pack version %<PRIu32> unsupported"
 msgstr "paketversion %<PRIu32> stöds ej"
 
-#: builtin/index-pack.c:324
+#: builtin/index-pack.c:329
 #, c-format
 msgid "pack has bad object at offset %lu: %s"
 msgstr "paketet har felaktigt objekt vid index %lu: %s"
 
-#: builtin/index-pack.c:446
+#: builtin/index-pack.c:451
 #, c-format
 msgid "inflate returned %d"
 msgstr "inflate returnerade %d"
 
-#: builtin/index-pack.c:495
+#: builtin/index-pack.c:500
 msgid "offset value overflow for delta base object"
 msgstr "indexvärdespill för deltabasobjekt"
 
-#: builtin/index-pack.c:503
+#: builtin/index-pack.c:508
 msgid "delta base offset is out of bound"
 msgstr "deltabasindex utanför gränsen"
 
-#: builtin/index-pack.c:511
+#: builtin/index-pack.c:516
 #, c-format
 msgid "unknown object type %d"
 msgstr "okänd objekttyp %d"
 
-#: builtin/index-pack.c:542
+#: builtin/index-pack.c:547
 msgid "cannot pread pack file"
 msgstr "kan inte utföra \"pread\" på paketfil"
 
-#: builtin/index-pack.c:544
+#: builtin/index-pack.c:549
 #, c-format
 msgid "premature end of pack file, %lu byte missing"
 msgid_plural "premature end of pack file, %lu bytes missing"
 msgstr[0] "för tidigt slut på paketfilen, %lu byte saknas"
 msgstr[1] "för tidigt slut på paketfilen, %lu byte saknas"
 
-#: builtin/index-pack.c:570
+#: builtin/index-pack.c:575
 msgid "serious inflate inconsistency"
 msgstr "allvarlig inflate-inkonsekvens"
 
-#: builtin/index-pack.c:661 builtin/index-pack.c:667 builtin/index-pack.c:690
-#: builtin/index-pack.c:724 builtin/index-pack.c:733
+#: builtin/index-pack.c:666 builtin/index-pack.c:672 builtin/index-pack.c:695
+#: builtin/index-pack.c:729 builtin/index-pack.c:738
 #, c-format
 msgid "SHA1 COLLISION FOUND WITH %s !"
 msgstr "SHA1-KOLLISION UPPTÄCKT VID %s !"
 
-#: builtin/index-pack.c:664 builtin/pack-objects.c:170
+#: builtin/index-pack.c:669 builtin/pack-objects.c:170
 #: builtin/pack-objects.c:262
 #, c-format
 msgid "unable to read %s"
 msgstr "kunde inte läsa %s"
 
-#: builtin/index-pack.c:730
+#: builtin/index-pack.c:735
 #, c-format
 msgid "cannot read existing object %s"
 msgstr "kan inte läsa befintligt objekt %s"
 
-#: builtin/index-pack.c:744
+#: builtin/index-pack.c:749
 #, c-format
 msgid "invalid blob object %s"
 msgstr "ogiltigt blob-objekt %s"
 
-#: builtin/index-pack.c:759
+#: builtin/index-pack.c:763
 #, c-format
 msgid "invalid %s"
 msgstr "ogiltigt %s"
 
-#: builtin/index-pack.c:761
+#: builtin/index-pack.c:766
 msgid "Error in object"
 msgstr "Fel i objekt"
 
-#: builtin/index-pack.c:763
+#: builtin/index-pack.c:768
 #, c-format
 msgid "Not all child objects of %s are reachable"
 msgstr "Inte alla barnobjekt för %s kan nås"
 
-#: builtin/index-pack.c:833 builtin/index-pack.c:863
+#: builtin/index-pack.c:838 builtin/index-pack.c:868
 msgid "failed to apply delta"
 msgstr "misslyckades tillämpa delta"
 
-#: builtin/index-pack.c:1004
+#: builtin/index-pack.c:1009
 msgid "Receiving objects"
 msgstr "Tar emot objekt"
 
-#: builtin/index-pack.c:1004
+#: builtin/index-pack.c:1009
 msgid "Indexing objects"
 msgstr "Skapar index för objekt"
 
-#: builtin/index-pack.c:1030
+#: builtin/index-pack.c:1035
 msgid "pack is corrupted (SHA1 mismatch)"
 msgstr "paketet är trasigt (SHA1 stämmer inte)"
 
-#: builtin/index-pack.c:1035
+#: builtin/index-pack.c:1040
 msgid "cannot fstat packfile"
 msgstr "kan inte utföra \"fstat\" på paketfil"
 
-#: builtin/index-pack.c:1038
+#: builtin/index-pack.c:1043
 msgid "pack has junk at the end"
 msgstr "paket har skräp i slutet"
 
-#: builtin/index-pack.c:1049
+#: builtin/index-pack.c:1054
 msgid "confusion beyond insanity in parse_pack_objects()"
 msgstr "förvirrad bortom vanvett i parse_pack_objects()"
 
-#: builtin/index-pack.c:1072
+#: builtin/index-pack.c:1077
 msgid "Resolving deltas"
 msgstr "Analyserar delta"
 
-#: builtin/index-pack.c:1082
+#: builtin/index-pack.c:1087
 #, c-format
 msgid "unable to create thread: %s"
 msgstr "kunde inte skapa tråd: %s"
 
-#: builtin/index-pack.c:1124
+#: builtin/index-pack.c:1129
 msgid "confusion beyond insanity"
 msgstr "förvirrad bortom vanvett"
 
-#: builtin/index-pack.c:1132
+#: builtin/index-pack.c:1137
 #, c-format
 msgid "completed with %d local objects"
 msgstr "slutfördes med %d lokala objekt"
 
-#: builtin/index-pack.c:1142
+#: builtin/index-pack.c:1147
 #, c-format
 msgid "Unexpected tail checksum for %s (disk corruption?)"
 msgstr "Oväntad svanschecksumma för %s (trasig disk?)"
 
-#: builtin/index-pack.c:1146
+#: builtin/index-pack.c:1151
 #, c-format
 msgid "pack has %d unresolved delta"
 msgid_plural "pack has %d unresolved deltas"
 msgstr[0] "paketet har %d oanalyserat delta"
 msgstr[1] "paketet har %d oanalyserade delta"
 
-#: builtin/index-pack.c:1171
+#: builtin/index-pack.c:1176
 #, c-format
 msgid "unable to deflate appended object (%d)"
 msgstr "kunde inte utföra \"deflate\" på tillagt objekt (%d)"
 
-#: builtin/index-pack.c:1250
+#: builtin/index-pack.c:1255
 #, c-format
 msgid "local object %s is corrupt"
 msgstr "lokalt objekt %s är trasigt"
 
-#: builtin/index-pack.c:1274
+#: builtin/index-pack.c:1279
 msgid "error while closing pack file"
 msgstr "fel vid stängning av paketfil"
 
-#: builtin/index-pack.c:1287
+#: builtin/index-pack.c:1292
 #, c-format
 msgid "cannot write keep file '%s'"
 msgstr "kan inte ta skriva \"keep\"-fil \"%s\""
 
-#: builtin/index-pack.c:1295
+#: builtin/index-pack.c:1300
 #, c-format
 msgid "cannot close written keep file '%s'"
 msgstr "akn inte stänga skriven \"keep\"-fil \"%s\""
 
-#: builtin/index-pack.c:1308
+#: builtin/index-pack.c:1313
 msgid "cannot store pack file"
 msgstr "kan inte spara paketfil"
 
-#: builtin/index-pack.c:1319
+#: builtin/index-pack.c:1324
 msgid "cannot store index file"
 msgstr "kan inte spara indexfil"
 
-#: builtin/index-pack.c:1352
+#: builtin/index-pack.c:1357
 #, c-format
 msgid "bad pack.indexversion=%<PRIu32>"
 msgstr "felaktig pack.indexversion=%<PRIu32>"
 
-#: builtin/index-pack.c:1358
+#: builtin/index-pack.c:1363
 #, c-format
 msgid "invalid number of threads specified (%d)"
 msgstr "felaktigt antal trådar angivet (%d)"
 
-#: builtin/index-pack.c:1362 builtin/index-pack.c:1535
+#: builtin/index-pack.c:1367 builtin/index-pack.c:1545
 #, c-format
 msgid "no threads support, ignoring %s"
 msgstr "trådstöd saknas, ignorerar %s"
 
-#: builtin/index-pack.c:1420
+#: builtin/index-pack.c:1425
 #, c-format
 msgid "Cannot open existing pack file '%s'"
 msgstr "Kan inte öppna befintlig paketfil \"%s\""
 
-#: builtin/index-pack.c:1422
+#: builtin/index-pack.c:1427
 #, c-format
 msgid "Cannot open existing pack idx file for '%s'"
 msgstr "Kan inte öppna befintligt paket-idx-fil för \"%s\""
 
-#: builtin/index-pack.c:1469
+#: builtin/index-pack.c:1474
 #, 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:1476
+#: builtin/index-pack.c:1481
 #, 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:1503
+#: builtin/index-pack.c:1509
 msgid "Cannot come back to cwd"
 msgstr "Kan inte gå tillbaka till arbetskatalogen (cwd)"
 
-#: builtin/index-pack.c:1547 builtin/index-pack.c:1550
-#: builtin/index-pack.c:1562 builtin/index-pack.c:1566
+#: builtin/index-pack.c:1557 builtin/index-pack.c:1560
+#: builtin/index-pack.c:1572 builtin/index-pack.c:1576
 #, c-format
 msgid "bad %s"
 msgstr "felaktig %s"
 
-#: builtin/index-pack.c:1580
+#: builtin/index-pack.c:1590
 msgid "--fix-thin cannot be used without --stdin"
 msgstr "--fix-thin kan inte användas med --stdin"
 
-#: builtin/index-pack.c:1584 builtin/index-pack.c:1594
+#: builtin/index-pack.c:1594 builtin/index-pack.c:1604
 #, c-format
 msgid "packfile name '%s' does not end with '.pack'"
 msgstr "paketfilnamnet \"%s\" slutar inte med \".pack\""
 
-#: builtin/index-pack.c:1603
+#: builtin/index-pack.c:1613
 msgid "--verify with no packfile name given"
 msgstr "--verify angavs utan paketfilnamn"
 
@@ -5725,7 +5963,7 @@ msgstr "behörigheter"
 msgid "specify that the git repository is to be shared amongst several users"
 msgstr "ange att git-arkivet skall delas bland flera användare"
 
-#: builtin/init-db.c:493 builtin/prune-packed.c:77
+#: builtin/init-db.c:493 builtin/prune-packed.c:75
 msgid "be quiet"
 msgstr "var tyst"
 
@@ -5757,340 +5995,353 @@ msgstr "Kan inte komma åt aktuell arbetskatalog"
 msgid "Cannot access work tree '%s'"
 msgstr "Kan inte komma åt arbetskatalogen \"%s\""
 
-#: builtin/log.c:40
+#: builtin/log.c:41
 msgid "git log [<options>] [<revision range>] [[--] <path>...]\n"
 msgstr "git log [<flaggor>] [<versionsintervall>] [[--] <sökväg>...]\n"
 
-#: builtin/log.c:41
+#: builtin/log.c:42
 msgid "   or: git show [options] <object>..."
 msgstr "     eller: git show [flaggor] <objekt>..."
 
-#: builtin/log.c:103
+#: builtin/log.c:124
 msgid "suppress diff output"
 msgstr "undertryck diff-utdata"
 
-#: builtin/log.c:104
+#: builtin/log.c:125
 msgid "show source"
 msgstr "visa källkod"
 
-#: builtin/log.c:105
+#: builtin/log.c:126
 msgid "Use mail map file"
 msgstr "Använd e-postmappningsfil"
 
-#: builtin/log.c:106
+#: builtin/log.c:127
 msgid "decorate options"
 msgstr "dekoreringsflaggor"
 
-#: builtin/log.c:199
+#: builtin/log.c:230
 #, c-format
 msgid "Final output: %d %s\n"
 msgstr "Slututdata: %d %s\n"
 
-#: builtin/log.c:422 builtin/log.c:514
+#: builtin/log.c:453 builtin/log.c:545
 #, c-format
 msgid "Could not read object %s"
 msgstr "Kunde inte läsa objektet %s"
 
-#: builtin/log.c:538
+#: builtin/log.c:569
 #, c-format
 msgid "Unknown type: %d"
 msgstr "Okänd typ: %d"
 
-#: builtin/log.c:638
+#: builtin/log.c:669
 msgid "format.headers without value"
 msgstr "format.headers utan värde"
 
-#: builtin/log.c:720
+#: builtin/log.c:751
 msgid "name of output directory is too long"
 msgstr "namnet på utdatakatalogen är för långt"
 
-#: builtin/log.c:736
+#: builtin/log.c:767
 #, c-format
 msgid "Cannot open patch file %s"
 msgstr "Kan inte öppna patchfilen %s"
 
-#: builtin/log.c:750
+#: builtin/log.c:781
 msgid "Need exactly one range."
 msgstr "Behöver precis ett intervall."
 
-#: builtin/log.c:758
+#: builtin/log.c:789
 msgid "Not a range."
 msgstr "Inte ett intervall."
 
-#: builtin/log.c:860
+#: builtin/log.c:891
 msgid "Cover letter needs email format"
 msgstr "Omslagsbrevet behöver e-postformat"
 
-#: builtin/log.c:936
+#: builtin/log.c:967
 #, c-format
 msgid "insane in-reply-to: %s"
 msgstr "tokigt in-reply-to: %s"
 
-#: builtin/log.c:964
+#: builtin/log.c:995
 msgid "git format-patch [options] [<since> | <revision range>]"
 msgstr "git format-patch [flaggor] [<sedan> | <revisionsintervall>]"
 
-#: builtin/log.c:1009
+#: builtin/log.c:1040
 msgid "Two output directories?"
 msgstr "Två utdatakataloger?"
 
-#: builtin/log.c:1108
+#: builtin/log.c:1155
 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:1111
+#: builtin/log.c:1158
 msgid "use [PATCH] even with multiple patches"
 msgstr "använd [PATCH] även för flera patchar"
 
-#: builtin/log.c:1115
+#: builtin/log.c:1162
 msgid "print patches to standard out"
 msgstr "skriv patcharna på stnadard ut"
 
-#: builtin/log.c:1117
+#: builtin/log.c:1164
 msgid "generate a cover letter"
 msgstr "generera ett följebrev"
 
-#: builtin/log.c:1119
+#: builtin/log.c:1166
 msgid "use simple number sequence for output file names"
 msgstr "använd enkel nummersekvens för utdatafilnamn"
 
-#: builtin/log.c:1120
+#: builtin/log.c:1167
 msgid "sfx"
 msgstr "sfx"
 
-#: builtin/log.c:1121
+#: builtin/log.c:1168
 msgid "use <sfx> instead of '.patch'"
 msgstr "använd <sfx> istället för \".patch\""
 
-#: builtin/log.c:1123
+#: builtin/log.c:1170
 msgid "start numbering patches at <n> instead of 1"
 msgstr "börja numrera patchar på <n> istället för 1"
 
-#: builtin/log.c:1125
+#: builtin/log.c:1172
 msgid "mark the series as Nth re-roll"
 msgstr "markera serien som N:te försök"
 
-#: builtin/log.c:1127
+#: builtin/log.c:1174
 msgid "Use [<prefix>] instead of [PATCH]"
 msgstr "Använd [<prefix>] istället för [PATCH]"
 
-#: builtin/log.c:1130
+#: builtin/log.c:1177
 msgid "store resulting files in <dir>"
 msgstr "spara filerna i <katalog>"
 
-#: builtin/log.c:1133
+#: builtin/log.c:1180
 msgid "don't strip/add [PATCH]"
 msgstr "ta inte bort eller lägg till [PATCH]"
 
-#: builtin/log.c:1136
+#: builtin/log.c:1183
 msgid "don't output binary diffs"
 msgstr "skriv inte binära diffar"
 
-#: builtin/log.c:1138
+#: builtin/log.c:1185
 msgid "don't include a patch matching a commit upstream"
 msgstr "ta inte med patchar som motsvarar en uppströmsincheckning"
 
-#: builtin/log.c:1140
+#: builtin/log.c:1187
 msgid "show patch format instead of default (patch + stat)"
 msgstr "visa patchformat istället för standard (patch + stat)"
 
-#: builtin/log.c:1142
+#: builtin/log.c:1189
 msgid "Messaging"
 msgstr "E-post"
 
-#: builtin/log.c:1143
+#: builtin/log.c:1190
 msgid "header"
 msgstr "huvud"
 
-#: builtin/log.c:1144
+#: builtin/log.c:1191
 msgid "add email header"
 msgstr "lägg till e-posthuvud"
 
-#: builtin/log.c:1145 builtin/log.c:1147
+#: builtin/log.c:1192 builtin/log.c:1194
 msgid "email"
 msgstr "epost"
 
-#: builtin/log.c:1145
+#: builtin/log.c:1192
 msgid "add To: header"
 msgstr "Lägg till mottagarhuvud (\"To:\")"
 
-#: builtin/log.c:1147
+#: builtin/log.c:1194
 msgid "add Cc: header"
 msgstr "Lägg till kopiehuvud (\"Cc:\")"
 
-#: builtin/log.c:1149
+#: builtin/log.c:1196
+msgid "ident"
+msgstr "ident"
+
+#: builtin/log.c:1197
+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:1199
 msgid "message-id"
 msgstr "meddelande-id"
 
-#: builtin/log.c:1150
+#: builtin/log.c:1200
 msgid "make first mail a reply to <message-id>"
 msgstr "Gör det första brevet ett svar till <meddelande-id>"
 
-#: builtin/log.c:1151 builtin/log.c:1154
+#: builtin/log.c:1201 builtin/log.c:1204
 msgid "boundary"
 msgstr "gräns"
 
-#: builtin/log.c:1152
+#: builtin/log.c:1202
 msgid "attach the patch"
 msgstr "bifoga patchen"
 
-#: builtin/log.c:1155
+#: builtin/log.c:1205
 msgid "inline the patch"
 msgstr "gör patchen ett inline-objekt"
 
-#: builtin/log.c:1159
+#: builtin/log.c:1209
 msgid "enable message threading, styles: shallow, deep"
 msgstr "aktivera brevtrådning, typer: shallow, deep"
 
-#: builtin/log.c:1161
+#: builtin/log.c:1211
 msgid "signature"
 msgstr "signatur"
 
-#: builtin/log.c:1162
+#: builtin/log.c:1212
 msgid "add a signature"
 msgstr "lägg till signatur"
 
-#: builtin/log.c:1164
+#: builtin/log.c:1214
 msgid "don't print the patch filenames"
 msgstr "visa inte filnamn för patchar"
 
-#: builtin/log.c:1248
+#: builtin/log.c:1288
+#, c-format
+msgid "invalid ident line: %s"
+msgstr "ogiltig ident-rad: %s"
+
+#: builtin/log.c:1303
 msgid "-n and -k are mutually exclusive."
 msgstr "-n och -k kan inte användas samtidigt."
 
-#: builtin/log.c:1250
+#: builtin/log.c:1305
 msgid "--subject-prefix and -k are mutually exclusive."
 msgstr "--subject-prefix och -k kan inte användas samtidigt."
 
-#: builtin/log.c:1258
+#: builtin/log.c:1313
 msgid "--name-only does not make sense"
 msgstr "kan inte använda --name-only"
 
-#: builtin/log.c:1260
+#: builtin/log.c:1315
 msgid "--name-status does not make sense"
 msgstr "kan inte använda --name-status"
 
-#: builtin/log.c:1262
+#: builtin/log.c:1317
 msgid "--check does not make sense"
 msgstr "kan inte använda --check"
 
-#: builtin/log.c:1285
+#: builtin/log.c:1340
 msgid "standard output, or directory, which one?"
 msgstr "standard ut, eller katalog, vilken skall det vara?"
 
-#: builtin/log.c:1287
+#: builtin/log.c:1342
 #, c-format
 msgid "Could not create directory '%s'"
 msgstr "Kunde inte skapa katalogen \"%s\""
 
-#: builtin/log.c:1435
+#: builtin/log.c:1490
 msgid "Failed to create output files"
 msgstr "Misslyckades skapa utdatafiler"
 
-#: builtin/log.c:1484
+#: builtin/log.c:1539
 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
 msgstr "git cherry [-v] [<uppström> [<huvud> [<gräns>]]]"
 
-#: builtin/log.c:1539
+#: builtin/log.c:1594
 #, 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/log.c:1552 builtin/log.c:1554 builtin/log.c:1566
+#: builtin/log.c:1607 builtin/log.c:1609 builtin/log.c:1621
 #, c-format
 msgid "Unknown commit %s"
 msgstr "Okänd incheckning %s"
 
-#: builtin/ls-files.c:402
+#: builtin/ls-files.c:408
 msgid "git ls-files [options] [<file>...]"
 msgstr "git ls-files [flaggor] [<fil>...]"
 
-#: builtin/ls-files.c:459
+#: builtin/ls-files.c:465
 msgid "identify the file status with tags"
 msgstr "identifiera filstatus med taggar"
 
-#: builtin/ls-files.c:461
+#: builtin/ls-files.c:467
 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:463
+#: builtin/ls-files.c:469
 msgid "show cached files in the output (default)"
 msgstr "visa cachade filer i utdata (standard)"
 
-#: builtin/ls-files.c:465
+#: builtin/ls-files.c:471
 msgid "show deleted files in the output"
 msgstr "visa borttagna filer i utdata"
 
-#: builtin/ls-files.c:467
+#: builtin/ls-files.c:473
 msgid "show modified files in the output"
 msgstr "visa modifierade filer i utdata"
 
-#: builtin/ls-files.c:469
+#: builtin/ls-files.c:475
 msgid "show other files in the output"
 msgstr "visa andra filer i utdata"
 
-#: builtin/ls-files.c:471
+#: builtin/ls-files.c:477
 msgid "show ignored files in the output"
 msgstr "visa ignorerade filer i utdata"
 
-#: builtin/ls-files.c:474
+#: builtin/ls-files.c:480
 msgid "show staged contents' object name in the output"
 msgstr "visa köat innehålls objektnamn i utdata"
 
-#: builtin/ls-files.c:476
+#: builtin/ls-files.c:482
 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:478
+#: builtin/ls-files.c:484
 msgid "show 'other' directories' name only"
 msgstr "visa endast namn för \"andra\" kataloger"
 
-#: builtin/ls-files.c:481
+#: builtin/ls-files.c:487
 msgid "don't show empty directories"
 msgstr "visa inte tomma kataloger"
 
-#: builtin/ls-files.c:484
+#: builtin/ls-files.c:490
 msgid "show unmerged files in the output"
 msgstr "visa ej sammanslagna filer i utdata"
 
-#: builtin/ls-files.c:486
+#: builtin/ls-files.c:492
 msgid "show resolve-undo information"
 msgstr "visa \"resolve-undo\"-information"
 
-#: builtin/ls-files.c:488
+#: builtin/ls-files.c:494
 msgid "skip files matching pattern"
 msgstr "hoppa över filer som motsvarar mönster"
 
-#: builtin/ls-files.c:491
+#: builtin/ls-files.c:497
 msgid "exclude patterns are read from <file>"
 msgstr "exkludera mönster som läses från <fil>"
 
-#: builtin/ls-files.c:494
+#: builtin/ls-files.c:500
 msgid "read additional per-directory exclude patterns in <file>"
 msgstr "läs ytterligare per-katalog-exkluderingsmönster från <fil>"
 
-#: builtin/ls-files.c:496
+#: builtin/ls-files.c:502
 msgid "add the standard git exclusions"
 msgstr "lägg till git:s standardexkluderingar"
 
-#: builtin/ls-files.c:499
+#: builtin/ls-files.c:505
 msgid "make the output relative to the project top directory"
 msgstr "gör utdata relativ till projektets toppkatalog"
 
-#: builtin/ls-files.c:502
+#: builtin/ls-files.c:508
 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:503
+#: builtin/ls-files.c:509
 msgid "tree-ish"
 msgstr "träd-igt"
 
-#: builtin/ls-files.c:504
+#: builtin/ls-files.c:510
 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:506
+#: builtin/ls-files.c:512
 msgid "show debugging data"
 msgstr "visa felsökningsutdata"
 
@@ -6142,170 +6393,170 @@ msgstr "git merge [flaggor] <meddelande> HEAD <incheckning>"
 msgid "git merge --abort"
 msgstr "git merge --abort"
 
-#: builtin/merge.c:90
+#: builtin/merge.c:98
 msgid "switch `m' requires a value"
 msgstr "flaggan \"m\" behöver ett värde"
 
-#: builtin/merge.c:127
+#: builtin/merge.c:135
 #, c-format
 msgid "Could not find merge strategy '%s'.\n"
 msgstr "Kunde inte hitta sammanslagningsstrategin \"%s\".\n"
 
-#: builtin/merge.c:128
+#: builtin/merge.c:136
 #, c-format
 msgid "Available strategies are:"
 msgstr "Tillgängliga strategier är:"
 
-#: builtin/merge.c:133
+#: builtin/merge.c:141
 #, c-format
 msgid "Available custom strategies are:"
 msgstr "Tillgängliga skräddarsydda strategier är:"
 
-#: builtin/merge.c:183
+#: builtin/merge.c:198
 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:186
+#: builtin/merge.c:201
 msgid "show a diffstat at the end of the merge"
 msgstr "visa en diffstat när sammanslagningen är färdig"
 
-#: builtin/merge.c:187
+#: builtin/merge.c:202
 msgid "(synonym to --stat)"
 msgstr "(synonym till --stat)"
 
-#: builtin/merge.c:189
+#: builtin/merge.c:204
 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:192
+#: builtin/merge.c:207
 msgid "create a single commit instead of doing a merge"
 msgstr "skapa en ensam incheckning istället för en sammanslagning"
 
-#: builtin/merge.c:194
+#: builtin/merge.c:209
 msgid "perform a commit if the merge succeeds (default)"
 msgstr "utför en incheckning om sammanslagningen lyckades (standard)"
 
-#: builtin/merge.c:196
+#: builtin/merge.c:211
 msgid "edit message before committing"
 msgstr "redigera meddelande innan incheckning"
 
-#: builtin/merge.c:198
+#: builtin/merge.c:212
 msgid "allow fast-forward (default)"
 msgstr "tillåt snabbspolning (standard)"
 
-#: builtin/merge.c:200
+#: builtin/merge.c:214
 msgid "abort if fast-forward is not possible"
 msgstr "avbryt om snabbspolning inte är möjlig"
 
-#: builtin/merge.c:203
+#: builtin/merge.c:218
 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:204 builtin/notes.c:866 builtin/revert.c:112
+#: builtin/merge.c:219 builtin/notes.c:738 builtin/revert.c:114
 msgid "strategy"
 msgstr "strategi"
 
-#: builtin/merge.c:205
+#: builtin/merge.c:220
 msgid "merge strategy to use"
 msgstr "sammanslagninsstrategi att använda"
 
-#: builtin/merge.c:206
+#: builtin/merge.c:221
 msgid "option=value"
 msgstr "alternativ=värde"
 
-#: builtin/merge.c:207
+#: builtin/merge.c:222
 msgid "option for selected merge strategy"
 msgstr "alternativ för vald sammanslagningsstrategi"
 
-#: builtin/merge.c:209
+#: builtin/merge.c:224
 msgid "merge commit message (for a non-fast-forward merge)"
 msgstr "incheckningsmeddelande för (icke snabbspolande) sammanslagning"
 
-#: builtin/merge.c:213
+#: builtin/merge.c:228
 msgid "abort the current in-progress merge"
 msgstr "avbryt den pågående sammanslagningen"
 
-#: builtin/merge.c:242
+#: builtin/merge.c:257
 msgid "could not run stash."
 msgstr "kunde köra stash."
 
-#: builtin/merge.c:247
+#: builtin/merge.c:262
 msgid "stash failed"
 msgstr "stash misslyckades"
 
-#: builtin/merge.c:252
+#: builtin/merge.c:267
 #, c-format
 msgid "not a valid object: %s"
 msgstr "inte ett giltigt objekt: %s"
 
-#: builtin/merge.c:271 builtin/merge.c:288
+#: builtin/merge.c:286 builtin/merge.c:303
 msgid "read-tree failed"
 msgstr "read-tree misslyckades"
 
-#: builtin/merge.c:318
+#: builtin/merge.c:333
 msgid " (nothing to squash)"
 msgstr " (inget att platta till)"
 
-#: builtin/merge.c:331
+#: builtin/merge.c:346
 #, c-format
 msgid "Squash commit -- not updating HEAD\n"
 msgstr "Tillplattningsincheckning -- uppdaterar inte HEAD\n"
 
-#: builtin/merge.c:363
+#: builtin/merge.c:378
 msgid "Writing SQUASH_MSG"
 msgstr "Skriver SQUASH_MSG"
 
-#: builtin/merge.c:365
+#: builtin/merge.c:380
 msgid "Finishing SQUASH_MSG"
 msgstr "Avslutar SQUASH_MSG"
 
-#: builtin/merge.c:388
+#: builtin/merge.c:403
 #, c-format
 msgid "No merge message -- not updating HEAD\n"
 msgstr "Inget sammanslagningsmeddelande -- uppdaterar inte HEAD\n"
 
-#: builtin/merge.c:438
+#: builtin/merge.c:453
 #, c-format
 msgid "'%s' does not point to a commit"
 msgstr "\"%s\" verkar inte peka på en incheckning"
 
-#: builtin/merge.c:550
+#: builtin/merge.c:565
 #, c-format
 msgid "Bad branch.%s.mergeoptions string: %s"
 msgstr "Felaktig branch.%s.mergeoptions-sträng: %s"
 
-#: builtin/merge.c:643
+#: builtin/merge.c:657
 msgid "git write-tree failed to write a tree"
 msgstr "git write-tree misslyckades skriva ett träd"
 
-#: builtin/merge.c:671
+#: builtin/merge.c:685
 msgid "Not handling anything other than two heads merge."
 msgstr "Hanterar inte något annat än en sammanslagning av två huvuden."
 
-#: builtin/merge.c:685
+#: builtin/merge.c:699
 #, c-format
 msgid "Unknown option for merge-recursive: -X%s"
 msgstr "Felaktig flagga för merge-recursive: -X%s"
 
-#: builtin/merge.c:699
+#: builtin/merge.c:713
 #, c-format
 msgid "unable to write %s"
 msgstr "kunde inte skriva %s"
 
-#: builtin/merge.c:788
+#: builtin/merge.c:802
 #, c-format
 msgid "Could not read from '%s'"
 msgstr "Kunde inte läsa från \"%s\""
 
-#: builtin/merge.c:797
+#: builtin/merge.c:811
 #, 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:803
+#: builtin/merge.c:817
 #, c-format
 msgid ""
 "Please enter a commit message to explain why this merge is necessary,\n"
@@ -6321,53 +6572,48 @@ msgstr ""
 "Rader som inleds med \"%c\" kommer ignoreras, och ett tomt meddelande\n"
 "avbryter incheckningen.\n"
 
-#: builtin/merge.c:827
+#: builtin/merge.c:841
 msgid "Empty commit message."
 msgstr "Tomt incheckningsmeddelande."
 
-#: builtin/merge.c:839
+#: builtin/merge.c:853
 #, c-format
 msgid "Wonderful.\n"
 msgstr "Underbart.\n"
 
-#: builtin/merge.c:904
+#: builtin/merge.c:918
 #, 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:920
+#: builtin/merge.c:934
 #, c-format
 msgid "'%s' is not a commit"
 msgstr "\"%s\" är inte en incheckning"
 
-#: builtin/merge.c:961
+#: builtin/merge.c:975
 msgid "No current branch."
 msgstr "Inte på någon gren."
 
-#: builtin/merge.c:963
+#: builtin/merge.c:977
 msgid "No remote for the current branch."
 msgstr "Ingen fjärr för aktuell gren."
 
-#: builtin/merge.c:965
+#: builtin/merge.c:979
 msgid "No default upstream defined for the current branch."
 msgstr "Ingen standarduppström angiven för aktuell gren."
 
-#: builtin/merge.c:970
+#: builtin/merge.c:984
 #, c-format
-msgid "No remote tracking branch for %s from %s"
+msgid "No remote-tracking branch for %s from %s"
 msgstr "Ingen fjärrspårande gren för %s från %s"
 
-#: builtin/merge.c:1057 builtin/merge.c:1214
-#, c-format
-msgid "%s - not something we can merge"
-msgstr "%s - inte något vi kan slå ihop"
-
-#: builtin/merge.c:1125
+#: builtin/merge.c:1140
 msgid "There is no merge to abort (MERGE_HEAD missing)."
 msgstr "Det finns ingen sammanslagning att avbryta (MERGE_HEAD saknas)."
 
-#: builtin/merge.c:1141 git-pull.sh:31
+#: builtin/merge.c:1156 git-pull.sh:31
 msgid ""
 "You have not concluded your merge (MERGE_HEAD exists).\n"
 "Please, commit your changes before you can merge."
@@ -6375,11 +6621,11 @@ msgstr ""
 "Du har inte avslutat sammanslagningen (MERGE_HEAD finns).\n"
 "Checka in dina ändringar innan du kan slå ihop."
 
-#: builtin/merge.c:1144 git-pull.sh:34
+#: builtin/merge.c:1159 git-pull.sh:34
 msgid "You have not concluded your merge (MERGE_HEAD exists)."
 msgstr "Du har inte avslutat sammanslagningen (MERGE_HEAD finns)."
 
-#: builtin/merge.c:1148
+#: builtin/merge.c:1163
 msgid ""
 "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
 "Please, commit your changes before you can merge."
@@ -6387,102 +6633,103 @@ msgstr ""
 "Du har inte avslutat din \"cherry-pick\" (CHERRY_PICK_HEAD finns).\n"
 "Checka in dina ändringar innan du kan slå ihop."
 
-#: builtin/merge.c:1151
+#: builtin/merge.c:1166
 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:1160
+#: builtin/merge.c:1175
 msgid "You cannot combine --squash with --no-ff."
 msgstr "Du kan inte kombinera --squash med --no-ff."
 
-#: builtin/merge.c:1165
-msgid "You cannot combine --no-ff with --ff-only."
-msgstr "Du kan inte kombinera --no-ff med --ff-only."
-
-#: builtin/merge.c:1172
+#: builtin/merge.c:1184
 msgid "No commit specified and merge.defaultToUpstream not set."
 msgstr "Ingen incheckning angiven och merge.defaultToUpstream är ej satt."
 
-#: builtin/merge.c:1204
+#: builtin/merge.c:1216
 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:1207
+#: builtin/merge.c:1219
 msgid "Squash commit into empty head not supported yet"
 msgstr "Stöder inte en tillplattningsincheckning på ett tomt huvud ännu"
 
-#: builtin/merge.c:1209
+#: builtin/merge.c:1221
 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:1265
+#: builtin/merge.c:1226
+#, c-format
+msgid "%s - not something we can merge"
+msgstr "%s - inte något vi kan slå ihop"
+
+#: builtin/merge.c:1277
 #, c-format
 msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
 msgstr ""
 "Incheckningen %s har en obetrodd GPG-signatur som påstås vara gjord av %s."
 
-#: builtin/merge.c:1268
+#: builtin/merge.c:1280
 #, 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."
 
 #. 'N'
-#: builtin/merge.c:1271
+#: builtin/merge.c:1283
 #, c-format
 msgid "Commit %s does not have a GPG signature."
 msgstr "Incheckning %s har inte någon GPG-signatur."
 
-#: builtin/merge.c:1274
+#: builtin/merge.c:1286
 #, c-format
 msgid "Commit %s has a good GPG signature by %s\n"
 msgstr "Incheckningen %s har en korrekt GPG-signatur av %s\n"
 
-#: builtin/merge.c:1358
+#: builtin/merge.c:1370
 #, c-format
 msgid "Updating %s..%s\n"
 msgstr "Uppdaterar %s..%s\n"
 
-#: builtin/merge.c:1397
+#: builtin/merge.c:1409
 #, c-format
 msgid "Trying really trivial in-index merge...\n"
 msgstr "Försöker riktigt enkel sammanslagning i indexet...\n"
 
-#: builtin/merge.c:1404
+#: builtin/merge.c:1416
 #, c-format
 msgid "Nope.\n"
 msgstr "Nej.\n"
 
-#: builtin/merge.c:1436
+#: builtin/merge.c:1448
 msgid "Not possible to fast-forward, aborting."
 msgstr "Kan inte snabbspola, avbryter."
 
-#: builtin/merge.c:1459 builtin/merge.c:1538
+#: builtin/merge.c:1471 builtin/merge.c:1550
 #, c-format
 msgid "Rewinding the tree to pristine...\n"
 msgstr "Återspolar trädet till orört...\n"
 
-#: builtin/merge.c:1463
+#: builtin/merge.c:1475
 #, c-format
 msgid "Trying merge strategy %s...\n"
 msgstr "Försöker sammanslagninsstrategin %s...\n"
 
-#: builtin/merge.c:1529
+#: builtin/merge.c:1541
 #, c-format
 msgid "No merge strategy handled the merge.\n"
 msgstr "Ingen sammanslagningsstrategi hanterade sammanslagningen.\n"
 
-#: builtin/merge.c:1531
+#: builtin/merge.c:1543
 #, c-format
 msgid "Merge with strategy %s failed.\n"
 msgstr "Sammanslagning med strategin %s misslyckades.\n"
 
-#: builtin/merge.c:1540
+#: builtin/merge.c:1552
 #, 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:1552
+#: builtin/merge.c:1564
 #, c-format
 msgid "Automatic merge went well; stopped before committing as requested\n"
 msgstr ""
@@ -6649,47 +6896,51 @@ msgstr "Byter namn på %s till %s\n"
 msgid "renaming '%s' failed"
 msgstr "misslyckades byta namn på \"%s\""
 
-#: builtin/name-rev.c:175
+#: builtin/name-rev.c:259
 msgid "git name-rev [options] <commit>..."
 msgstr "git name-rev [flaggor] <incheckning>..."
 
-#: builtin/name-rev.c:176
+#: builtin/name-rev.c:260
 msgid "git name-rev [options] --all"
 msgstr "git name-rev [flaggor] --all"
 
-#: builtin/name-rev.c:177
+#: builtin/name-rev.c:261
 msgid "git name-rev [options] --stdin"
 msgstr "git name-rev [flaggor] --stdin"
 
-#: builtin/name-rev.c:229
+#: builtin/name-rev.c:313
 msgid "print only names (no SHA-1)"
 msgstr "skriv endast namn (ingen SHA-1)"
 
-#: builtin/name-rev.c:230
+#: builtin/name-rev.c:314
 msgid "only use tags to name the commits"
 msgstr "använd endast taggar för att namnge incheckningar"
 
-#: builtin/name-rev.c:232
+#: builtin/name-rev.c:316
 msgid "only use refs matching <pattern>"
 msgstr "använd endast referenser som motsvarar <mönster>"
 
-#: builtin/name-rev.c:234
+#: builtin/name-rev.c:318
 msgid "list all commits reachable from all refs"
 msgstr "lista alla incheckningar som kan nås alla referenser"
 
-#: builtin/name-rev.c:235
+#: builtin/name-rev.c:319
 msgid "read from stdin"
 msgstr "läs från standard in"
 
-#: builtin/name-rev.c:236
+#: builtin/name-rev.c:320
 msgid "allow to print `undefined` names"
 msgstr "tillåt att skriva \"odefinierade\" namn"
 
-#: builtin/notes.c:26
+#: builtin/name-rev.c:326
+msgid "dereference tags in the input (internal use)"
+msgstr "avreferera taggar i indata (används internt)"
+
+#: builtin/notes.c:24
 msgid "git notes [--ref <notes_ref>] [list [<object>]]"
 msgstr "git notes [--ref <anteckningsref>] [list [<objekt>]]"
 
-#: builtin/notes.c:27
+#: builtin/notes.c:25
 msgid ""
 "git notes [--ref <notes_ref>] add [-f] [-m <msg> | -F <file> | (-c | -C) "
 "<object>] [<object>]"
@@ -6697,12 +6948,12 @@ msgstr ""
 "git notes [--ref <anteckningsref>] add [-f] [-m <medd> | -F <fil> | (-c | -"
 "C) <objekt>] [<objekt>]"
 
-#: builtin/notes.c:28
+#: builtin/notes.c:26
 msgid "git notes [--ref <notes_ref>] copy [-f] <from-object> <to-object>"
 msgstr ""
 "git notes [--ref <anteckningsref>] copy [-f] <från-objekt> <till-objekt>"
 
-#: builtin/notes.c:29
+#: builtin/notes.c:27
 msgid ""
 "git notes [--ref <notes_ref>] append [-m <msg> | -F <file> | (-c | -C) "
 "<object>] [<object>]"
@@ -6710,221 +6961,200 @@ msgstr ""
 "git notes [--ref <anteckningsref>] append [-m <medd> | -F <fil> | (-c | -C) "
 "<objekt>] [<objekt>]"
 
-#: builtin/notes.c:30
+#: builtin/notes.c:28
 msgid "git notes [--ref <notes_ref>] edit [<object>]"
 msgstr "git notes [--ref <anteckningsref>] edit [<objekt>]"
 
-#: builtin/notes.c:31
+#: builtin/notes.c:29
 msgid "git notes [--ref <notes_ref>] show [<object>]"
 msgstr "git notes [--ref <anteckningsref>] show [<objekt>]"
 
-#: builtin/notes.c:32
+#: builtin/notes.c:30
 msgid ""
 "git notes [--ref <notes_ref>] merge [-v | -q] [-s <strategy> ] <notes_ref>"
 msgstr ""
 "git notes [--ref <anteckningsref>] merge [-v | -q] [-s <strategi> ] "
 "<anteckningsref>"
 
-#: builtin/notes.c:33
+#: builtin/notes.c:31
 msgid "git notes merge --commit [-v | -q]"
 msgstr "git notes merge --commit [-v | -q]"
 
-#: builtin/notes.c:34
+#: builtin/notes.c:32
 msgid "git notes merge --abort [-v | -q]"
 msgstr "git notes merge --abort [-v | -q]"
 
-#: builtin/notes.c:35
+#: builtin/notes.c:33
 msgid "git notes [--ref <notes_ref>] remove [<object>...]"
 msgstr "git notes [--ref <anteckningsref>] remove [<objekt>...]"
 
-#: builtin/notes.c:36
+#: builtin/notes.c:34
 msgid "git notes [--ref <notes_ref>] prune [-n | -v]"
 msgstr "git notes [--ref <anteckningsref>] prune [-n | -v]"
 
-#: builtin/notes.c:37
+#: builtin/notes.c:35
 msgid "git notes [--ref <notes_ref>] get-ref"
 msgstr "git notes [--ref <anteckningsref>] get-ref"
 
-#: builtin/notes.c:42
+#: builtin/notes.c:40
 msgid "git notes [list [<object>]]"
 msgstr "git notes [list [<objekt>]]"
 
-#: builtin/notes.c:47
+#: builtin/notes.c:45
 msgid "git notes add [<options>] [<object>]"
 msgstr "git notes add [<flaggor>] [<objekt>]"
 
-#: builtin/notes.c:52
+#: builtin/notes.c:50
 msgid "git notes copy [<options>] <from-object> <to-object>"
 msgstr "git notes copy [<flaggor>] <från-objekt> <till-objekt>"
 
-#: builtin/notes.c:53
+#: builtin/notes.c:51
 msgid "git notes copy --stdin [<from-object> <to-object>]..."
 msgstr "git notes copy --stdin [<från-objekt> <till-objekt>]..."
 
-#: builtin/notes.c:58
+#: builtin/notes.c:56
 msgid "git notes append [<options>] [<object>]"
 msgstr "git notes append [<flaggor>] [<objekt>]"
 
-#: builtin/notes.c:63
+#: builtin/notes.c:61
 msgid "git notes edit [<object>]"
 msgstr "git notes edit [<objekt>]"
 
-#: builtin/notes.c:68
+#: builtin/notes.c:66
 msgid "git notes show [<object>]"
 msgstr "git notes show [<objekt>]"
 
-#: builtin/notes.c:73
+#: builtin/notes.c:71
 msgid "git notes merge [<options>] <notes_ref>"
 msgstr "git notes merge [<flaggor>] <anteckningsref>"
 
-#: builtin/notes.c:74
+#: builtin/notes.c:72
 msgid "git notes merge --commit [<options>]"
 msgstr "git notes merge --commit [<flaggor>]"
 
-#: builtin/notes.c:75
+#: builtin/notes.c:73
 msgid "git notes merge --abort [<options>]"
 msgstr "git notes merge --abort [<flaggor>]"
 
-#: builtin/notes.c:80
+#: builtin/notes.c:78
 msgid "git notes remove [<object>]"
 msgstr "git notes remove [<objekt>]"
 
-#: builtin/notes.c:85
+#: builtin/notes.c:83
 msgid "git notes prune [<options>]"
 msgstr "git notes prune [<flaggor>]"
 
-#: builtin/notes.c:90
+#: builtin/notes.c:88
 msgid "git notes get-ref"
 msgstr "git notes get-ref"
 
-#: builtin/notes.c:139
+#: builtin/notes.c:137
 #, c-format
 msgid "unable to start 'show' for object '%s'"
 msgstr "kunde inte starta \"show\" för objektet \"%s\""
 
-#: builtin/notes.c:143
+#: builtin/notes.c:141
 msgid "could not read 'show' output"
 msgstr "kunde inte läsa utdata från \"show\""
 
-#: builtin/notes.c:151
+#: builtin/notes.c:149
 #, c-format
 msgid "failed to finish 'show' for object '%s'"
 msgstr "kunde inte avsluta \"show\" för objektet \"%s\""
 
-#: builtin/notes.c:169 builtin/tag.c:341
+#: builtin/notes.c:167 builtin/tag.c:341
 #, c-format
 msgid "could not create file '%s'"
 msgstr "kunde inte skapa filen \"%s\""
 
-#: builtin/notes.c:188
+#: builtin/notes.c:186
 msgid "Please supply the note contents using either -m or -F option"
 msgstr "Ange innehåll för anteckningen med antingen -m eller -F"
 
-#: builtin/notes.c:209 builtin/notes.c:972
+#: builtin/notes.c:207 builtin/notes.c:844
 #, c-format
 msgid "Removing note for object %s\n"
 msgstr "Tar bort anteckning för objektet %s\n"
 
-#: builtin/notes.c:214
+#: builtin/notes.c:212
 msgid "unable to write note object"
 msgstr "kunde inte skriva anteckningsobjekt"
 
-#: builtin/notes.c:216
+#: builtin/notes.c:214
 #, c-format
 msgid "The note contents has been left in %s"
 msgstr "Anteckningens innehåll har lämnats kvar i %s"
 
-#: builtin/notes.c:250 builtin/tag.c:540
+#: builtin/notes.c:248 builtin/tag.c:540
 #, c-format
 msgid "cannot read '%s'"
 msgstr "kunde inte läsa \"%s\""
 
-#: builtin/notes.c:252 builtin/tag.c:543
+#: builtin/notes.c:250 builtin/tag.c:543
 #, c-format
 msgid "could not open or read '%s'"
 msgstr "kunde inte öppna eller läsa \"%s\""
 
-#: builtin/notes.c:271 builtin/notes.c:444 builtin/notes.c:446
-#: builtin/notes.c:506 builtin/notes.c:560 builtin/notes.c:643
-#: builtin/notes.c:648 builtin/notes.c:723 builtin/notes.c:765
-#: builtin/notes.c:967 builtin/tag.c:556
+#: builtin/notes.c:269 builtin/notes.c:316 builtin/notes.c:318
+#: builtin/notes.c:378 builtin/notes.c:432 builtin/notes.c:515
+#: builtin/notes.c:520 builtin/notes.c:595 builtin/notes.c:637
+#: builtin/notes.c:839 builtin/tag.c:556
 #, c-format
 msgid "Failed to resolve '%s' as a valid ref."
 msgstr "Kunde inte slå upp \"%s\" som en giltig referens."
 
-#: builtin/notes.c:274
+#: builtin/notes.c:272
 #, c-format
 msgid "Failed to read object '%s'."
 msgstr "Kunde inte läsa objektet \"%s\"."
 
-#: builtin/notes.c:298
-msgid "Cannot commit uninitialized/unreferenced notes tree"
-msgstr "Kan inte checka in oinitierat/orefererat anteckningsträd"
-
-#: builtin/notes.c:339
-#, c-format
-msgid "Bad notes.rewriteMode value: '%s'"
-msgstr "Felaktigt värde för notes.rewriteMode: '%s'"
-
-#: builtin/notes.c:349
-#, c-format
-msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
-msgstr "Vägrar skriva över anteckningar i %s (utanför refs/notes/)"
-
-#. TRANSLATORS: The first %s is the name of the
-#. environment variable, the second %s is its value
-#: builtin/notes.c:376
-#, c-format
-msgid "Bad %s value: '%s'"
-msgstr "Felaktigt värde på %s: \"%s\""
-
-#: builtin/notes.c:440
+#: builtin/notes.c:312
 #, c-format
 msgid "Malformed input line: '%s'."
 msgstr "Felaktig indatarad: \"%s\"."
 
-#: builtin/notes.c:455
+#: builtin/notes.c:327
 #, c-format
 msgid "Failed to copy notes from '%s' to '%s'"
 msgstr "Misslyckades kopiera anteckningar från \"%s\" till \"%s\""
 
-#: builtin/notes.c:499 builtin/notes.c:553 builtin/notes.c:626
-#: builtin/notes.c:638 builtin/notes.c:711 builtin/notes.c:758
-#: builtin/notes.c:1032
+#: builtin/notes.c:371 builtin/notes.c:425 builtin/notes.c:498
+#: builtin/notes.c:510 builtin/notes.c:583 builtin/notes.c:630
+#: builtin/notes.c:904
 msgid "too many parameters"
 msgstr "för många parametrar"
 
-#: builtin/notes.c:512 builtin/notes.c:771
+#: builtin/notes.c:384 builtin/notes.c:643
 #, c-format
 msgid "No note found for object %s."
 msgstr "Inga anteckningar hittades för objektet %s."
 
-#: builtin/notes.c:534 builtin/notes.c:691
+#: builtin/notes.c:406 builtin/notes.c:563
 msgid "note contents as a string"
 msgstr "anteckningsinnehåll som sträng"
 
-#: builtin/notes.c:537 builtin/notes.c:694
+#: builtin/notes.c:409 builtin/notes.c:566
 msgid "note contents in a file"
 msgstr "anteckningsinnehåll i en fil"
 
-#: builtin/notes.c:539 builtin/notes.c:542 builtin/notes.c:696
-#: builtin/notes.c:699 builtin/tag.c:474
+#: builtin/notes.c:411 builtin/notes.c:414 builtin/notes.c:568
+#: builtin/notes.c:571 builtin/tag.c:474
 msgid "object"
 msgstr "objekt"
 
-#: builtin/notes.c:540 builtin/notes.c:697
+#: builtin/notes.c:412 builtin/notes.c:569
 msgid "reuse and edit specified note object"
 msgstr "återanvänd och redigera angivet anteckningsobjekt"
 
-#: builtin/notes.c:543 builtin/notes.c:700
+#: builtin/notes.c:415 builtin/notes.c:572
 msgid "reuse specified note object"
 msgstr "återanvänd angivet anteckningsobjekt"
 
-#: builtin/notes.c:545 builtin/notes.c:613
+#: builtin/notes.c:417 builtin/notes.c:485
 msgid "replace existing notes"
 msgstr "ersätt befintliga anteckningar"
 
-#: builtin/notes.c:579
+#: builtin/notes.c:451
 #, c-format
 msgid ""
 "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
@@ -6933,24 +7163,24 @@ msgstr ""
 "Kan inte lägga till anteckningar. Hittade befintliga anteckningar för "
 "objektet %s. Använd \"-f\" för att skriva över befintliga anteckningar"
 
-#: builtin/notes.c:584 builtin/notes.c:661
+#: builtin/notes.c:456 builtin/notes.c:533
 #, c-format
 msgid "Overwriting existing notes for object %s\n"
 msgstr "Skriver över befintliga anteckningar för objektet %s\n"
 
-#: builtin/notes.c:614
+#: builtin/notes.c:486
 msgid "read objects from stdin"
 msgstr "läs objekt från standard in"
 
-#: builtin/notes.c:616
+#: builtin/notes.c:488
 msgid "load rewriting config for <command> (implies --stdin)"
 msgstr "läs omskrivningsinställning för <kommando> (implicerar --stdin)"
 
-#: builtin/notes.c:634
+#: builtin/notes.c:506
 msgid "too few parameters"
 msgstr "för få parametrar"
 
-#: builtin/notes.c:655
+#: builtin/notes.c:527
 #, c-format
 msgid ""
 "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
@@ -6959,12 +7189,12 @@ msgstr ""
 "Kan inte kopiera anteckningar. Hittade befintliga anteckningar för objektet "
 "%s. Använd \"-f\" för att skriva över befintliga anteckningar"
 
-#: builtin/notes.c:667
+#: builtin/notes.c:539
 #, c-format
 msgid "Missing notes on source object %s. Cannot copy."
 msgstr "Anteckningar på källobjektet %s saknas. Kan inte kopiera."
 
-#: builtin/notes.c:716
+#: builtin/notes.c:588
 #, c-format
 msgid ""
 "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n"
@@ -6973,15 +7203,15 @@ msgstr ""
 "Flaggorna -m/-F/-c/-C rekommenderas inte för underkommandot \"edit\".\n"
 "Använd \"git notes add -f -m/-F/-c/-C\" istället.\n"
 
-#: builtin/notes.c:863
+#: builtin/notes.c:735
 msgid "General options"
 msgstr "Allmänna flaggor"
 
-#: builtin/notes.c:865
+#: builtin/notes.c:737
 msgid "Merge options"
 msgstr "Flaggor för sammanslagning"
 
-#: builtin/notes.c:867
+#: builtin/notes.c:739
 msgid ""
 "resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
 "cat_sort_uniq)"
@@ -6989,46 +7219,46 @@ msgstr ""
 "läs konflikter i anteckningar med angiven strategi (manual/ours/theirs/union/"
 "cat_sort_uniq)"
 
-#: builtin/notes.c:869
+#: builtin/notes.c:741
 msgid "Committing unmerged notes"
 msgstr "Checkar in ej sammanslagna anteckningar"
 
-#: builtin/notes.c:871
+#: builtin/notes.c:743
 msgid "finalize notes merge by committing unmerged notes"
 msgstr ""
 "färdigställ sammanslagning av anteckningar genom att checka in ej "
 "sammanslagna anteckningar"
 
-#: builtin/notes.c:873
+#: builtin/notes.c:745
 msgid "Aborting notes merge resolution"
 msgstr "Avbryt lösning av sammanslagning av anteckningar"
 
-#: builtin/notes.c:875
+#: builtin/notes.c:747
 msgid "abort notes merge"
 msgstr "avbryt sammanslagning av anteckningar"
 
-#: builtin/notes.c:970
+#: builtin/notes.c:842
 #, c-format
 msgid "Object %s has no note\n"
 msgstr "Objektet %s har ingen anteckning\n"
 
-#: builtin/notes.c:982
+#: builtin/notes.c:854
 msgid "attempt to remove non-existent note is not an error"
 msgstr "försök att ta bort icke-existerande anteckningar är inte ett fel"
 
-#: builtin/notes.c:985
+#: builtin/notes.c:857
 msgid "read object names from the standard input"
 msgstr "läs objektnamn från standard in"
 
-#: builtin/notes.c:1066
+#: builtin/notes.c:938
 msgid "notes_ref"
 msgstr "anteckningar-ref"
 
-#: builtin/notes.c:1067
+#: builtin/notes.c:939
 msgid "use notes from <notes_ref>"
 msgstr "använd anteckningar från <anteckningsref>"
 
-#: builtin/notes.c:1102 builtin/remote.c:1598
+#: builtin/notes.c:974 builtin/remote.c:1598
 #, c-format
 msgid "Unknown subcommand: %s"
 msgstr "Okänt underkommando: %s"
@@ -7264,7 +7494,7 @@ msgstr ""
 "    git push %s %s\n"
 "%s"
 
-#: builtin/push.c:121
+#: builtin/push.c:117
 #, c-format
 msgid ""
 "You are not currently on a branch.\n"
@@ -7279,7 +7509,7 @@ msgstr ""
 "\n"
 "    git push %s HEAD:<namn-på-fjärrgren>\n"
 
-#: builtin/push.c:128
+#: builtin/push.c:131
 #, c-format
 msgid ""
 "The current branch %s has no upstream branch.\n"
@@ -7292,12 +7522,12 @@ msgstr ""
 "\n"
 "    git push --set-upstream %s %s\n"
 
-#: builtin/push.c:136
+#: builtin/push.c:139
 #, c-format
 msgid "The current branch %s has multiple upstream branches, refusing to push."
 msgstr "Den aktuella grenen %s har flera uppströmsgrenar, vägrar sända."
 
-#: builtin/push.c:139
+#: builtin/push.c:142
 #, c-format
 msgid ""
 "You are pushing to remote '%s', which is not the upstream of\n"
@@ -7308,7 +7538,7 @@ msgstr ""
 "aktuella grenen \"%s\", utan att tala om för mig vad som\n"
 "skall sändas för att uppdatera fjärrgrenen."
 
-#: builtin/push.c:151
+#: builtin/push.c:165
 msgid ""
 "push.default is unset; its implicit value is changing in\n"
 "Git 2.0 from 'matching' to 'simple'. To squelch this message\n"
@@ -7342,26 +7572,26 @@ msgstr ""
 "liknande läget \"current\" istället för \"simple\" om du ibland använder\n"
 "äldre versioner av Git.)"
 
-#: builtin/push.c:199
+#: builtin/push.c:225
 msgid ""
 "You didn't specify any refspecs to push, and push.default is \"nothing\"."
 msgstr ""
 "Du angav inga referensspecifikationer att sända, och push.default är "
 "\"nothing\"."
 
-#: builtin/push.c:206
+#: builtin/push.c:232
 msgid ""
 "Updates were rejected because the tip of your current branch is behind\n"
-"its remote counterpart. Merge the remote changes (e.g. 'git pull')\n"
-"before pushing again.\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 ""
 "Uppdateringar avvisades då änden på din befintliga gren är bakom\n"
-"dess fjärrmotsvarighet. Slå ihop fjärrändringarna (t.ex. \"git pull\")\n"
-"innan du sänder igen.\n"
+"dess fjärrmotsvarighet. Integrera fjärrändringarna (t.ex\n"
+"\"git pull ....\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forward\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:212
+#: builtin/push.c:238
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
 "counterpart. If you did not intend to push that branch, you may want to\n"
@@ -7375,37 +7605,37 @@ msgstr ""
 "endast\n"
 "sända aktuell gren."
 
-#: builtin/push.c:218
+#: builtin/push.c:244
 msgid ""
 "Updates were rejected because a pushed branch tip is behind its remote\n"
-"counterpart. Check out this branch and merge the remote changes\n"
-"(e.g. 'git pull') before pushing again.\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 ""
 "Uppdateringar avvisades då änden på en gren som sänds in är bakom dess\n"
-"fjärrmotsvarighet. Checka ut grenen och slå ihop fjärrändringarna (t.ex.\n"
-"\"git pull\") innan du sänder igen.\n"
+"fjärrmotsvarighet. Checka ut grenen och integrera fjärrändringarna (t.ex.\n"
+"\"git pull ...\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forward\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:224
+#: builtin/push.c:250
 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 merge the remote changes (e.g.,\n"
-"'git pull') before pushing again.\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 ""
 "Uppdateringar avvisades då fjärren innehåller ändringar som du inte\n"
 "har lokalt. Det beror oftast på att ett annat arkiv har sänt in samma\n"
-"referenser. Det kan vara en idé att först slå ihop fjärrändringarna\n"
-"(t.ex. \"git pull\") innan du sänder igen.\n"
+"referenser. Det kan vara en idé att först integrera fjärrändringarna\n"
+"(t.ex. \"git pull ...\") innan du sänder igen.\n"
 "Se avsnittet \"Note about fast-forwards\" i \"git push --help\" för detaljer."
 
-#: builtin/push.c:231
+#: builtin/push.c:257
 msgid "Updates were rejected because the tag already exists in the remote."
 msgstr "Uppdateringarna avvisades eftersom taggen redan finns på fjärren."
 
-#: builtin/push.c:234
+#: builtin/push.c:260
 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"
@@ -7416,22 +7646,22 @@ msgstr ""
 "pekar på något som inte är en incheckning, utan att använda flaggan\n"
 "\"--force\".\n"
 
-#: builtin/push.c:294
+#: builtin/push.c:320
 #, c-format
 msgid "Pushing to %s\n"
 msgstr "Sänder till %s\n"
 
-#: builtin/push.c:298
+#: builtin/push.c:324
 #, c-format
 msgid "failed to push some refs to '%s'"
 msgstr "misslyckades sända vissa referenser till \"%s\""
 
-#: builtin/push.c:331
+#: builtin/push.c:357
 #, c-format
 msgid "bad repository '%s'"
 msgstr "felaktigt arkiv \"%s\""
 
-#: builtin/push.c:332
+#: builtin/push.c:358
 msgid ""
 "No configured push destination.\n"
 "Either specify the URL from the command-line or configure a remote "
@@ -7452,87 +7682,87 @@ msgstr ""
 "\n"
 "    git push <namn>\n"
 
-#: builtin/push.c:347
+#: builtin/push.c:373
 msgid "--all and --tags are incompatible"
 msgstr "--all och --tags är inkompatibla"
 
-#: builtin/push.c:348
+#: builtin/push.c:374
 msgid "--all can't be combined with refspecs"
 msgstr "--all kan inte kombineras med referensspecifikationer"
 
-#: builtin/push.c:353
+#: builtin/push.c:379
 msgid "--mirror and --tags are incompatible"
 msgstr "--mirror och --tags är inkompatibla"
 
-#: builtin/push.c:354
+#: builtin/push.c:380
 msgid "--mirror can't be combined with refspecs"
 msgstr "--mirror kan inte kombineras med referensspecifikationer"
 
-#: builtin/push.c:359
+#: builtin/push.c:385
 msgid "--all and --mirror are incompatible"
 msgstr "--all och --mirror är inkompatibla"
 
-#: builtin/push.c:419
+#: builtin/push.c:445
 msgid "repository"
 msgstr "arkiv"
 
-#: builtin/push.c:420
+#: builtin/push.c:446
 msgid "push all refs"
 msgstr "sänd alla referenser"
 
-#: builtin/push.c:421
+#: builtin/push.c:447
 msgid "mirror all refs"
 msgstr "spegla alla referenser"
 
-#: builtin/push.c:423
+#: builtin/push.c:449
 msgid "delete refs"
 msgstr "ta bort referenser"
 
-#: builtin/push.c:424
+#: builtin/push.c:450
 msgid "push tags (can't be used with --all or --mirror)"
 msgstr "sänd taggar (kan inte användas med --all eller --mirror)"
 
-#: builtin/push.c:427
+#: builtin/push.c:453
 msgid "force updates"
 msgstr "tvinga uppdateringar"
 
-#: builtin/push.c:428
+#: builtin/push.c:454
 msgid "check"
 msgstr "kontrollera"
 
-#: builtin/push.c:429
+#: builtin/push.c:455
 msgid "control recursive pushing of submodules"
 msgstr "styr rekursiv insändning av undermoduler"
 
-#: builtin/push.c:431
+#: builtin/push.c:457
 msgid "use thin pack"
 msgstr "använd tunna paket"
 
-#: builtin/push.c:432 builtin/push.c:433
+#: builtin/push.c:458 builtin/push.c:459
 msgid "receive pack program"
 msgstr "program för att ta emot paket"
 
-#: builtin/push.c:434
+#: builtin/push.c:460
 msgid "set upstream for git pull/status"
 msgstr "ställ in uppström för git pull/status"
 
-#: builtin/push.c:437
+#: builtin/push.c:463
 msgid "prune locally removed refs"
 msgstr "ta bort lokalt borttagna referenser"
 
-#: builtin/push.c:439
+#: builtin/push.c:465
 msgid "bypass pre-push hook"
 msgstr "förbigå pre-push-krok"
 
-#: builtin/push.c:440
+#: builtin/push.c:466
 msgid "push missing but relevant tags"
 msgstr "sänd in saknade men relevanta taggar"
 
-#: builtin/push.c:450
+#: builtin/push.c:476
 msgid "--delete is incompatible with --all, --mirror and --tags"
 msgstr "--delete är imkompatibel med --all, --mirror och --tags"
 
-#: builtin/push.c:452
+#: builtin/push.c:478
 msgid "--delete doesn't make sense without any refs"
 msgstr "--delete kan inte användas utan referenser"
 
@@ -7546,70 +7776,80 @@ msgstr ""
 "[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--"
 "index-output=<fil>] (--empty | <träd-igt1> [<träd-igt2> [<träd-igt3>]])"
 
-#: builtin/read-tree.c:108
+#: builtin/read-tree.c:109
 msgid "write resulting index to <file>"
 msgstr "skriv resulterande index till <fil>"
 
-#: builtin/read-tree.c:111
+#: builtin/read-tree.c:112
 msgid "only empty the index"
 msgstr "töm bara indexet"
 
-#: builtin/read-tree.c:113
+#: builtin/read-tree.c:114
 msgid "Merging"
 msgstr "Sammanslagning"
 
-#: builtin/read-tree.c:115
+#: builtin/read-tree.c:116
 msgid "perform a merge in addition to a read"
 msgstr "utför en sammanslagning i tillägg till en läsning"
 
-#: builtin/read-tree.c:117
+#: builtin/read-tree.c:118
 msgid "3-way merge if no file level merging required"
 msgstr "3-vägssammanslagning om sammanslagning på filnivå ej krävs"
 
-#: builtin/read-tree.c:119
+#: builtin/read-tree.c:120
 msgid "3-way merge in presence of adds and removes"
 msgstr "3-vägssammanslagning när det finns tillägg och borttagningar"
 
-#: builtin/read-tree.c:121
+#: builtin/read-tree.c:122
 msgid "same as -m, but discard unmerged entries"
 msgstr "som -m, men kasta bort ej sammanslagna poster"
 
-#: builtin/read-tree.c:122
+#: builtin/read-tree.c:123
 msgid "<subdirectory>/"
 msgstr "<underkatalog>/"
 
-#: builtin/read-tree.c:123
+#: builtin/read-tree.c:124
 msgid "read the tree into the index under <subdirectory>/"
 msgstr "läs in trädet i indexet under <underkatalog>/"
 
-#: builtin/read-tree.c:126
+#: builtin/read-tree.c:127
 msgid "update working tree with merge result"
 msgstr "uppdatera arbetskatalogen med resultatet från sammanslagningen"
 
-#: builtin/read-tree.c:128
+#: builtin/read-tree.c:129
 msgid "gitignore"
 msgstr "gitignore"
 
-#: builtin/read-tree.c:129
+#: builtin/read-tree.c:130
 msgid "allow explicitly ignored files to be overwritten"
 msgstr "tillåt explicit ignorerade filer att skrivas över"
 
-#: builtin/read-tree.c:132
+#: builtin/read-tree.c:133
 msgid "don't check the working tree after merging"
 msgstr "kontrollera inte arbetskatalogen efter sammanslagning"
 
-#: builtin/read-tree.c:133
+#: builtin/read-tree.c:134
 msgid "don't update the index or the work tree"
 msgstr "uppdatera inte indexet eller arbetskatalogen"
 
-#: builtin/read-tree.c:135
+#: builtin/read-tree.c:136
 msgid "skip applying sparse checkout filter"
 msgstr "hoppa över att applicera filter för gles utcheckning"
 
-#: builtin/read-tree.c:137
+#: builtin/read-tree.c:138
 msgid "debug unpack-trees"
 msgstr "felsök unpack-trees"
 
+#: builtin/reflog.c:500
+#, c-format
+msgid "%s' for '%s' is not a valid timestamp"
+msgstr "\"%s\" för \"%s\" är inte en giltig tidsstämpel"
+
+#: builtin/reflog.c:616 builtin/reflog.c:621
+#, c-format
+msgid "'%s' is not a valid timestamp"
+msgstr "\"%s\" är inte en giltig tidsstämpel"
+
 #: builtin/remote.c:11
 msgid "git remote [-v | --verbose]"
 msgstr "git remote [-v | --verbose]"
@@ -8183,96 +8423,96 @@ msgstr "Kunde inte hitta träder för HEAD."
 msgid "Failed to find tree of %s."
 msgstr "Kunde inte hitta träder för %s."
 
-#: builtin/reset.c:98
+#: builtin/reset.c:99
 #, c-format
 msgid "HEAD is now at %s"
 msgstr "HEAD är nu på %s"
 
-#: builtin/reset.c:169
+#: builtin/reset.c:172
 #, c-format
 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:248
+#: builtin/reset.c:251
 msgid "be quiet, only report errors"
 msgstr "var tyst, rapportera endast fel"
 
-#: builtin/reset.c:250
+#: builtin/reset.c:253
 msgid "reset HEAD and index"
 msgstr "återställ HEAD och index"
 
-#: builtin/reset.c:251
+#: builtin/reset.c:254
 msgid "reset only HEAD"
 msgstr "återställ endast HEAD"
 
-#: builtin/reset.c:253 builtin/reset.c:255
+#: builtin/reset.c:256 builtin/reset.c:258
 msgid "reset HEAD, index and working tree"
 msgstr "återställ HEAD, index och arbetskatalog"
 
-#: builtin/reset.c:257
+#: builtin/reset.c:260
 msgid "reset HEAD but keep local changes"
 msgstr "återställ HEAD men behåll lokala ändringar"
 
-#: builtin/reset.c:275
+#: builtin/reset.c:278
 #, c-format
 msgid "Failed to resolve '%s' as a valid revision."
 msgstr "Kunde inte slå upp \"%s\" som en giltig revision."
 
-#: builtin/reset.c:278 builtin/reset.c:286
+#: builtin/reset.c:281 builtin/reset.c:289
 #, c-format
 msgid "Could not parse object '%s'."
 msgstr "Kan inte tolka objektet \"%s\""
 
-#: builtin/reset.c:283
+#: builtin/reset.c:286
 #, c-format
 msgid "Failed to resolve '%s' as a valid tree."
 msgstr "Kunde inte slå upp \"%s\" som ett giltigt träd."
 
-#: builtin/reset.c:292
+#: builtin/reset.c:295
 msgid "--patch is incompatible with --{hard,mixed,soft}"
 msgstr "--patch är inkompatibel med --{hard,mixed,soft}"
 
-#: builtin/reset.c:301
+#: builtin/reset.c:304
 msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
 msgstr ""
 "--mixed rekommenderas inte med sökvägar; använd \"git reset -- <sökvägar>\"."
 
-#: builtin/reset.c:303
+#: builtin/reset.c:306
 #, c-format
 msgid "Cannot do %s reset with paths."
 msgstr "Kan inte göra %s återställning med sökvägar."
 
-#: builtin/reset.c:313
+#: builtin/reset.c:316
 #, c-format
 msgid "%s reset is not allowed in a bare repository"
 msgstr "%s återställning tillåts inte i ett naket arkiv"
 
-#: builtin/reset.c:333
+#: builtin/reset.c:336
 #, c-format
 msgid "Could not reset index file to revision '%s'."
 msgstr "Kunde inte återställa indexfilen till versionen \"%s\"."
 
-#: builtin/reset.c:339
+#: builtin/reset.c:342
 msgid "Unstaged changes after reset:"
 msgstr "Oköade ändringar efter återställning:"
 
-#: builtin/reset.c:344
+#: builtin/reset.c:347
 msgid "Could not write new index file."
 msgstr "Kunde inte skriva ny indexfil."
 
-#: builtin/rev-parse.c:339
+#: builtin/rev-parse.c:345
 msgid "git rev-parse --parseopt [options] -- [<args>...]"
 msgstr "git rev-parse --parseopt [options] -- [<argument>...]"
 
-#: builtin/rev-parse.c:344
+#: builtin/rev-parse.c:350
 msgid "keep the `--` passed as an arg"
 msgstr "behåll \"--\" sänt som argument"
 
-#: builtin/rev-parse.c:346
+#: builtin/rev-parse.c:352
 msgid "stop parsing after the first non-option argument"
 msgstr "sluta tolka efter första argument som inte är flagga"
 
-#: builtin/rev-parse.c:464
+#: builtin/rev-parse.c:470
 msgid ""
 "git rev-parse --parseopt [options] -- [<args>...]\n"
 "   or: git rev-parse --sq-quote [<arg>...]\n"
@@ -8303,146 +8543,171 @@ msgstr "git cherry-pick [flaggor] <incheckning-igt>..."
 msgid "git cherry-pick <subcommand>"
 msgstr "git cherry-pick <underkommando>"
 
-#: builtin/revert.c:70 builtin/revert.c:92
+#: builtin/revert.c:71 builtin/revert.c:94
 #, c-format
 msgid "%s: %s cannot be used with %s"
 msgstr "%s: %s kan inte användas med %s"
 
-#: builtin/revert.c:103
+#: builtin/revert.c:105
 msgid "end revert or cherry-pick sequence"
 msgstr "avsluta revert- eller cherry-pick-sekvens"
 
-#: builtin/revert.c:104
+#: builtin/revert.c:106
 msgid "resume revert or cherry-pick sequence"
 msgstr "återuppta revert- eller cherry-pick-sekvens"
 
-#: builtin/revert.c:105
+#: builtin/revert.c:107
 msgid "cancel revert or cherry-pick sequence"
 msgstr "avbryt revert- eller cherry-pick-sekvens"
 
-#: builtin/revert.c:106
+#: builtin/revert.c:108
 msgid "don't automatically commit"
 msgstr "checka inte in automatiskt"
 
-#: builtin/revert.c:107
+#: builtin/revert.c:109
 msgid "edit the commit message"
 msgstr "redigera incheckningsmeddelandet"
 
-#: builtin/revert.c:110
+#: builtin/revert.c:112
 msgid "parent number"
 msgstr "nummer på förälder"
 
-#: builtin/revert.c:112
+#: builtin/revert.c:114
 msgid "merge strategy"
 msgstr "sammanslagninsstrategi"
 
-#: builtin/revert.c:113
+#: builtin/revert.c:115
 msgid "option"
 msgstr "alternativ"
 
-#: builtin/revert.c:114
+#: builtin/revert.c:116
 msgid "option for merge strategy"
 msgstr "alternativ för sammanslagningsstrategi"
 
-#: builtin/revert.c:125
+#: builtin/revert.c:127
 msgid "append commit name"
 msgstr "lägg till incheckningsnamn"
 
-#: builtin/revert.c:126
+#: builtin/revert.c:128
 msgid "allow fast-forward"
 msgstr "tillåt snabbspolning"
 
-#: builtin/revert.c:127
+#: builtin/revert.c:129
 msgid "preserve initially empty commits"
 msgstr "behåll incheckningar som börjar som tomma"
 
-#: builtin/revert.c:128
+#: builtin/revert.c:130
 msgid "allow commits with empty messages"
 msgstr "tillåt incheckningar med tomt meddelande"
 
-#: builtin/revert.c:129
+#: builtin/revert.c:131
 msgid "keep redundant, empty commits"
 msgstr "behåll redundanta, tomma incheckningar"
 
-#: builtin/revert.c:133
+#: builtin/revert.c:135
 msgid "program error"
 msgstr "programfel"
 
-#: builtin/revert.c:223
+#: builtin/revert.c:225
 msgid "revert failed"
 msgstr "\"revert\" misslyckades"
 
-#: builtin/revert.c:238
+#: builtin/revert.c:240
 msgid "cherry-pick failed"
 msgstr "\"cherry-pick\" misslyckades"
 
-#: builtin/rm.c:15
+#: builtin/rm.c:16
 msgid "git rm [options] [--] <file>..."
 msgstr "git rm [flaggor] [--] <fil>..."
 
-#: builtin/rm.c:64 builtin/rm.c:186
-#, c-format
+#: builtin/rm.c:64
+msgid ""
+"the following submodule (or one of its nested submodules)\n"
+"uses a .git directory:"
+msgid_plural ""
+"the following submodules (or one of its nested submodules)\n"
+"use a .git directory:"
+msgstr[0] ""
+"följande undermodul (eller en av dess nästlade undermoduler)\n"
+"använder en .git-katalog:"
+msgstr[1] ""
+"följande undermoduler (eller en av deras nästlade undermoduler)\n"
+"använder en .git-katalog:"
+
+#: builtin/rm.c:70
 msgid ""
-"submodule '%s' (or one of its nested submodules) uses a .git directory\n"
+"\n"
 "(use 'rm -rf' if you really want to remove it including all of its history)"
 msgstr ""
-"undermodulen \"%s\" (eller en av dess undermoduler) använder en .git-"
-"katalog\n"
+"\n"
 "(använd \"rm -rf\" om du verkligen vill ta bort den och all dess historik)"
 
-#: builtin/rm.c:174
-#, c-format
+#: builtin/rm.c:230
 msgid ""
-"'%s' has staged content different from both the file and the HEAD\n"
+"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] ""
+"följande fil har köat innehåll som skiljer sig både från filen och HEAD:"
+msgstr[1] ""
+"följande filer har köat innehåll som skiljer sig både från filen och HEAD:"
+
+#: builtin/rm.c:235
+msgid ""
+"\n"
 "(use -f to force removal)"
 msgstr ""
-"\"%s\" har köat ändringar som skiljer sig både från filen och HEAD\n"
+"\n"
 "(använd -f för att tvinga borttagning)"
 
-#: builtin/rm.c:180
-#, c-format
-msgid ""
-"'%s' has changes staged in the index\n"
-"(use --cached to keep the file, or -f to force removal)"
-msgstr ""
-"\"%s\" har köade ändringar i indexet\n"
-"(använd --cached för att behålla filen eller -f för att tvinga borttagning)"
+#: builtin/rm.c:239
+msgid "the following file has changes staged in the index:"
+msgid_plural "the following files have changes staged in the index:"
+msgstr[0] "följande fil har ändringar köade i indexet:"
+msgstr[1] "följande filer har ändringar köade i indexet:"
 
-#: builtin/rm.c:191
-#, c-format
+#: builtin/rm.c:243 builtin/rm.c:254
 msgid ""
-"'%s' has local modifications\n"
+"\n"
 "(use --cached to keep the file, or -f to force removal)"
 msgstr ""
-"\"%s\" har lokala ändringar\n"
+"\n"
 "(använd --cached för att behålla filen eller -f för att tvinga borttagning)"
 
-#: builtin/rm.c:207
+#: builtin/rm.c:251
+msgid "the following file has local modifications:"
+msgid_plural "the following files have local modifications:"
+msgstr[0] "följande fil har lokala ändringar:"
+msgstr[1] "följande filer har lokala ändringar:"
+
+#: builtin/rm.c:269
 msgid "do not list removed files"
 msgstr "lista inte borttagna filer"
 
-#: builtin/rm.c:208
+#: builtin/rm.c:270
 msgid "only remove from the index"
 msgstr "ta bara bort från indexet"
 
-#: builtin/rm.c:209
+#: builtin/rm.c:271
 msgid "override the up-to-date check"
 msgstr "överstyr àjour-testet"
 
-#: builtin/rm.c:210
+#: builtin/rm.c:272
 msgid "allow recursive removal"
 msgstr "tillåt rekursiv borttagning"
 
-#: builtin/rm.c:212
+#: builtin/rm.c:274
 msgid "exit with a zero status even if nothing matched"
 msgstr "avsluta med nollstatus även om inget träffades"
 
-#: builtin/rm.c:283
+#: builtin/rm.c:345
 #, c-format
 msgid "not removing '%s' recursively without -r"
 msgstr "tar inte bort \"%s\" rekursivt utan -r"
 
-#: builtin/rm.c:322
+#: builtin/rm.c:384
 #, c-format
 msgid "git rm: unable to remove %s"
 msgstr "git rm: kan inte ta bort %s"
@@ -8456,23 +8721,23 @@ msgstr "git shortlog [<flaggor>] [<versionsintervall>] [[--] <sökväg>...]"
 msgid "Missing author: %s"
 msgstr "Författare saknas: %s"
 
-#: builtin/shortlog.c:227
+#: builtin/shortlog.c:228
 msgid "sort output according to the number of commits per author"
 msgstr "sortera utdata enligt antal incheckningar per författare"
 
-#: builtin/shortlog.c:229
+#: builtin/shortlog.c:230
 msgid "Suppress commit descriptions, only provides commit count"
 msgstr "Undertryck beskrivningar, visa bara antal incheckningar"
 
-#: builtin/shortlog.c:231
+#: builtin/shortlog.c:232
 msgid "Show the email address of each author"
 msgstr "Visa e-postadress för varje författare"
 
-#: builtin/shortlog.c:232
+#: builtin/shortlog.c:233
 msgid "w[,i1[,i2]]"
 msgstr "w[,i1[,i2]]"
 
-#: builtin/shortlog.c:233
+#: builtin/shortlog.c:234
 msgid "Linewrap output"
 msgstr "Radbryt utdata"
 
@@ -8536,23 +8801,23 @@ msgstr "visa referenser som inte kan nås från någon annan referens"
 msgid "show commits in topological order"
 msgstr "visa incheckningar i topologisk ordning"
 
-#: builtin/show-branch.c:671
+#: builtin/show-branch.c:672
 msgid "show only commits not on the first branch"
 msgstr "visa endast incheckningar inte på den första grenen"
 
-#: builtin/show-branch.c:673
+#: builtin/show-branch.c:674
 msgid "show merges reachable from only one tip"
 msgstr "visa sammanslagningar som endast kan nås från en spets"
 
-#: builtin/show-branch.c:675
-msgid "show commits where no parent comes before its children"
-msgstr "visa incheckningar där ingen förälder kommer före dess barn"
+#: builtin/show-branch.c:676
+msgid "topologically sort, maintaining date order where possible"
+msgstr "sortera topologiskt, behåll datumordning när möjligt"
 
-#: builtin/show-branch.c:677
+#: builtin/show-branch.c:679
 msgid "<n>[,<base>]"
 msgstr "<n>[,<bas>]"
 
-#: builtin/show-branch.c:678
+#: builtin/show-branch.c:680
 msgid "show <n> most recent ref-log entries starting at base"
 msgstr "visa <n> nyaste refloggposter med början på bas"
 
@@ -8568,35 +8833,35 @@ msgstr ""
 msgid "git show-ref --exclude-existing[=pattern] < ref-list"
 msgstr "git show-ref --exclude-existing[=mönster] < reflista"
 
-#: builtin/show-ref.c:165
+#: builtin/show-ref.c:168
 msgid "only show tags (can be combined with heads)"
 msgstr "visa endast taggar (kan kombineras med huvuden)"
 
-#: builtin/show-ref.c:166
+#: builtin/show-ref.c:169
 msgid "only show heads (can be combined with tags)"
 msgstr "visa endast huvuden (kan kombineras med taggar)"
 
-#: builtin/show-ref.c:167
+#: builtin/show-ref.c:170
 msgid "stricter reference checking, requires exact ref path"
 msgstr "striktare referenskontroll, kräver exakt referenssökväg"
 
-#: builtin/show-ref.c:170 builtin/show-ref.c:172
-msgid "show the HEAD reference"
-msgstr "visa HEAD-referensen"
+#: builtin/show-ref.c:173 builtin/show-ref.c:176
+msgid "show the HEAD reference, even if it would be filtered out"
+msgstr "visa HEAD-refrens, även när den skulle filtreras ut"
 
-#: builtin/show-ref.c:174
+#: builtin/show-ref.c:178
 msgid "dereference tags into object IDs"
 msgstr "avreferera taggar till objekt-id"
 
-#: builtin/show-ref.c:176
+#: builtin/show-ref.c:180
 msgid "only show SHA1 hash using <n> digits"
 msgstr "visa SHA1-hash endast med <n> siffror"
 
-#: builtin/show-ref.c:180
+#: builtin/show-ref.c:184
 msgid "do not print results to stdout (useful with --verify)"
 msgstr "visa inte resultat på standard ut (användbart med --verify)"
 
-#: builtin/show-ref.c:182
+#: builtin/show-ref.c:186
 msgid "show refs from stdin that aren't in local repository"
 msgstr "visa referenser från standard in som inte finns i lokalt arkiv"
 
@@ -9011,7 +9276,7 @@ msgstr "visa trädobjekt för underkatalogen <prefix>"
 msgid "only useful for debugging"
 msgstr "endast användbart vid felsökning"
 
-#: git.c:16
+#: git.c:17
 msgid ""
 "'git help -a' and 'git help -g' lists available subcommands and some\n"
 "concept guides. See 'git help <command>' or 'git help <concept>'\n"
@@ -9021,19 +9286,23 @@ msgstr ""
 "några konceptvägledningar. Se \"git help <kommando>\" eller \"git help\n"
 "<koncept>\" för att läsa mer om specifika underkommandon och koncept."
 
-#: parse-options.h:156
+#: parse-options.h:144
+msgid "expiry date"
+msgstr "giltig till"
+
+#: parse-options.h:159
 msgid "no-op (backward compatibility)"
 msgstr "ingen funktion (bakåtkompatibilitet)"
 
-#: parse-options.h:232
+#: parse-options.h:236
 msgid "be more verbose"
 msgstr "var mer pratsam"
 
-#: parse-options.h:234
+#: parse-options.h:238
 msgid "be more quiet"
 msgstr "var mer tyst"
 
-#: parse-options.h:240
+#: parse-options.h:244
 msgid "use <n> digits to display SHA-1s"
 msgstr "använd <n> siffror för att visa SHA-1:or"
 
@@ -9090,8 +9359,8 @@ msgid "Move or rename a file, a directory, or a symlink"
 msgstr "Flytta eller byt namn på en fil, katalog eller symbolisk länk"
 
 #: common-cmds.h:21
-msgid "Fetch from and merge with another repository or a local branch"
-msgstr "Hämta från och slå ihop med annat arkiv eller en lokal gren"
+msgid "Fetch from and integrate with another repository or a local branch"
+msgstr "Hämta från och integrera med annat arkiv eller en lokal gren"
 
 #: common-cmds.h:22
 msgid "Update remote refs along with associated objects"
@@ -9136,11 +9405,11 @@ msgstr ""
 #: git-am.sh:105
 #, sh-format
 msgid ""
-"When you have resolved this problem, run \"$cmdline --resolved\".\n"
+"When you have resolved this problem, run \"$cmdline --continue\".\n"
 "If you prefer to skip this patch, run \"$cmdline --skip\" instead.\n"
 "To restore the original branch and stop patching, run \"$cmdline --abort\"."
 msgstr ""
-"När du har löst problemet kör du \"$cmdline --resolved\".\n"
+"När du har löst problemet kör du \"$cmdline --continue\".\n"
 "Om du vill hoppa över patchen kör du istället \"$cmdline --skip\".\n"
 "För att återställa originalgrenen och avbryta kör du \"$cmdline --abort\"."
 
@@ -9196,25 +9465,34 @@ msgstr ""
 "Flaggan -b/--binary har varit utan funktion länge, och\n"
 "kommer tas bort. Vi ber dig att inte använda den längre."
 
-#: git-am.sh:477
+#: git-am.sh:479
 #, sh-format
 msgid "previous rebase directory $dotest still exists but mbox given."
 msgstr "tidigare rebase-katalog $dotest finns fortfarande, men mbox angavs."
 
-#: git-am.sh:482
+#: git-am.sh:484
 msgid "Please make up your mind. --skip or --abort?"
 msgstr "Bestäm dig. --skip eller --abort?"
 
-#: git-am.sh:509
+#: git-am.sh:520
+#, sh-format
+msgid ""
+"Stray $dotest directory found.\n"
+"Use \"git am --abort\" to remove it."
+msgstr ""
+"Kvarbliven katalog $dotest hittades.\n"
+"Använd \"git am --abort\" för att ta bort den."
+
+#: git-am.sh:528
 msgid "Resolve operation not in progress, we are not resuming."
 msgstr "Lösningsoperation pågår inte, vi återupptar inte."
 
-#: git-am.sh:575
+#: git-am.sh:594
 #, sh-format
 msgid "Dirty index: cannot apply patches (dirty: $files)"
 msgstr "Smutsigt index: kan inte tillämpa patchar (smutsiga: $files)"
 
-#: git-am.sh:679
+#: git-am.sh:698
 #, sh-format
 msgid ""
 "Patch is empty.  Was it split wrong?\n"
@@ -9225,32 +9503,32 @@ msgstr ""
 "Om du vill hoppa över patchen kör du istället \"$cmdline --skip\".\n"
 "För att återställa originalgrenen och avbryta kör du \"$cmdline --abort\"."
 
-#: git-am.sh:706
+#: git-am.sh:725
 msgid "Patch does not have a valid e-mail address."
 msgstr "Patchen har inte någon giltig e-postadress."
 
-#: git-am.sh:753
+#: git-am.sh:772
 msgid "cannot be interactive without stdin connected to a terminal."
 msgstr ""
 "kan inte vara interaktiv om standard in inte är ansluten till en terminal."
 
-#: git-am.sh:757
+#: git-am.sh:776
 msgid "Commit Body is:"
 msgstr "Incheckningskroppen är:"
 
 #. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
 #. in your translation. The program will only accept English
 #. input at this point.
-#: git-am.sh:764
+#: git-am.sh:783
 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
 msgstr "Tillämpa? Y=ja/N=nej/E=redigera/V=visa patch/A=godta alla "
 
-#: git-am.sh:800
+#: git-am.sh:819
 #, sh-format
 msgid "Applying: $FIRSTLINE"
 msgstr "Tillämpar: $FIRSTLINE"
 
-#: git-am.sh:821
+#: git-am.sh:840
 msgid ""
 "No changes - did you forget to use 'git add'?\n"
 "If there is nothing left to stage, chances are that something else\n"
@@ -9260,7 +9538,7 @@ msgstr ""
 "Om det inte är något kvar att köa kan det hända att något annat redan\n"
 "introducerat samma ändringar; kanske du bör hoppa över patchen."
 
-#: git-am.sh:829
+#: git-am.sh:848
 msgid ""
 "You still have unmerged paths in your index\n"
 "did you forget to use 'git add'?"
@@ -9268,16 +9546,16 @@ msgstr ""
 "Du har fortfarande sökvägar som inte slagits samman i ditt index\n"
 "glömde du använda \"git add\"?"
 
-#: git-am.sh:845
+#: git-am.sh:864
 msgid "No changes -- Patch already applied."
 msgstr "Inga ändringar -- Patchen har redan tillämpats."
 
-#: git-am.sh:855
+#: git-am.sh:874
 #, sh-format
 msgid "Patch failed at $msgnum $FIRSTLINE"
 msgstr "Patchen misslyckades vid $msgnum $FIRSTLINE"
 
-#: git-am.sh:858
+#: git-am.sh:877
 #, sh-format
 msgid ""
 "The copy of the patch that failed is found in:\n"
@@ -9286,7 +9564,7 @@ msgstr ""
 "En kopia av patchen som misslyckades finns i:\n"
 "   $dotest/patch"
 
-#: git-am.sh:876
+#: git-am.sh:895
 msgid "applying to an empty history"
 msgstr "tillämpar på en tom historik"
 
@@ -9489,7 +9767,7 @@ msgstr "Kan inte slå ihop flera grenar i ett tomt huvud."
 msgid "Cannot rebase onto multiple branches"
 msgstr "Kan inte utföra en \"rebase\" ovanpå flera grenar"
 
-#: git-rebase.sh:53
+#: git-rebase.sh:54
 msgid ""
 "When you have resolved this problem, run \"git rebase --continue\".\n"
 "If you prefer to skip this patch, run \"git rebase --skip\" instead.\n"
@@ -9500,31 +9778,50 @@ msgstr ""
 "Om du vill hoppa över patchen kör du istället \"git rebase --skip\".\n"
 "För att återställa originalgrenen och avbryta kör du \"git rebase --abort\"."
 
+#: git-rebase.sh:156
+msgid "Applied autostash."
+msgstr "Tillämpade autostash."
+
+#: git-rebase.sh:159
+#, sh-format
+msgid "Cannot store $stash_sha1"
+msgstr "Kan inte spara $stash_sha1"
+
 #: git-rebase.sh:160
+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 ""
+"Tillämpning av autostash gav konflikter.\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"
+
+#: git-rebase.sh:190
 msgid "The pre-rebase hook refused to rebase."
 msgstr "Kroken pre-rebase vägrade ombaseringen."
 
-#: git-rebase.sh:165
+#: git-rebase.sh:195
 msgid "It looks like git-am is in progress. Cannot rebase."
 msgstr "Det verkar som en git-am körs. Kan inte ombasera."
 
-#: git-rebase.sh:296
+#: git-rebase.sh:329
 msgid "The --exec option must be used with the --interactive option"
 msgstr "Flaggan --exec måste användas tillsammans med flaggan --interactive"
 
-#: git-rebase.sh:301
+#: git-rebase.sh:334
 msgid "No rebase in progress?"
 msgstr "Ingen ombasering pågår?"
 
-#: git-rebase.sh:312
+#: git-rebase.sh:345
 msgid "The --edit-todo action can only be used during interactive rebase."
 msgstr "Åtgärden --edit-todo kan endast användas under interaktiv ombasering."
 
-#: git-rebase.sh:319
+#: git-rebase.sh:352
 msgid "Cannot read HEAD"
 msgstr "Kan inte läsa HEAD"
 
-#: git-rebase.sh:322
+#: git-rebase.sh:355
 msgid ""
 "You must edit all merge conflicts and then\n"
 "mark them as resolved using git add"
@@ -9532,12 +9829,12 @@ msgstr ""
 "Du måste redigera alla sammanslagningskonflikter och\n"
 "därefter markera dem som lösta med git add"
 
-#: git-rebase.sh:340
+#: git-rebase.sh:373
 #, sh-format
 msgid "Could not move back to $head_name"
 msgstr "Kunde inte flytta tillbaka till $head_name"
 
-#: git-rebase.sh:359
+#: git-rebase.sh:392
 #, sh-format
 msgid ""
 "It seems that there is already a $state_dir_base directory, and\n"
@@ -9558,57 +9855,66 @@ msgstr ""
 "och kör programmet igen. Jag avslutar ifall du fortfarande har\n"
 "något av värde där."
 
-#: git-rebase.sh:404
+#: git-rebase.sh:437
 #, sh-format
 msgid "invalid upstream $upstream_name"
 msgstr "ogiltig uppström $upstream_name"
 
-#: git-rebase.sh:428
+#: git-rebase.sh:461
 #, sh-format
 msgid "$onto_name: there are more than one merge bases"
 msgstr "$onto_name: mer än en sammanslagningsbas finns"
 
-#: git-rebase.sh:431 git-rebase.sh:435
+#: git-rebase.sh:464 git-rebase.sh:468
 #, sh-format
 msgid "$onto_name: there is no merge base"
 msgstr "$onto_name: ingen sammanslagningsbas finns"
 
-#: git-rebase.sh:440
+#: git-rebase.sh:473
 #, sh-format
 msgid "Does not point to a valid commit: $onto_name"
 msgstr "Peka på en giltig incheckning: $onto_name"
 
-#: git-rebase.sh:463
+#: git-rebase.sh:496
 #, sh-format
 msgid "fatal: no such branch: $branch_name"
 msgstr "ödesdigert: ingen sådan gren: $branch_name"
 
-#: git-rebase.sh:483
+#: git-rebase.sh:519
+msgid "Cannot autostash"
+msgstr "Kan inte utföra \"autostash\""
+
+#: git-rebase.sh:524
+#, sh-format
+msgid "Created autostash: $stash_abbrev"
+msgstr "Skapade autostash: $stash_abbrev"
+
+#: git-rebase.sh:528
 msgid "Please commit or stash them."
 msgstr "Checka in eller använd \"stash\" på dem."
 
-#: git-rebase.sh:501
+#: git-rebase.sh:548
 #, sh-format
 msgid "Current branch $branch_name is up to date."
 msgstr "Aktuell gren $branch_name är à jour."
 
-#: git-rebase.sh:504
+#: git-rebase.sh:552
 #, sh-format
 msgid "Current branch $branch_name is up to date, rebase forced."
 msgstr "Aktuell gren $branch_name är à jour, ombasering framtvingad."
 
-#: git-rebase.sh:515
+#: git-rebase.sh:563
 #, sh-format
 msgid "Changes from $mb to $onto:"
 msgstr "Ändringar från $mb till $onto:"
 
 #. Detach HEAD and reset the tree
-#: git-rebase.sh:524
+#: git-rebase.sh:572
 msgid "First, rewinding head to replay your work on top of it..."
 msgstr ""
 "Först, spolar tillbaka huvudet för att spela av ditt arbete ovanpå det..."
 
-#: git-rebase.sh:532
+#: git-rebase.sh:582
 #, sh-format
 msgid "Fast-forwarded $branch_name to $onto_name."
 msgstr "Snabbspolade $branch_name till $onto_name."
@@ -9641,6 +9947,11 @@ msgstr "Kan inte ta bort temporärt index (kan inte inträffa)"
 msgid "Cannot record working tree state"
 msgstr "Kan inte registrera tillstånd för arbetskatalog"
 
+#: git-stash.sh:190
+#, sh-format
+msgid "Cannot update $ref_stash with $w_commit"
+msgstr "Kan inte uppdatera $ref_stash med $w_commit"
+
 #. TRANSLATORS: $option is an invalid option, like
 #. `--blah-blah'. The 7 spaces at the beginning of the
 #. second line correspond to "error: ". So you should line
@@ -9651,7 +9962,7 @@ msgstr "Kan inte registrera tillstånd för arbetskatalog"
 #. $ git stash save --blah-blah 2>&1 | head -n 2
 #. error: unknown option for 'stash save': --blah-blah
 #. To provide a message, use git stash save -- '--blah-blah'
-#: git-stash.sh:202
+#: git-stash.sh:241
 #, sh-format
 msgid ""
 "error: unknown option for 'stash save': $option\n"
@@ -9660,120 +9971,139 @@ msgstr ""
 "fel: felaktig flagga för \"stash save\": $option\n"
 "     För att ange ett meddelande, använd git stash save -- \"$option\""
 
-#: git-stash.sh:223
+#: git-stash.sh:262
 msgid "No local changes to save"
 msgstr "Inga lokala ändringar att spara"
 
-#: git-stash.sh:227
+#: git-stash.sh:268
+msgid ""
+"The following untracked files would NOT be saved but need to be removed by "
+"stash save:"
+msgstr ""
+"Följande ospårade ändringar skulle INTE sparas utan måste tas bort med "
+"\"stash save\":"
+
+#: git-stash.sh:270
+msgid ""
+"Aborting. Consider using either the --force or --include-untracked option."
+msgstr ""
+"Avbryter. Överväg att använda antingen flaggan --force eller --include-"
+"untracked."
+
+#: git-stash.sh:274
 msgid "Cannot initialize stash"
 msgstr "Kan inte initiera \"stash\""
 
-#: git-stash.sh:235
+#: git-stash.sh:278
 msgid "Cannot save the current status"
 msgstr "Kan inte spara aktuell status"
 
-#: git-stash.sh:253
+#: git-stash.sh:296
 msgid "Cannot remove worktree changes"
 msgstr "Kan inte ta bort ändringar i arbetskatalogen"
 
-#: git-stash.sh:352
+#: git-stash.sh:395
 msgid "No stash found."
 msgstr "Ingen \"stash\" hittades."
 
-#: git-stash.sh:359
+#: git-stash.sh:402
 #, sh-format
 msgid "Too many revisions specified: $REV"
 msgstr "För många revisioner angivna: $REV"
 
-#: git-stash.sh:365
+#: git-stash.sh:408
 #, sh-format
 msgid "$reference is not valid reference"
 msgstr "$reference är inte en giltig referens."
 
-#: git-stash.sh:393
+#: git-stash.sh:436
 #, sh-format
 msgid "'$args' is not a stash-like commit"
 msgstr "\"$args\" är inte en \"stash\"-liknande incheckning"
 
-#: git-stash.sh:404
+#: git-stash.sh:447
 #, sh-format
 msgid "'$args' is not a stash reference"
 msgstr "\"$args\" är inte en \"stash\"-referens"
 
-#: git-stash.sh:412
+#: git-stash.sh:455
 msgid "unable to refresh index"
 msgstr "kan inte uppdatera indexet"
 
-#: git-stash.sh:416
+#: git-stash.sh:459
 msgid "Cannot apply a stash in the middle of a merge"
 msgstr "Kan inte tillämpa en \"stash\" mitt i en sammanslagning"
 
-#: git-stash.sh:424
+#: git-stash.sh:467
 msgid "Conflicts in index. Try without --index."
 msgstr "Konflikter i indexet. Testa utan --index."
 
-#: git-stash.sh:426
+#: git-stash.sh:469
 msgid "Could not save index tree"
 msgstr "Kunde inte spara indexträd"
 
-#: git-stash.sh:460
+#: git-stash.sh:503
 msgid "Cannot unstage modified files"
 msgstr "Kan inte ta bort ändrade filer ur kön"
 
-#: git-stash.sh:475
+#: git-stash.sh:518
 msgid "Index was not unstashed."
 msgstr "Indexet har inte tagits ur kön."
 
-#: git-stash.sh:492
+#: git-stash.sh:535
 #, sh-format
 msgid "Dropped ${REV} ($s)"
 msgstr "Kastade ${REV} ($s)"
 
-#: git-stash.sh:493
+#: git-stash.sh:536
 #, sh-format
 msgid "${REV}: Could not drop stash entry"
 msgstr "${REV}: Kunde inte kasta \"stash\"-post"
 
-#: git-stash.sh:500
+#: git-stash.sh:543
 msgid "No branch name specified"
 msgstr "Inget grennamn angavs"
 
-#: git-stash.sh:571
+#: git-stash.sh:615
 msgid "(To restore them type \"git stash apply\")"
 msgstr "(För att återställa dem, skriv \"git stash apply\")"
 
-#: git-submodule.sh:91
+#: git-submodule.sh:95
 #, sh-format
 msgid "cannot strip one component off url '$remoteurl'"
 msgstr "kan inte ta bort en komponent från url:en \"$remoteurl\""
 
-#: git-submodule.sh:196
+#: git-submodule.sh:237
 #, sh-format
 msgid "No submodule mapping found in .gitmodules for path '$sm_path'"
 msgstr ""
 "Hittade ingen undermodulmappning i .gitmodules för sökvägen \"$sm_path\""
 
-#: git-submodule.sh:239
+#: git-submodule.sh:281
 #, sh-format
 msgid "Clone of '$url' into submodule path '$sm_path' failed"
 msgstr "Misslyckades klona \"$url\" till undermodulsökvägen \"$sm_path\""
 
-#: git-submodule.sh:251
+#: git-submodule.sh:293
 #, sh-format
 msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa"
-msgstr "Gitkatalog \"$a\" ingår i underkatalogsökvägen \"$b\" eller omvänt"
+msgstr "Gitkatalog \"$a\" ingår i undermodulsökvägen \"$b\" eller omvänt"
+
+#: git-submodule.sh:403
+msgid "Relative path can only be used from the toplevel of the working tree"
+msgstr "Relativ sökväg kan enfast användas från arbetskatalogens toppnivå"
 
-#: git-submodule.sh:349
+#: git-submodule.sh:413
 #, sh-format
 msgid "repo URL: '$repo' must be absolute or begin with ./|../"
 msgstr "arkiv-URL: \"$repo\" måste vara absolut eller börja med ./|../"
 
-#: git-submodule.sh:366
+#: git-submodule.sh:430
 #, sh-format
 msgid "'$sm_path' already exists in the index"
 msgstr "\"$sm_path\" finns redan i indexet"
 
-#: git-submodule.sh:370
+#: git-submodule.sh:434
 #, sh-format
 msgid ""
 "The following path is ignored by one of your .gitignore files:\n"
@@ -9784,22 +10114,22 @@ msgstr ""
 "$sm_path\n"
 "Använd -f om du verkligen vill lägga till den"
 
-#: git-submodule.sh:388
+#: git-submodule.sh:452
 #, sh-format
 msgid "Adding existing repo at '$sm_path' to the index"
 msgstr "Lägger till befintligt arkiv i \"$sm_path\" i indexet"
 
-#: git-submodule.sh:390
+#: git-submodule.sh:454
 #, sh-format
 msgid "'$sm_path' already exists and is not a valid git repo"
 msgstr "\"$sm_path\" finns redan och är inte ett giltigt git-arkiv"
 
-#: git-submodule.sh:398
+#: git-submodule.sh:462
 #, sh-format
 msgid "A git directory for '$sm_name' is found locally with remote(s):"
 msgstr "En git-katalog för \"$sm_name\" hittades lokalt med fjärr(ar):"
 
-#: git-submodule.sh:400
+#: git-submodule.sh:464
 #, sh-format
 msgid ""
 "If you want to reuse this local git directory instead of cloning again from"
@@ -9807,14 +10137,14 @@ msgstr ""
 "För att återanvända den lokala git-katalogen istället för att på nytt klona "
 "från"
 
-#: git-submodule.sh:402
+#: git-submodule.sh:466
 #, sh-format
 msgid ""
 "use the '--force' option. If the local git directory is not the correct repo"
 msgstr ""
 "använd flaggan \"--force\". Om den lokala git-katalogen inte är riktigt arkiv"
 
-#: git-submodule.sh:403
+#: git-submodule.sh:467
 #, sh-format
 msgid ""
 "or you are unsure what this means choose another name with the '--name' "
@@ -9823,210 +10153,270 @@ msgstr ""
 "eller om du är osäker på vad det innebär, välj nytt namn med flaggan \"--name"
 "\"."
 
-#: git-submodule.sh:405
+#: git-submodule.sh:469
 #, sh-format
 msgid "Reactivating local git directory for submodule '$sm_name'."
 msgstr "Aktiverar lokal git-katalog för undermodulen \"$sm_name\" på nytt."
 
-#: git-submodule.sh:417
+#: git-submodule.sh:481
 #, sh-format
 msgid "Unable to checkout submodule '$sm_path'"
 msgstr "Kan inte checka ut undermodulen \"$sm_path\""
 
-#: git-submodule.sh:422
+#: git-submodule.sh:486
 #, sh-format
 msgid "Failed to add submodule '$sm_path'"
 msgstr "Misslyckades lägga till undermodulen \"$sm_path\""
 
-#: git-submodule.sh:431
+#: git-submodule.sh:495
 #, sh-format
 msgid "Failed to register submodule '$sm_path'"
 msgstr "Misslyckades registrera undermodulen \"$sm_path\""
 
-#: git-submodule.sh:474
+#: git-submodule.sh:539
 #, sh-format
-msgid "Entering '$prefix$sm_path'"
-msgstr "Går in i \"$prefix$sm_path\""
+msgid "Entering '$prefix$displaypath'"
+msgstr "Går in i \"$prefix$displaypath\""
 
-#: git-submodule.sh:488
+#: git-submodule.sh:554
 #, sh-format
-msgid "Stopping at '$sm_path'; script returned non-zero status."
+msgid "Stopping at '$prefix$displaypath'; script returned non-zero status."
 msgstr ""
-"Stoppar på \"$sm_path\"; skriptet returnerade en status skild från noll."
+"Stoppar på \"$prefix$displaypath\"; skriptet returnerade en status skild "
+"från noll."
 
-#: git-submodule.sh:532
+#: git-submodule.sh:600
 #, sh-format
-msgid "No url found for submodule path '$sm_path' in .gitmodules"
-msgstr "Hittade ingen url för undermodulsökvägen \"$sm_path\" i .gitmodules"
+msgid "No url found for submodule path '$displaypath' in .gitmodules"
+msgstr ""
+"Hittade ingen url för undermodulsökvägen \"$displaypath\" i .gitmodules"
 
-#: git-submodule.sh:541
+#: git-submodule.sh:609
 #, sh-format
-msgid "Failed to register url for submodule path '$sm_path'"
-msgstr "Misslyckades registrera url för underkatalogsökväg \"$sm_path\""
+msgid "Failed to register url for submodule path '$displaypath'"
+msgstr "Misslyckades registrera url för undermodulsökväg \"$displaypath\""
 
-#: git-submodule.sh:543
+#: git-submodule.sh:611
 #, sh-format
-msgid "Submodule '$name' ($url) registered for path '$sm_path'"
-msgstr "Undermodulen \"$name\" ($url) registrerad för sökvägen \"$sm_path\""
+msgid "Submodule '$name' ($url) registered for path '$displaypath'"
+msgstr ""
+"Undermodulen \"$name\" ($url) registrerad för sökvägen \"$displaypath\""
 
-#: git-submodule.sh:551
+#: git-submodule.sh:619
 #, sh-format
-msgid "Failed to register update mode for submodule path '$sm_path'"
+msgid "Failed to register update mode for submodule path '$displaypath'"
 msgstr ""
-"Misslyckades registrera uppdateringsläge för undermodulsökväg \"$sm_path\""
+"Misslyckades registrera uppdateringsläge för undermodulsökväg \"$displaypath"
+"\""
 
-#: git-submodule.sh:588
+#: git-submodule.sh:656
 #, sh-format
 msgid "Use '.' if you really want to deinitialize all submodules"
 msgstr "Använd \".\" om du verkligen vill avinitiera alla undermoduler"
 
-#: git-submodule.sh:603
+#: git-submodule.sh:673
 #, sh-format
-msgid "Submodule work tree '$sm_path' contains a .git directory"
-msgstr "Undermodulens arbetskatalog \"$sm_path\" innehåller katalogen \".git\""
+msgid "Submodule work tree '$displaypath' contains a .git directory"
+msgstr ""
+"Undermodulens arbetskatalog \"$displaypath\" innehåller katalogen \".git\""
 
-#: git-submodule.sh:604
+#: git-submodule.sh:674
 #, sh-format
 msgid ""
 "(use 'rm -rf' if you really want to remove it including all of its history)"
 msgstr ""
 "(använd \"rm -rf\" om du verkligen vill ta bort den och all dess historik)"
 
-#: git-submodule.sh:610
+#: git-submodule.sh:680
 #, sh-format
 msgid ""
-"Submodule work tree '$sm_path' contains local modifications; use '-f' to "
+"Submodule work tree '$displaypath' contains local modifications; use '-f' to "
 "discard them"
 msgstr ""
-"Undermodulens arbetskatalog \"$sm_path\" har lokala ändringar; \"-f\" kastar "
-"bort dem"
+"Undermodulens arbetskatalog \"$displaypath\" har lokala ändringar; \"-f\" "
+"kastar bort dem"
 
-#: git-submodule.sh:613
+#: git-submodule.sh:683
 #, sh-format
-msgid "Cleared directory '$sm_path'"
-msgstr "Rensade katalogen \"$sm_path\""
+msgid "Cleared directory '$displaypath'"
+msgstr "Rensade katalogen \"$displaypath\""
 
-#: git-submodule.sh:614
+#: git-submodule.sh:684
 #, sh-format
-msgid "Could not remove submodule work tree '$sm_path'"
-msgstr "Kunde inte ta bort underkatalogens arbetskatalog \"$sm_path\""
+msgid "Could not remove submodule work tree '$displaypath'"
+msgstr "Kunde inte ta bort undermodulens arbetskatalog \"$displaypath\""
 
-#: git-submodule.sh:617
+#: git-submodule.sh:687
 #, sh-format
-msgid "Could not create empty submodule directory '$sm_path'"
-msgstr "Kunde inte skapa tom undermodulskatalog \"$sm_path\""
+msgid "Could not create empty submodule directory '$displaypath'"
+msgstr "Kunde inte skapa tom undermodulskatalog \"$displaypath\""
 
-#: git-submodule.sh:626
+#: git-submodule.sh:696
 #, sh-format
-msgid "Submodule '$name' ($url) unregistered for path '$sm_path'"
-msgstr "Undermodulen \"$name\" ($url) avregistrerad för sökvägen \"$sm_path\""
+msgid "Submodule '$name' ($url) unregistered for path '$displaypath'"
+msgstr ""
+"Undermodulen \"$name\" ($url) avregistrerad för sökvägen \"$displaypath\""
 
-#: git-submodule.sh:731
+#: git-submodule.sh:811
 #, sh-format
 msgid ""
-"Submodule path '$prefix$sm_path' not initialized\n"
+"Submodule path '$displaypath' not initialized\n"
 "Maybe you want to use 'update --init'?"
 msgstr ""
-"Undermodulen \"$prefix$sm_path\" har inte initierats\n"
+"Undermodulen \"$displaypath\" har inte initierats\n"
 "Kanske du vill köra \"update --init\"?"
 
-#: git-submodule.sh:744
+#: git-submodule.sh:824
 #, sh-format
-msgid "Unable to find current revision in submodule path '$prefix$sm_path'"
-msgstr ""
-"Kan inte hitta aktuell revision i undermodulsökvägen \"$prefix$sm_path\""
+msgid "Unable to find current revision in submodule path '$displaypath'"
+msgstr "Kan inte hitta aktuell revision i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:753
+#: git-submodule.sh:833
 #, sh-format
 msgid "Unable to fetch in submodule path '$sm_path'"
 msgstr "Kan inte hämta i undermodulsökväg \"$sm_path\""
 
-#: git-submodule.sh:777
+#: git-submodule.sh:857
+#, sh-format
+msgid "Unable to fetch in submodule path '$displaypath'"
+msgstr "Kan inte hämta i undermodulsökväg \"$displaypath\""
+
+#: git-submodule.sh:871
+#, sh-format
+msgid "Unable to rebase '$sha1' in submodule path '$displaypath'"
+msgstr "Kan inte ombasera \"$sha1\" i undermodulsökvägen \"$displaypath\""
+
+#: git-submodule.sh:872
 #, sh-format
-msgid "Unable to fetch in submodule path '$prefix$sm_path'"
-msgstr "Kan inte hämta i undermodulsökväg \"$prefix$sm_path\""
+msgid "Submodule path '$displaypath': rebased into '$sha1'"
+msgstr "Undermodulsökvägen \"$displaypath\": ombaserade in i \"$sha1\""
 
-#: git-submodule.sh:791
+#: git-submodule.sh:877
 #, sh-format
-msgid "Unable to rebase '$sha1' in submodule path '$prefix$sm_path'"
-msgstr "Kan inte ombasera \"$sha1\" i undermodulsökvägen \"$prefix$sm_path\""
+msgid "Unable to merge '$sha1' in submodule path '$displaypath'"
+msgstr "Kan inte slå ihop \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:792
+#: git-submodule.sh:878
 #, sh-format
-msgid "Submodule path '$prefix$sm_path': rebased into '$sha1'"
-msgstr "Undermodulsökvägen \"$prefix$sm_path\": ombaserade in i \"$sha1\""
+msgid "Submodule path '$displaypath': merged in '$sha1'"
+msgstr "Undermodulsökvägen \"$displaypath\": sammanslagen i \"$sha1\""
 
-#: git-submodule.sh:797
+#: git-submodule.sh:883
 #, sh-format
-msgid "Unable to merge '$sha1' in submodule path '$prefix$sm_path'"
-msgstr "Kan inte slå ihop \"$sha1\" i undermodulsökvägen \"$prefix$sm_path\""
+msgid ""
+"Execution of '$command $sha1' failed in submodule  path '$prefix$sm_path'"
+msgstr ""
+"Misslyckades köra \"$command $sha1\" i undermodulsökvägen \"$prefix$sm_path\""
 
-#: git-submodule.sh:798
+#: git-submodule.sh:884
 #, sh-format
-msgid "Submodule path '$prefix$sm_path': merged in '$sha1'"
-msgstr "Undermodulsökvägen \"$prefix$sm_path\": sammanslagen i \"$sha1\""
+msgid "Submodule path '$prefix$sm_path': '$command $sha1'"
+msgstr "Undermodulsökvägen \"$prefix$sm_path\": \"$command $sha1\""
 
-#: git-submodule.sh:803
+#: git-submodule.sh:889
 #, sh-format
-msgid "Unable to checkout '$sha1' in submodule path '$prefix$sm_path'"
-msgstr "Kan inte checka ut \"$sha1\" i undermodulsökvägen \"$prefix$sm_path\""
+msgid "Unable to checkout '$sha1' in submodule path '$displaypath'"
+msgstr "Kan inte checka ut \"$sha1\" i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:804
+#: git-submodule.sh:890
 #, sh-format
-msgid "Submodule path '$prefix$sm_path': checked out '$sha1'"
-msgstr "Undermodulsökvägen \"$prefix$sm_path\": checkade ut \"$sha1\""
+msgid "Submodule path '$displaypath': checked out '$sha1'"
+msgstr "Undermodulsökvägen \"$displaypath\": checkade ut \"$sha1\""
 
-#: git-submodule.sh:831
+#: git-submodule.sh:917
 #, sh-format
-msgid "Failed to recurse into submodule path '$prefix$sm_path'"
-msgstr "Misslyckades rekursera in i undermodulsökvägen \"$prefix$sm_path\""
+msgid "Failed to recurse into submodule path '$displaypath'"
+msgstr "Misslyckades rekursera in i undermodulsökvägen \"$displaypath\""
 
-#: git-submodule.sh:939
+#: git-submodule.sh:1025
 msgid "The --cached option cannot be used with the --files option"
 msgstr "Flaggan --cached kan inte användas med flaggan --files"
 
 #. unexpected type
-#: git-submodule.sh:979
+#: git-submodule.sh:1066
 #, sh-format
 msgid "unexpected mode $mod_dst"
 msgstr "oväntat läge $mod_dst"
 
-#: git-submodule.sh:997
+#: git-submodule.sh:1086
 #, sh-format
-msgid "  Warn: $name doesn't contain commit $sha1_src"
-msgstr "  Varning: $name innehåller inte incheckning $sha1_src"
+msgid "  Warn: $display_name doesn't contain commit $sha1_src"
+msgstr "  Varning: $display_name innehåller inte incheckningen $sha1_src"
 
-#: git-submodule.sh:1000
+#: git-submodule.sh:1089
 #, sh-format
-msgid "  Warn: $name doesn't contain commit $sha1_dst"
-msgstr "  Varning: $name innehåller inte incheckning $sha1_dst"
+msgid "  Warn: $display_name doesn't contain commit $sha1_dst"
+msgstr "  Varning: $display_name innehåller inte incheckningen $sha1_dst"
 
-#: git-submodule.sh:1003
+#: git-submodule.sh:1092
 #, sh-format
-msgid "  Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
-msgstr "  Varning: $name innehåller inte incheckningar $sha1_src och $sha1_dst"
+msgid "  Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst"
+msgstr ""
+"  Varning: $display_name innehåller inte incheckningarna $sha1_src och "
+"$sha1_dst"
 
-#: git-submodule.sh:1028
+#: git-submodule.sh:1117
 msgid "blob"
 msgstr "blob"
 
-#: git-submodule.sh:1066
+#: git-submodule.sh:1155
 msgid "Submodules changed but not updated:"
 msgstr "Undermoduler ändrade men inte uppdaterade:"
 
-#: git-submodule.sh:1068
+#: git-submodule.sh:1157
 msgid "Submodule changes to be committed:"
 msgstr "Undermodulers ändringar att checka in:"
 
-#: git-submodule.sh:1153
+#: git-submodule.sh:1242
 #, sh-format
 msgid "Failed to recurse into submodule path '$sm_path'"
 msgstr "Misslyckades rekursera in i undermodulsökvägen \"$sm_path\""
 
-#: git-submodule.sh:1216
+#: git-submodule.sh:1306
 #, sh-format
-msgid "Synchronizing submodule url for '$prefix$sm_path'"
-msgstr "Synkroniserar undermodul-url för \"$prefix$sm_path\""
+msgid "Synchronizing submodule url for '$displaypath'"
+msgstr "Synkroniserar undermodul-url för \"$displaypath\""
+
+#~ msgid "  (fix conflicts and then run \"git am --resolved\")"
+#~ msgstr "  (rätta konflikter och kör sedan \"git am --resolved\")"
+
+#~ msgid "  (all conflicts fixed: run \"git commit\")"
+#~ msgstr "  (alla konflikter har rättats: kör \"git commit\")"
+
+#~ msgid "more than %d trees given: '%s'"
+#~ msgstr "mer än %d träd angavs: \"%s\""
+
+#~ msgid "You cannot combine --no-ff with --ff-only."
+#~ msgstr "Du kan inte kombinera --no-ff med --ff-only."
+
+#~ msgid ""
+#~ "submodule '%s' (or one of its nested submodules) uses a .git directory\n"
+#~ "(use 'rm -rf' if you really want to remove it including all of its "
+#~ "history)"
+#~ msgstr ""
+#~ "undermodulen \"%s\" (eller en av dess undermoduler) använder en .git-"
+#~ "katalog\n"
+#~ "(använd \"rm -rf\" om du verkligen vill ta bort den och all dess historik)"
+
+#~ msgid ""
+#~ "'%s' has changes staged in the index\n"
+#~ "(use --cached to keep the file, or -f to force removal)"
+#~ msgstr ""
+#~ "\"%s\" har köade ändringar i indexet\n"
+#~ "(använd --cached för att behålla filen eller -f för att tvinga "
+#~ "borttagning)"
+
+#~ msgid "show commits where no parent comes before its children"
+#~ msgstr "visa incheckningar där ingen förälder kommer före dess barn"
+
+#~ msgid "show the HEAD reference"
+#~ msgstr "visa HEAD-referensen"
+
+#~ msgid "Unable to fetch in submodule path '$prefix$sm_path'"
+#~ msgstr "Kan inte hämta i undermodulsökväg \"$prefix$sm_path\""
+
+#~ msgid "Failed to recurse into submodule path '$prefix$sm_path'"
+#~ msgstr "Misslyckades rekursera in i undermodulsökvägen \"$prefix$sm_path\""
 
 #~ msgid "It took %.2f seconds to enumerate untracked files.  'status -uno'"
 #~ msgstr "Det tog %.2f sekunder att räkna ospårade filer. \"status -uno\""
@@ -10187,70 +10577,3 @@ msgstr "Synkroniserar undermodul-url för \"$prefix$sm_path\""
 
 #~ msgid "Failed to write current notes tree to database"
 #~ msgstr "Kunde inte skriva aktuellt anteckningsträd till databasen"
-
-# FIXME: Untranslatable!
-#
-#~ msgid "Refusing to %s notes in %s (outside of refs/notes/)"
-#~ msgstr "Vägrar %s anteckningar i %s (utanför refs/notes/)"
-
-#~ msgid "add"
-#~ msgstr "add"
-
-#~ msgid "copy"
-#~ msgstr "copy"
-
-#~ msgid "show"
-#~ msgstr "show"
-
-#~ msgid "remove"
-#~ msgstr "remove"
-
-#~ msgid "prune"
-#~ msgstr "prune"
-
-#~ msgid "The current branch %s is not tracking anything."
-#~ msgstr "Den aktuella grenen %s spårar ingenting."
-
-#~ msgid "No destination configured to push to."
-#~ msgstr "Har inte ställt in någon destination att sända till."
-
-#~ msgid "Reflog action message too long: %.*s..."
-#~ msgstr "Reflog-händelsemeddelande för långt: %.*s..."
-
-#~ msgid "Could not read commit message of %s"
-#~ msgstr "Kunde inte läsa incheckningsmeddelandet för %s"
-
-#~ msgid "Could not extract author email from %s"
-#~ msgstr "Kunde inte hämta författarens e-postadress från %s"
-
-#~ msgid "Could not extract author time from %s"
-#~ msgstr "Kunde inte hämta författartid från %s"
-
-#~ msgid "cherry-pick --ff cannot be used with --signoff"
-#~ msgstr "cherry-pick --ff kan inte användas med --signoff"
-
-#~ msgid "cherry-pick --ff cannot be used with --no-commit"
-#~ msgstr "cherry-pick --ff kan inte användas med --no-commit"
-
-#~ msgid "cherry-pick --ff cannot be used with -x"
-#~ msgstr "cherry-pick --ff kan inte användas med -x"
-
-#~ msgid "cherry-pick --ff cannot be used with --edit"
-#~ msgstr "cherry-pick --ff kan inte användas med --edit"
-
-#~ msgid "committer info too long."
-#~ msgstr "incheckarinformation för lång."
-
-#~ msgid ""
-#~ "\n"
-#~ "#\n"
-#~ "# Write a tag message\n"
-#~ "#\n"
-#~ msgstr ""
-#~ "\n"
-#~ "#\n"
-#~ "# Skriv ett taggmeddelande\n"
-#~ "#\n"
-
-#~ msgid "signing key value too long (%.10s...)"
-#~ msgstr "signeringsnyckelvärdet för långt (%.10s...)"
index 9b27394a8c48f1f75c99652c64a9d232d4ef824f..dd2d2a73193c1bcb47d53f713c426ef4f0a0233f 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: git-v1.8.4-rc0-1-g28b3cff\n"
+"Project-Id-Version: git-v1.8.4-rc1-22-gb8ecf23\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2013-07-26 14:19+0800\n"
-"PO-Revision-Date: 2013-07-27 09:44+0700\n"
+"POT-Creation-Date: 2013-08-06 14:10+0800\n"
+"PO-Revision-Date: 2013-08-06 14:28+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"
@@ -38,9 +38,9 @@ msgid ""
 "or use 'git commit -a'."
 msgstr ""
 "Sửa chúng trong cây làm việc,\n"
-"và sau đó dùng lệnh “git add/rm <tập-tin>” dành riêng\n"
+"và sau đó dùng lệnh \"git add/rm <tập-tin>\" dành riêng\n"
 "cho việc đánh dấu tập tin cần giải quyết và tạo lần chuyển giao,\n"
-"hoặc là dùng lệnh “git commit -a”."
+"hoặc là dùng lệnh \"git commit -a\"."
 
 #: archive.c:10
 msgid "git archive [options] <tree-ish> [<path>...]"
@@ -273,7 +273,7 @@ msgstr "“%s” không giống như tập tin v2 bundle (định dạng dump c
 msgid "unrecognized header: %s%s (%d)"
 msgstr "phần đầu (header) không được thừa nhận: %s%s (%d)"
 
-#: bundle.c:89 builtin/commit.c:683
+#: bundle.c:89 builtin/commit.c:697
 #, c-format
 msgid "could not open '%s'"
 msgstr "không thể mở “%s”"
@@ -344,7 +344,7 @@ msgstr "index-pack đã chết"
 #: commit.c:53
 #, c-format
 msgid "could not parse %s"
-msgstr "không thể phân tích %s"
+msgstr "không thể phân tích cú pháp %s"
 
 #: commit.c:55
 #, c-format
@@ -511,20 +511,20 @@ msgstr "“%s”: %s"
 msgid "'%s': short read %s"
 msgstr "“%s”: đọc ngắn %s"
 
-#: help.c:213
+#: help.c:210
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "các lệnh git sẵn có trong thư mục “%s”:"
 
-#: help.c:220
+#: help.c:217
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "các lệnh git sẵn sàng để dùng từ một nơi khác trong $PATH của bạn"
 
-#: help.c:236
+#: help.c:233
 msgid "The most commonly used git commands are:"
 msgstr "Những lệnh git hay được sử dụng nhất là:"
 
-#: help.c:293
+#: help.c:290
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -533,11 +533,11 @@ msgstr ""
 "“%s” trông như là một lệnh git, nhưng chúng tôi không\n"
 "thể thực thi nó. Có lẽ là lệnh git-%s đã bị hỏng?"
 
-#: help.c:350
+#: help.c:347
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "Ối chà. Hệ thống của bạn báo rằng chẳng có lệnh Git nào cả."
 
-#: help.c:372
+#: help.c:369
 #, c-format
 msgid ""
 "WARNING: You called a Git command named '%s', which does not exist.\n"
@@ -546,17 +546,17 @@ msgstr ""
 "CẢNH BÁO: Bạn đã gọi lệnh Git có tên “%s”, mà nó lại không có sẵn.\n"
 "Giả định rằng ý bạn là “%s”"
 
-#: help.c:377
+#: help.c:374
 #, c-format
 msgid "in %0.1f seconds automatically..."
 msgstr "trong %0.1f giây một cách tự động..."
 
-#: help.c:384
+#: help.c:381
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git: “%s” không phải là một lệnh của git. Xem “git --help”."
 
-#: help.c:388 help.c:447
+#: help.c:385 help.c:444
 msgid ""
 "\n"
 "Did you mean this?"
@@ -570,7 +570,7 @@ msgstr[1] ""
 "\n"
 "Có phải ý bạn là một trong số những cái này không?"
 
-#: help.c:443
+#: help.c:440
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s: %s - %s"
@@ -1222,7 +1222,7 @@ msgid ""
 "\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.object_name_warning false\""
+"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"
@@ -1234,7 +1234,7 @@ msgstr ""
 "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.object_name_warning false\""
+"bằng cách chạy lệnh \"git config advice.objectNameWarning false\""
 
 #: sha1_name.c:1097
 msgid "HEAD does not point to a branch"
@@ -1806,7 +1806,7 @@ msgstr ""
 msgid "unexpected diff status %c"
 msgstr "trạng thái lệnh diff không như mong đợi %c"
 
-#: builtin/add.c:149 builtin/commit.c:238
+#: builtin/add.c:149 builtin/commit.c:252
 msgid "updating files failed"
 msgstr "Cập nhật tập tin gặp lỗi"
 
@@ -1858,14 +1858,14 @@ 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:394 builtin/clean.c:851 builtin/fetch.c:78 builtin/mv.c:63
+#: builtin/add.c:394 builtin/clean.c:875 builtin/fetch.c:78 builtin/mv.c:63
 #: builtin/prune-packed.c:73 builtin/push.c:451 builtin/remote.c:1253
 #: builtin/rm.c:268
 msgid "dry run"
 msgstr "chạy thử"
 
 #: builtin/add.c:395 builtin/apply.c:4410 builtin/check-ignore.c:19
-#: builtin/commit.c:1201 builtin/count-objects.c:95 builtin/fsck.c:613
+#: builtin/commit.c:1220 builtin/count-objects.c:95 builtin/fsck.c:613
 #: builtin/log.c:1573 builtin/mv.c:62 builtin/read-tree.c:113
 msgid "be verbose"
 msgstr "chi tiết"
@@ -1950,8 +1950,8 @@ msgstr "Không có gì được chỉ ra, không có gì được thêm vào.\n"
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "Có lẽ bạn muốn là “git add .” phải không?\n"
 
-#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:895
-#: builtin/commit.c:298 builtin/mv.c:82 builtin/rm.c:297
+#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:919
+#: builtin/commit.c:312 builtin/mv.c:82 builtin/rm.c:297
 msgid "index file corrupt"
 msgstr "tập tin ghi bảng mục lục bị hỏng"
 
@@ -2819,8 +2819,8 @@ msgid "act on remote-tracking branches"
 msgstr "thao tác trên nhánh “remote-tracking”"
 
 #: builtin/branch.c:805 builtin/branch.c:811 builtin/branch.c:832
-#: builtin/branch.c:838 builtin/commit.c:1414 builtin/commit.c:1415
-#: builtin/commit.c:1416 builtin/commit.c:1417 builtin/tag.c:468
+#: builtin/branch.c:838 builtin/commit.c:1433 builtin/commit.c:1434
+#: builtin/commit.c:1435 builtin/commit.c:1436 builtin/tag.c:468
 msgid "commit"
 msgstr "commit"
 
@@ -3008,44 +3008,44 @@ msgstr "Cần một kho chứa để mà tạo một bundle."
 msgid "Need a repository to unbundle."
 msgstr "Cần một kho chứa để mà bung một bundle."
 
-#: builtin/cat-file.c:303
+#: builtin/cat-file.c:285
 msgid "git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>"
 msgstr "git cat-file (-t|-s|-e|-p|<kiểu>|--textconv) <đối tượng>"
 
-#: builtin/cat-file.c:304
+#: builtin/cat-file.c:286
 msgid "git cat-file (--batch|--batch-check) < <list_of_objects>"
 msgstr "git cat-file (--batch|--batch-check) < <danh-sách-đối-tượng>"
 
-#: builtin/cat-file.c:341
+#: builtin/cat-file.c:323
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<kiểu> là một trong số: blob, tree, commit, tag"
 
-#: builtin/cat-file.c:342
+#: builtin/cat-file.c:324
 msgid "show object type"
 msgstr "hiển thị kiểu đối tượng"
 
-#: builtin/cat-file.c:343
+#: builtin/cat-file.c:325
 msgid "show object size"
 msgstr "hiển thị kích thước đối tượng"
 
-#: builtin/cat-file.c:345
+#: builtin/cat-file.c:327
 msgid "exit with zero when there's no error"
 msgstr "thoát với 0 khi không có lỗi"
 
-#: builtin/cat-file.c:346
+#: builtin/cat-file.c:328
 msgid "pretty-print object's content"
 msgstr "in nội dung đối tượng dạng dễ đọc"
 
-#: builtin/cat-file.c:348
+#: builtin/cat-file.c:330
 msgid "for blob objects, run textconv on object's content"
 msgstr "với đối tượng blob, chạy lệnh textconv trên nội dung của đối tượng"
 
-#: builtin/cat-file.c:350
+#: builtin/cat-file.c:332
 msgid "show info and content of objects fed from the standard input"
 msgstr ""
 "hiển thị thông tin và nội dung của các đối tượng lấy từ đầu vào tiêu chuẩn"
 
-#: builtin/cat-file.c:353
+#: builtin/cat-file.c:335
 msgid "show info about objects fed from the standard input"
 msgstr "hiển thị các thông tin về đối tượng fed  từ đầu vào tiêu chuẩn"
 
@@ -3534,35 +3534,35 @@ msgstr ""
 "*          - chọn tất\n"
 "           - (trống rỗng) kết thúc việc chọn"
 
-#: builtin/clean.c:491
+#: builtin/clean.c:515
 #, c-format
 msgid "Huh (%s)?"
 msgstr "Hả (%s)?"
 
-#: builtin/clean.c:634
+#: builtin/clean.c:658
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "Mẫu để lọc các tập tin cần lờ đi đầu vào>>"
 
-#: builtin/clean.c:671
+#: builtin/clean.c:695
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "CẢNH BÁO: Không tìm thấy các mục được khớp bởi: %s"
 
-#: builtin/clean.c:692
+#: builtin/clean.c:716
 msgid "Select items to delete"
 msgstr "Chọn mục muốn xóa"
 
-#: builtin/clean.c:732
+#: builtin/clean.c:756
 #, c-format
 msgid "remove %s? "
 msgstr "gỡ bỏ “%s”?"
 
-#: builtin/clean.c:757
+#: builtin/clean.c:781
 msgid "Bye."
 msgstr "Tạm biệt."
 
-#: builtin/clean.c:765
+#: builtin/clean.c:789
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -3580,62 +3580,62 @@ msgstr ""
 "help                - hiển thị chính trợ giúp này\n"
 "?                   - trợ giúp dành cho chọn bằng cách nhắc"
 
-#: builtin/clean.c:792
+#: builtin/clean.c:816
 msgid "*** Commands ***"
 msgstr "*** Lệnh ***"
 
-#: builtin/clean.c:793
+#: builtin/clean.c:817
 msgid "What now"
 msgstr "Giờ thì sao"
 
-#: builtin/clean.c:801
+#: builtin/clean.c:825
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "Có muốn gỡ bỏ mục sau đây không:"
 msgstr[1] "Có muốn gỡ bỏ các mục sau đây không:"
 
-#: builtin/clean.c:818
+#: builtin/clean.c:842
 msgid "No more files to clean, exiting."
 msgstr "Không còn tập-tin nào để dọn dẹp, đang thoát ra."
 
-#: builtin/clean.c:850
+#: builtin/clean.c:874
 msgid "do not print names of files removed"
 msgstr "không hiển thị tên của các tập tin đã gỡ bỏ"
 
-#: builtin/clean.c:852
+#: builtin/clean.c:876
 msgid "force"
 msgstr "ép buộc"
 
-#: builtin/clean.c:853
+#: builtin/clean.c:877
 msgid "interactive cleaning"
 msgstr "sửa bằng cách tương tác"
 
-#: builtin/clean.c:855
+#: builtin/clean.c:879
 msgid "remove whole directories"
 msgstr "gỡ bỏ toàn bộ thư mục"
 
-#: builtin/clean.c:856 builtin/describe.c:420 builtin/grep.c:716
+#: builtin/clean.c:880 builtin/describe.c:420 builtin/grep.c:716
 #: builtin/ls-files.c:493 builtin/name-rev.c:315 builtin/show-ref.c:186
 msgid "pattern"
 msgstr "mẫu"
 
-#: builtin/clean.c:857
+#: builtin/clean.c:881
 msgid "add <pattern> to ignore rules"
 msgstr "thêm <mẫu> vào trong qui tắc bỏ qua"
 
-#: builtin/clean.c:858
+#: builtin/clean.c:882
 msgid "remove ignored files, too"
 msgstr "đồng thời gỡ bỏ cả các tập tin bị bỏ qua"
 
-#: builtin/clean.c:860
+#: builtin/clean.c:884
 msgid "remove only ignored files"
 msgstr "chỉ gỡ bỏ những tập tin bị bỏ qua"
 
-#: builtin/clean.c:878
+#: builtin/clean.c:902
 msgid "-x and -X cannot be used together"
 msgstr "-x và -X không thể dùng cùng một lúc với nhau"
 
-#: builtin/clean.c:882
+#: builtin/clean.c:906
 msgid ""
 "clean.requireForce set to true and neither -i, -n nor -f given; refusing to "
 "clean"
@@ -3643,7 +3643,7 @@ msgstr ""
 "clean.requireForce được đặt thành true và không đưa ra tùy chọn -n mà cũng "
 "không -f; từ chối lệnh dọn dẹp (clean)"
 
-#: builtin/clean.c:885
+#: builtin/clean.c:909
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n nor -f given; "
 "refusing to clean"
@@ -3983,107 +3983,125 @@ msgid ""
 "\n"
 "    git commit --allow-empty\n"
 "\n"
-"Otherwise, please use 'git reset'\n"
 msgstr ""
 "Lần cherry-pick trước hiện nay trống rỗng, có lẽ là bởi vì sự phân giải xung "
 "đột.\n"
-"Nếu bạn muốn chuyển giao nó cho dù thế nào đi nữa, sử dụng:\n"
+"Nếu bạn vẫn muốn chuyển giao nó cho dù thế nào đi nữa, sử dụng:\n"
 "\n"
 "    git commit --allow-empty\n"
 "\n"
-"Nếu không, hãy thử dùng “git reset”\n"
 
-#: builtin/commit.c:265
+#: builtin/commit.c:69
+msgid "Otherwise, please use 'git reset'\n"
+msgstr "Nếu không được thì dùng lệnh \"git reset\"\n"
+
+#: builtin/commit.c:72
+msgid ""
+"If you wish to skip this commit, use:\n"
+"\n"
+"    git reset\n"
+"\n"
+"Then \"git cherry-pick --continue\" will resume cherry-picking\n"
+"the remaining commits.\n"
+msgstr ""
+"Nếu bạn muốn bỏ qua lần chuyển giao này thì dùng:\n"
+"\n"
+"    git reset\n"
+"\n"
+"Thế thì \"git cherry-pick --continue\" sẽ phục hồi lại việc cherry-pick\n"
+"những lần chuyển giao còn lại.\n"
+
+#: builtin/commit.c:279
 msgid "failed to unpack HEAD tree object"
 msgstr "gặp lỗi khi tháo dỡ HEAD đối tượng cây"
 
-#: builtin/commit.c:307
+#: builtin/commit.c:321
 msgid "unable to create temporary index"
 msgstr "không thể tạo bảng mục lục tạm thời"
 
-#: builtin/commit.c:313
+#: builtin/commit.c:327
 msgid "interactive add failed"
 msgstr "việc thêm tương tác gặp lỗi"
 
-#: builtin/commit.c:346 builtin/commit.c:367 builtin/commit.c:417
+#: builtin/commit.c:360 builtin/commit.c:381 builtin/commit.c:431
 msgid "unable to write new_index file"
 msgstr "không thể ghi tập tin lưu bảng mục lục mới (new_index)"
 
-#: builtin/commit.c:398
+#: builtin/commit.c:412
 msgid "cannot do a partial commit during a merge."
 msgstr ""
 "không thể thực hiện việc chuyển giao (commit) cục bộ trong khi đang được hòa "
 "trộn."
 
-#: builtin/commit.c:400
+#: builtin/commit.c:414
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr ""
 "không thể thực hiện việc chuyển giao (commit) bộ phận trong khi đang cherry-"
 "pick."
 
-#: builtin/commit.c:410
+#: builtin/commit.c:424
 msgid "cannot read the index"
 msgstr "không đọc được bảng mục lục"
 
-#: builtin/commit.c:430
+#: builtin/commit.c:444
 msgid "unable to write temporary index file"
 msgstr "không thể ghi tập tin lưu bảng mục lục tạm thời"
 
-#: builtin/commit.c:521 builtin/commit.c:527
+#: builtin/commit.c:535 builtin/commit.c:541
 #, c-format
 msgid "invalid commit: %s"
 msgstr "lần chuyển giao (commit) không hợp lệ: %s"
 
-#: builtin/commit.c:549
+#: builtin/commit.c:563
 msgid "malformed --author parameter"
 msgstr "đối số --author bị dị hình"
 
-#: builtin/commit.c:569
+#: builtin/commit.c:583
 #, c-format
 msgid "Malformed ident string: '%s'"
 msgstr "Chuỗi thụt lề đầu dòng dị hình: “%s”"
 
-#: builtin/commit.c:607 builtin/commit.c:640 builtin/commit.c:963
+#: builtin/commit.c:621 builtin/commit.c:654 builtin/commit.c:982
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "không thể tìm kiếm commit (lần chuyển giao) %s"
 
-#: builtin/commit.c:619 builtin/shortlog.c:271
+#: builtin/commit.c:633 builtin/shortlog.c:271
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(đang đọc thông điệp nhật ký từ đầu vào tiêu chuẩn)\n"
 
-#: builtin/commit.c:621
+#: builtin/commit.c:635
 msgid "could not read log from standard input"
 msgstr "không thể đọc nhật ký từ đầu vào tiêu chuẩn"
 
-#: builtin/commit.c:625
+#: builtin/commit.c:639
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "không đọc được tệp nhật ký “%s”"
 
-#: builtin/commit.c:631
+#: builtin/commit.c:645
 msgid "commit has empty message"
 msgstr "lần chuyển giao (commit) có ghi chú trống rỗng"
 
-#: builtin/commit.c:647
+#: builtin/commit.c:661
 msgid "could not read MERGE_MSG"
 msgstr "không thể đọc MERGE_MSG"
 
-#: builtin/commit.c:651
+#: builtin/commit.c:665
 msgid "could not read SQUASH_MSG"
 msgstr "không thể đọc SQUASH_MSG"
 
-#: builtin/commit.c:655
+#: builtin/commit.c:669
 #, c-format
 msgid "could not read '%s'"
 msgstr "Không thể đọc “%s”."
 
-#: builtin/commit.c:716
+#: builtin/commit.c:730
 msgid "could not write commit template"
 msgstr "không thể ghi mẫu commit"
 
-#: builtin/commit.c:727
+#: builtin/commit.c:741
 #, c-format
 msgid ""
 "\n"
@@ -4098,7 +4116,7 @@ msgstr ""
 "\t%s\n"
 "và thử lại.\n"
 
-#: builtin/commit.c:732
+#: builtin/commit.c:746
 #, c-format
 msgid ""
 "\n"
@@ -4113,7 +4131,7 @@ msgstr ""
 "\t%s\n"
 "và thử lại.\n"
 
-#: builtin/commit.c:744
+#: builtin/commit.c:758
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -4124,7 +4142,7 @@ msgstr ""
 "bắt đầu bằng “%c” sẽ được bỏ qua, nếu phần chú thích rỗng sẽ hủy bỏ lần "
 "chuyển giao (commit).\n"
 
-#: builtin/commit.c:749
+#: builtin/commit.c:763
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -4136,148 +4154,148 @@ msgstr ""
 "bắt đầu bằng “%c” sẽ được bỏ qua; bạn có thể xóa chúng đi nếu muốn thế.\n"
 "Phần chú thích này nếu trống rỗng sẽ hủy bỏ lần chuyển giao (commit).\n"
 
-#: builtin/commit.c:762
+#: builtin/commit.c:776
 #, c-format
 msgid "%sAuthor:    %s"
 msgstr "%sTác giả:    %s"
 
-#: builtin/commit.c:769
+#: builtin/commit.c:783
 #, c-format
 msgid "%sCommitter: %s"
 msgstr "%sNgười chuyển giao (commit): %s"
 
-#: builtin/commit.c:789
+#: builtin/commit.c:803
 msgid "Cannot read index"
 msgstr "không đọc được bảng mục lục"
 
-#: builtin/commit.c:826
+#: builtin/commit.c:845
 msgid "Error building trees"
 msgstr "Gặp lỗi khi xây dựng cây"
 
-#: builtin/commit.c:841 builtin/tag.c:359
+#: builtin/commit.c:860 builtin/tag.c:359
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "Xin hãy áp dụng thông điệp sử dụng hoặc là tùy chọn -m hoặc là -F.\n"
 
-#: builtin/commit.c:938
+#: builtin/commit.c:957
 #, c-format
 msgid "No existing author found with '%s'"
 msgstr "Không tìm thấy tác giả có sẵn với “%s”"
 
-#: builtin/commit.c:953 builtin/commit.c:1189
+#: builtin/commit.c:972 builtin/commit.c:1208
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "Chế độ cho các tập tin không bị theo vết không hợp lệ “%s”"
 
-#: builtin/commit.c:990
+#: builtin/commit.c:1009
 msgid "--long and -z are incompatible"
 msgstr "hai tùy chọn -long và -z không tương thích với nhau"
 
-#: builtin/commit.c:1020
+#: builtin/commit.c:1039
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "Sử dụng cả hai tùy chọn --reset-author và --author không hợp lý"
 
-#: builtin/commit.c:1031
+#: builtin/commit.c:1050
 msgid "You have nothing to amend."
 msgstr "Không có gì để amend (tu bổ) cả."
 
-#: builtin/commit.c:1034
+#: builtin/commit.c:1053
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr ""
 "Bạn đang ở giữa của quá trình hòa trộn -- không thể thực hiện amend (tu bổ)."
 
-#: builtin/commit.c:1036
+#: builtin/commit.c:1055
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr ""
 "Bạn đang ở giữa của quá trình cherry-pick -- không thể thực hiện amend (tu "
 "bổ)."
 
-#: builtin/commit.c:1039
+#: builtin/commit.c:1058
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "Các tùy chọn --squash và --fixup không thể sử dụng cùng với nhau"
 
-#: builtin/commit.c:1049
+#: builtin/commit.c:1068
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "Chỉ một tùy chọn trong số -c/-C/-F/--fixup được sử dụng"
 
-#: builtin/commit.c:1051
+#: builtin/commit.c:1070
 msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
 msgstr "Tùy chọn -m không thể được tổ hợp cùng với -c/-C/-F/--fixup."
 
-#: builtin/commit.c:1059
+#: builtin/commit.c:1078
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr ""
 "--reset-author chỉ có thể được sử dụng với tùy chọn -C, -c hay --amend."
 
-#: builtin/commit.c:1076
+#: builtin/commit.c:1095
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr ""
 "Chỉ một trong các tùy chọn --include/--only/--all/--interactive/--patch được "
 "sử dụng."
 
-#: builtin/commit.c:1078
+#: builtin/commit.c:1097
 msgid "No paths with --include/--only does not make sense."
 msgstr "Không đường dẫn với các tùy chọn --include/--only không hợp lý."
 
-#: builtin/commit.c:1080
+#: builtin/commit.c:1099
 msgid "Clever... amending the last one with dirty index."
 msgstr "Giỏi...  tu bổ cái cuối với bảng mục lục phi nghĩa."
 
-#: builtin/commit.c:1082
+#: builtin/commit.c:1101
 msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
 msgstr ""
 "Những đường dẫn rõ ràng được chỉ ra không có tùy chọn -i cũng không -o; đang "
 "giả định --only những-đường-dẫn..."
 
-#: builtin/commit.c:1092 builtin/tag.c:575
+#: builtin/commit.c:1111 builtin/tag.c:575
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "Chế độ dọn dẹp không hợp lệ %s"
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1116
 msgid "Paths with -a does not make sense."
 msgstr "Các đường dẫn với tùy chọn -a không hợp lý."
 
-#: builtin/commit.c:1203 builtin/commit.c:1436
+#: builtin/commit.c:1222 builtin/commit.c:1455
 msgid "show status concisely"
 msgstr "hiển thị trạng thái ở dạng súc tích"
 
-#: builtin/commit.c:1205 builtin/commit.c:1438
+#: builtin/commit.c:1224 builtin/commit.c:1457
 msgid "show branch information"
 msgstr "hiển thị thông tin nhánh"
 
-#: builtin/commit.c:1207 builtin/commit.c:1440 builtin/push.c:452
+#: builtin/commit.c:1226 builtin/commit.c:1459 builtin/push.c:452
 msgid "machine-readable output"
 msgstr "kết xuất dạng máy-có-thể-đọc"
 
-#: builtin/commit.c:1210 builtin/commit.c:1442
+#: builtin/commit.c:1229 builtin/commit.c:1461
 msgid "show status in long format (default)"
 msgstr "hiển thị trạng thái ở định dạng dài (mặc định)"
 
-#: builtin/commit.c:1213 builtin/commit.c:1445
+#: builtin/commit.c:1232 builtin/commit.c:1464
 msgid "terminate entries with NUL"
 msgstr "chấm dứt các mục bằng NUL"
 
-#: builtin/commit.c:1215 builtin/commit.c:1448 builtin/fast-export.c:667
+#: builtin/commit.c:1234 builtin/commit.c:1467 builtin/fast-export.c:667
 #: builtin/fast-export.c:670 builtin/tag.c:459
 msgid "mode"
 msgstr "chế độ"
 
-#: builtin/commit.c:1216 builtin/commit.c:1448
+#: builtin/commit.c:1235 builtin/commit.c:1467
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr ""
 "hiển thị các tập tin chưa được theo dõi  dấu vết, các chế độ tùy chọn:  all, "
 "normal, no. (Mặc định: all)"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1238
 msgid "show ignored files"
 msgstr "hiển thị các tập tin ẩn"
 
-#: builtin/commit.c:1220 parse-options.h:154
+#: builtin/commit.c:1239 parse-options.h:154
 msgid "when"
 msgstr "khi"
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1240
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
@@ -4285,223 +4303,223 @@ msgstr ""
 "bỏ qua các thay đổi trong mô-đun-con, tùy chọn khi: all, dirty, untracked. "
 "(Mặc định: all)"
 
-#: builtin/commit.c:1223
+#: builtin/commit.c:1242
 msgid "list untracked files in columns"
 msgstr "hiển thị danh sách các tập-tin chưa được theo dõi trong các cột"
 
-#: builtin/commit.c:1294
+#: builtin/commit.c:1313
 msgid "couldn't look up newly created commit"
 msgstr "không thể tìm thấy lần chuyển giao (commit) mới hơn đã được tạo"
 
-#: builtin/commit.c:1296
+#: builtin/commit.c:1315
 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"
 
-#: builtin/commit.c:1337
+#: builtin/commit.c:1356
 msgid "detached HEAD"
 msgstr "đã rời khỏi HEAD"
 
-#: builtin/commit.c:1339
+#: builtin/commit.c:1358
 msgid " (root-commit)"
 msgstr " (root-commit)"
 
-#: builtin/commit.c:1406
+#: builtin/commit.c:1425
 msgid "suppress summary after successful commit"
 msgstr "không hiển thị tổng kết sau khi chuyển giao thành công"
 
-#: builtin/commit.c:1407
+#: builtin/commit.c:1426
 msgid "show diff in commit message template"
 msgstr "hiển thị sự khác biệt trong mẫu tin nhắn chuyển giao"
 
-#: builtin/commit.c:1409
+#: builtin/commit.c:1428
 msgid "Commit message options"
 msgstr "Các tùy chọn ghi chú commit"
 
-#: builtin/commit.c:1410 builtin/tag.c:457
+#: builtin/commit.c:1429 builtin/tag.c:457
 msgid "read message from file"
 msgstr "đọc chú thích từ tập tin"
 
-#: builtin/commit.c:1411
+#: builtin/commit.c:1430
 msgid "author"
 msgstr "tác giả"
 
-#: builtin/commit.c:1411
+#: builtin/commit.c:1430
 msgid "override author for commit"
 msgstr "ghi đè tác giả cho commit"
 
-#: builtin/commit.c:1412 builtin/gc.c:178
+#: builtin/commit.c:1431 builtin/gc.c:178
 msgid "date"
 msgstr "ngày tháng"
 
-#: builtin/commit.c:1412
+#: builtin/commit.c:1431
 msgid "override date for commit"
 msgstr "ghi đè ngày tháng cho commit"
 
-#: builtin/commit.c:1413 builtin/merge.c:223 builtin/notes.c:405
+#: builtin/commit.c:1432 builtin/merge.c:223 builtin/notes.c:405
 #: builtin/notes.c:562 builtin/tag.c:455
 msgid "message"
 msgstr "thông điệp"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1432
 msgid "commit message"
 msgstr "chú thích của lần commit"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1433
 msgid "reuse and edit message from specified commit"
 msgstr ""
 "dùng lại các ghi chú từ lần chuyển giao (commit) đã cho nhưng có cho sửa chữa"
 
-#: builtin/commit.c:1415
+#: builtin/commit.c:1434
 msgid "reuse message from specified commit"
 msgstr "dùng lại các ghi chú từ lần chuyển giao (commit) đã cho"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1435
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr ""
 "dùng ghi chú có định dạng autosquash để sửa chữa lần chuyển giao đã chỉ ra"
 
-#: builtin/commit.c:1417
+#: builtin/commit.c:1436
 msgid "use autosquash formatted message to squash specified commit"
 msgstr ""
 "dùng lời nhắn có định dạng tự động nén để nén lại các lần chuyển giao đã chỉ "
 "ra"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1437
 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:1419 builtin/log.c:1160 builtin/revert.c:111
+#: builtin/commit.c:1438 builtin/log.c:1160 builtin/revert.c:111
 msgid "add Signed-off-by:"
 msgstr "thêm dòng Signed-off-by:"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1439
 msgid "use specified template file"
 msgstr "sử dụng tập tin mẫu đã cho"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1440
 msgid "force edit of commit"
 msgstr "ép buộc sửa lần commit"
 
-#: builtin/commit.c:1422
+#: builtin/commit.c:1441
 msgid "default"
 msgstr "mặc định"
 
-#: builtin/commit.c:1422 builtin/tag.c:460
+#: builtin/commit.c:1441 builtin/tag.c:460
 msgid "how to strip spaces and #comments from message"
 msgstr "làm thế nào để cắt bỏ khoảng trắng và #ghichú từ mẩu tin nhắn"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1442
 msgid "include status in commit message template"
 msgstr "bao gồm các trạng thái ghi mẫu ghi chú chuyển giao (commit)"
 
-#: builtin/commit.c:1424 builtin/merge.c:230 builtin/tag.c:461
+#: builtin/commit.c:1443 builtin/merge.c:230 builtin/tag.c:461
 msgid "key id"
 msgstr "id khóa"
 
-#: builtin/commit.c:1425 builtin/merge.c:231
+#: builtin/commit.c:1444 builtin/merge.c:231
 msgid "GPG sign commit"
 msgstr "ký lần commit dùng GPG"
 
 #. end commit message options
-#: builtin/commit.c:1428
+#: builtin/commit.c:1447
 msgid "Commit contents options"
 msgstr "Các tùy nội dung ghi chú commit"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1448
 msgid "commit all changed files"
 msgstr "chuyển giao tất cả các tập tin có thay đổi"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1449
 msgid "add specified files to index for commit"
 msgstr "thêm các tập tin đã chỉ ra vào bảng mục lục để chuyển giao (commit)"
 
-#: builtin/commit.c:1431
+#: builtin/commit.c:1450
 msgid "interactively add files"
 msgstr "thêm các tập-tin bằng tương tác"
 
-#: builtin/commit.c:1432
+#: builtin/commit.c:1451
 msgid "interactively add changes"
 msgstr "thêm các thay đổi bằng tương tác"
 
-#: builtin/commit.c:1433
+#: builtin/commit.c:1452
 msgid "commit only specified files"
 msgstr "chỉ chuyển giao các tập tin đã chỉ ra"
 
-#: builtin/commit.c:1434
+#: builtin/commit.c:1453
 msgid "bypass pre-commit hook"
 msgstr "vòng qua móc (hook) pre-commit"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1454
 msgid "show what would be committed"
 msgstr "hiển thị xem cái gì có thể được chuyển giao"
 
-#: builtin/commit.c:1446
+#: builtin/commit.c:1465
 msgid "amend previous commit"
 msgstr "tu bổ (amend) lần commit trước"
 
-#: builtin/commit.c:1447
+#: builtin/commit.c:1466
 msgid "bypass post-rewrite hook"
 msgstr "vòng qua móc (hook) post-rewrite"
 
-#: builtin/commit.c:1452
+#: builtin/commit.c:1471
 msgid "ok to record an empty change"
 msgstr "ok để ghi lại một thay đổi trống rỗng"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1474
 msgid "ok to record a change with an empty message"
 msgstr "ok để ghi các thay đổi với lời nhắn trống rỗng"
 
-#: builtin/commit.c:1488
+#: builtin/commit.c:1507
 msgid "could not parse HEAD commit"
 msgstr "không thể phân tích commit (lần chuyển giao) HEAD"
 
-#: builtin/commit.c:1526 builtin/merge.c:525
+#: builtin/commit.c:1545 builtin/merge.c:525
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "không thể mở “%s” để đọc"
 
-#: builtin/commit.c:1533
+#: builtin/commit.c:1552
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "Tập tin MERGE_HEAD sai hỏng (%s)"
 
-#: builtin/commit.c:1540
+#: builtin/commit.c:1559
 msgid "could not read MERGE_MODE"
 msgstr "không thể đọc MERGE_MODE"
 
-#: builtin/commit.c:1559
+#: builtin/commit.c:1578
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "không thể đọc thông điệp (message) commit (lần chuyển giao): %s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1592
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr ""
 "Đang bỏ qua việc chuyển giao (commit); bạn đã không biên soạn thông điệp "
 "(message).\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1597
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr ""
 "Đang bỏ qua lần chuyển giao (commit) bởi vì thông điệp của nó trống rỗng.\n"
 
-#: builtin/commit.c:1593 builtin/merge.c:861 builtin/merge.c:886
+#: builtin/commit.c:1612 builtin/merge.c:861 builtin/merge.c:886
 msgid "failed to write commit object"
 msgstr "gặp lỗi khi ghi đối tượng chuyển giao (commit)"
 
-#: builtin/commit.c:1614
+#: builtin/commit.c:1633
 msgid "cannot lock HEAD ref"
 msgstr "không thể khóa HEAD ref (tham chiếu)"
 
-#: builtin/commit.c:1618
+#: builtin/commit.c:1637
 msgid "cannot update HEAD ref"
 msgstr "không thể cập nhật ref (tham chiếu) HEAD"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1648
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full or quota is\n"
@@ -9947,7 +9965,7 @@ msgstr "Không thể lưu $stash_sha1"
 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\" it at any time.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
 "Áp dụng autostash có hiệu quả trong các xung đột.\n"
 "Các thay đổi của bạn an toàn trong stash (tạm cất đi).\n"
index ff95140612353c9b80fe114fa759553f058bdede..b7b46f14f0d15f02e6c7e3166e860f89a4a9681f 100644 (file)
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Git\n"
 "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2013-07-26 14:19+0800\n"
-"PO-Revision-Date: 2013-08-03 14:13+0800\n"
+"POT-Creation-Date: 2013-08-06 14:10+0800\n"
+"PO-Revision-Date: 2013-08-06 14:45+0800\n"
 "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n"
 "Language-Team: GitHub <https://github.com/gotgit/git/>\n"
 "Language: zh_CN\n"
@@ -266,7 +266,7 @@ msgstr "'%s' 不像是一个 v2 版本的包文件"
 msgid "unrecognized header: %s%s (%d)"
 msgstr "未能识别的包头:%s%s (%d)"
 
-#: bundle.c:89 builtin/commit.c:683
+#: bundle.c:89 builtin/commit.c:697
 #, c-format
 msgid "could not open '%s'"
 msgstr "不能打开 '%s'"
@@ -506,20 +506,20 @@ msgstr "'%s':%s"
 msgid "'%s': short read %s"
 msgstr "'%s':读取不完整 %s"
 
-#: help.c:213
+#: help.c:210
 #, c-format
 msgid "available git commands in '%s'"
 msgstr "在 '%s' 下可用的 git 命令"
 
-#: help.c:220
+#: help.c:217
 msgid "git commands available from elsewhere on your $PATH"
 msgstr "在 $PATH 路径中的其他地方可用的 git 命令"
 
-#: help.c:236
+#: help.c:233
 msgid "The most commonly used git commands are:"
 msgstr "最常用的 git 命令有:"
 
-#: help.c:293
+#: help.c:290
 #, c-format
 msgid ""
 "'%s' appears to be a git command, but we were not\n"
@@ -528,11 +528,11 @@ msgstr ""
 "'%s' 像是一个 git 命令,但却无法运行。\n"
 "可能是 git-%s 受损?"
 
-#: help.c:350
+#: help.c:347
 msgid "Uh oh. Your system reports no Git commands at all."
 msgstr "唉呀,您的系统中未发现 Git 命令。"
 
-#: help.c:372
+#: help.c:369
 #, c-format
 msgid ""
 "WARNING: You called a Git command named '%s', which does not exist.\n"
@@ -541,17 +541,17 @@ msgstr ""
 "警告:您运行一个不存在的 Git 命令 '%s'。继续执行假定您要要运行的\n"
 "是 '%s'"
 
-#: help.c:377
+#: help.c:374
 #, c-format
 msgid "in %0.1f seconds automatically..."
 msgstr "在 %0.1f 秒钟后自动运行..."
 
-#: help.c:384
+#: help.c:381
 #, c-format
 msgid "git: '%s' is not a git command. See 'git --help'."
 msgstr "git:'%s' 不是一个 git 命令。参见 'git --help'。"
 
-#: help.c:388 help.c:447
+#: help.c:385 help.c:444
 msgid ""
 "\n"
 "Did you mean this?"
@@ -565,7 +565,7 @@ msgstr[1] ""
 "\n"
 "您指的是这其中的某一个么?"
 
-#: help.c:443
+#: help.c:440
 #, c-format
 msgid "%s: %s - %s"
 msgstr "%s:%s - %s"
@@ -1204,7 +1204,7 @@ msgid ""
 "\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.object_name_warning false\""
+"running \"git config advice.objectNameWarning false\""
 msgstr ""
 "Git 通常不会创建一个以40位十六进制字符命名的引用,因为当你提供40位\n"
 "十六进制字符时将被忽略。不过这些引用也可能被错误地创建。例如:\n"
@@ -1212,7 +1212,7 @@ msgstr ""
 "  git checkout -b $br $(git rev-parse ...)\n"
 "\n"
 "当 \"$br\" 空白时一个40位十六进制的引用将被创建。请检查这些引用,\n"
-"可能需要删除它们。用 \"git config advice.object_name_warning false\""
+"可能需要删除它们。用 \"git config advice.objectNameWarning false\"\n"
 "命令关闭本消息通知。"
 
 #: sha1_name.c:1097
@@ -1786,7 +1786,7 @@ msgstr ""
 msgid "unexpected diff status %c"
 msgstr "意外的差异状态 %c"
 
-#: builtin/add.c:149 builtin/commit.c:238
+#: builtin/add.c:149 builtin/commit.c:252
 msgid "updating files failed"
 msgstr "更新文件失败"
 
@@ -1835,14 +1835,14 @@ msgstr "不能应用 '%s'"
 msgid "The following paths are ignored by one of your .gitignore files:\n"
 msgstr "下列路径根据您的一个 .gitignore 文件而被忽略:\n"
 
-#: builtin/add.c:394 builtin/clean.c:851 builtin/fetch.c:78 builtin/mv.c:63
+#: builtin/add.c:394 builtin/clean.c:875 builtin/fetch.c:78 builtin/mv.c:63
 #: builtin/prune-packed.c:73 builtin/push.c:451 builtin/remote.c:1253
 #: builtin/rm.c:268
 msgid "dry run"
 msgstr "演习"
 
 #: builtin/add.c:395 builtin/apply.c:4410 builtin/check-ignore.c:19
-#: builtin/commit.c:1201 builtin/count-objects.c:95 builtin/fsck.c:613
+#: builtin/commit.c:1220 builtin/count-objects.c:95 builtin/fsck.c:613
 #: builtin/log.c:1573 builtin/mv.c:62 builtin/read-tree.c:113
 msgid "be verbose"
 msgstr "冗长输出"
@@ -1923,8 +1923,8 @@ msgstr "没有指定文件,也没有文件被添加。\n"
 msgid "Maybe you wanted to say 'git add .'?\n"
 msgstr "也许您想要执行 'git add .'?\n"
 
-#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:895
-#: builtin/commit.c:298 builtin/mv.c:82 builtin/rm.c:297
+#: builtin/add.c:533 builtin/check-ignore.c:161 builtin/clean.c:919
+#: builtin/commit.c:312 builtin/mv.c:82 builtin/rm.c:297
 msgid "index file corrupt"
 msgstr "索引文件损坏"
 
@@ -2777,8 +2777,8 @@ msgid "act on remote-tracking branches"
 msgstr "作用于远程跟踪分支"
 
 #: builtin/branch.c:805 builtin/branch.c:811 builtin/branch.c:832
-#: builtin/branch.c:838 builtin/commit.c:1414 builtin/commit.c:1415
-#: builtin/commit.c:1416 builtin/commit.c:1417 builtin/tag.c:468
+#: builtin/branch.c:838 builtin/commit.c:1433 builtin/commit.c:1434
+#: builtin/commit.c:1435 builtin/commit.c:1436 builtin/tag.c:468
 msgid "commit"
 msgstr "提交"
 
@@ -2959,43 +2959,43 @@ msgstr "需要一个版本库来创建包。"
 msgid "Need a repository to unbundle."
 msgstr "需要一个版本库来解包。"
 
-#: builtin/cat-file.c:303
+#: builtin/cat-file.c:285
 msgid "git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>"
 msgstr "git cat-file (-t|-s|-e|-p|<类型>|--textconv) <对象>"
 
-#: builtin/cat-file.c:304
+#: builtin/cat-file.c:286
 msgid "git cat-file (--batch|--batch-check) < <list_of_objects>"
 msgstr "git cat-file (--batch|--batch-check) < <对象列表>"
 
-#: builtin/cat-file.c:341
+#: builtin/cat-file.c:323
 msgid "<type> can be one of: blob, tree, commit, tag"
 msgstr "<类型> 可以是其中之一:blob、tree、commit、tag"
 
-#: builtin/cat-file.c:342
+#: builtin/cat-file.c:324
 msgid "show object type"
 msgstr "显示对象类型"
 
-#: builtin/cat-file.c:343
+#: builtin/cat-file.c:325
 msgid "show object size"
 msgstr "显示对象大小"
 
-#: builtin/cat-file.c:345
+#: builtin/cat-file.c:327
 msgid "exit with zero when there's no error"
 msgstr "当没有错误时退出并返回零"
 
-#: builtin/cat-file.c:346
+#: builtin/cat-file.c:328
 msgid "pretty-print object's content"
 msgstr "美观地打印对象的内容"
 
-#: builtin/cat-file.c:348
+#: builtin/cat-file.c:330
 msgid "for blob objects, run textconv on object's content"
 msgstr "对于数据(blob)对象,对其内容执行 textconv"
 
-#: builtin/cat-file.c:350
+#: builtin/cat-file.c:332
 msgid "show info and content of objects fed from the standard input"
 msgstr "显示从标准输入提供的对象的信息和内容"
 
-#: builtin/cat-file.c:353
+#: builtin/cat-file.c:335
 msgid "show info about objects fed from the standard input"
 msgstr "显示从标准输入提供的对象的信息"
 
@@ -3473,35 +3473,35 @@ msgstr ""
 "*          - 选择所有选项\n"
 "           - (空)结束选择"
 
-#: builtin/clean.c:491
+#: builtin/clean.c:515
 #, c-format
 msgid "Huh (%s)?"
 msgstr "嗯(%s)?"
 
-#: builtin/clean.c:634
+#: builtin/clean.c:658
 #, c-format
 msgid "Input ignore patterns>> "
 msgstr "输入模版以排除条目>> "
 
-#: builtin/clean.c:671
+#: builtin/clean.c:695
 #, c-format
 msgid "WARNING: Cannot find items matched by: %s"
 msgstr "警告:无法找到和 %s 匹配的条目"
 
-#: builtin/clean.c:692
+#: builtin/clean.c:716
 msgid "Select items to delete"
 msgstr "选择要删除的条目"
 
-#: builtin/clean.c:732
+#: builtin/clean.c:756
 #, c-format
 msgid "remove %s? "
 msgstr "删除 %s?"
 
-#: builtin/clean.c:757
+#: builtin/clean.c:781
 msgid "Bye."
 msgstr "再见。"
 
-#: builtin/clean.c:765
+#: builtin/clean.c:789
 msgid ""
 "clean               - start cleaning\n"
 "filter by pattern   - exclude items from deletion\n"
@@ -3519,69 +3519,69 @@ msgstr ""
 "help                - 显示本帮助\n"
 "?                   - 显示如何在提示符下选择的帮助"
 
-#: builtin/clean.c:792
+#: builtin/clean.c:816
 msgid "*** Commands ***"
 msgstr "*** 命令 ***"
 
-#: builtin/clean.c:793
+#: builtin/clean.c:817
 msgid "What now"
 msgstr "请选择"
 
-#: builtin/clean.c:801
+#: builtin/clean.c:825
 msgid "Would remove the following item:"
 msgid_plural "Would remove the following items:"
 msgstr[0] "将删除如下条目:"
 msgstr[1] "将删除如下条目:"
 
-#: builtin/clean.c:818
+#: builtin/clean.c:842
 msgid "No more files to clean, exiting."
 msgstr "没有要清理的文件,退出。"
 
-#: builtin/clean.c:850
+#: builtin/clean.c:874
 msgid "do not print names of files removed"
 msgstr "不打印删除文件的名称"
 
-#: builtin/clean.c:852
+#: builtin/clean.c:876
 msgid "force"
 msgstr "强制"
 
-#: builtin/clean.c:853
+#: builtin/clean.c:877
 msgid "interactive cleaning"
 msgstr "交互式清除"
 
-#: builtin/clean.c:855
+#: builtin/clean.c:879
 msgid "remove whole directories"
 msgstr "删除整个目录"
 
-#: builtin/clean.c:856 builtin/describe.c:420 builtin/grep.c:716
+#: builtin/clean.c:880 builtin/describe.c:420 builtin/grep.c:716
 #: builtin/ls-files.c:493 builtin/name-rev.c:315 builtin/show-ref.c:186
 msgid "pattern"
 msgstr "模式"
 
-#: builtin/clean.c:857
+#: builtin/clean.c:881
 msgid "add <pattern> to ignore rules"
 msgstr "添加<模式>到忽略规则"
 
-#: builtin/clean.c:858
+#: builtin/clean.c:882
 msgid "remove ignored files, too"
 msgstr "也删除忽略的文件"
 
-#: builtin/clean.c:860
+#: builtin/clean.c:884
 msgid "remove only ignored files"
 msgstr "只删除忽略的文件"
 
-#: builtin/clean.c:878
+#: builtin/clean.c:902
 msgid "-x and -X cannot be used together"
 msgstr "-x 和 -X 不能同时使用"
 
-#: builtin/clean.c:882
+#: builtin/clean.c:906
 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:885
+#: builtin/clean.c:909
 msgid ""
 "clean.requireForce defaults to true and neither -i, -n nor -f given; "
 "refusing to clean"
@@ -3911,102 +3911,120 @@ msgid ""
 "\n"
 "    git commit --allow-empty\n"
 "\n"
-"Otherwise, please use 'git reset'\n"
 msgstr ""
 "之前的拣选操作现在是一个空提交,可能是由冲突解决导致的。如果您无论如何\n"
 "也要提交,使用命令:\n"
 "\n"
 "    git commit --allow-empty\n"
 "\n"
-"否则,请使用命令 'git reset'\n"
 
-#: builtin/commit.c:265
+#: builtin/commit.c:69
+msgid "Otherwise, please use 'git reset'\n"
+msgstr "否则,请使用命令 'git reset'\n"
+
+#: builtin/commit.c:72
+msgid ""
+"If you wish to skip this commit, use:\n"
+"\n"
+"    git reset\n"
+"\n"
+"Then \"git cherry-pick --continue\" will resume cherry-picking\n"
+"the remaining commits.\n"
+msgstr ""
+"如果您想跳过这个提交,使用命令:\n"
+"\n"
+"    git reset\n"
+"\n"
+"然后执行 \"git cherry-pick --continue\" 继续对其余提交执行拣选\n"
+"操作。\n"
+
+#: builtin/commit.c:279
 msgid "failed to unpack HEAD tree object"
 msgstr "无法解包 HEAD 树对象"
 
-#: builtin/commit.c:307
+#: builtin/commit.c:321
 msgid "unable to create temporary index"
 msgstr "不能创建临时索引"
 
-#: builtin/commit.c:313
+#: builtin/commit.c:327
 msgid "interactive add failed"
 msgstr "交互式添加失败"
 
-#: builtin/commit.c:346 builtin/commit.c:367 builtin/commit.c:417
+#: builtin/commit.c:360 builtin/commit.c:381 builtin/commit.c:431
 msgid "unable to write new_index file"
 msgstr "无法写 new_index 文件"
 
-#: builtin/commit.c:398
+#: builtin/commit.c:412
 msgid "cannot do a partial commit during a merge."
 msgstr "在合并过程中不能做部分提交。"
 
-#: builtin/commit.c:400
+#: builtin/commit.c:414
 msgid "cannot do a partial commit during a cherry-pick."
 msgstr "在拣选过程中不能做部分提交。"
 
-#: builtin/commit.c:410
+#: builtin/commit.c:424
 msgid "cannot read the index"
 msgstr "无法读取索引"
 
-#: builtin/commit.c:430
+#: builtin/commit.c:444
 msgid "unable to write temporary index file"
 msgstr "无法写临时索引文件"
 
-#: builtin/commit.c:521 builtin/commit.c:527
+#: builtin/commit.c:535 builtin/commit.c:541
 #, c-format
 msgid "invalid commit: %s"
 msgstr "无效的提交:%s"
 
-#: builtin/commit.c:549
+#: builtin/commit.c:563
 msgid "malformed --author parameter"
 msgstr "非法的 --author 参数"
 
-#: builtin/commit.c:569
+#: builtin/commit.c:583
 #, c-format
 msgid "Malformed ident string: '%s'"
 msgstr "非法的身份字符串:'%s'"
 
-#: builtin/commit.c:607 builtin/commit.c:640 builtin/commit.c:963
+#: builtin/commit.c:621 builtin/commit.c:654 builtin/commit.c:982
 #, c-format
 msgid "could not lookup commit %s"
 msgstr "不能查询提交 %s"
 
-#: builtin/commit.c:619 builtin/shortlog.c:271
+#: builtin/commit.c:633 builtin/shortlog.c:271
 #, c-format
 msgid "(reading log message from standard input)\n"
 msgstr "(正从标准输入中读取日志信息)\n"
 
-#: builtin/commit.c:621
+#: builtin/commit.c:635
 msgid "could not read log from standard input"
 msgstr "不能从标准输入中读取日志信息"
 
-#: builtin/commit.c:625
+#: builtin/commit.c:639
 #, c-format
 msgid "could not read log file '%s'"
 msgstr "不能读取日志文件 '%s'"
 
-#: builtin/commit.c:631
+#: builtin/commit.c:645
 msgid "commit has empty message"
 msgstr "提交说明为空"
 
-#: builtin/commit.c:647
+#: builtin/commit.c:661
 msgid "could not read MERGE_MSG"
 msgstr "不能读取 MERGE_MSG"
 
-#: builtin/commit.c:651
+#: builtin/commit.c:665
 msgid "could not read SQUASH_MSG"
 msgstr "不能读取 SQUASH_MSG"
 
-#: builtin/commit.c:655
+#: builtin/commit.c:669
 #, c-format
 msgid "could not read '%s'"
 msgstr "不能读取 '%s'"
 
-#: builtin/commit.c:716
+#: builtin/commit.c:730
 msgid "could not write commit template"
 msgstr "不能写提交模版"
 
-#: builtin/commit.c:727
+#: builtin/commit.c:741
 #, c-format
 msgid ""
 "\n"
@@ -4020,7 +4038,7 @@ msgstr ""
 "\t%s\n"
 "然后重试。\n"
 
-#: builtin/commit.c:732
+#: builtin/commit.c:746
 #, c-format
 msgid ""
 "\n"
@@ -4034,7 +4052,7 @@ msgstr ""
 "\t%s\n"
 "然后重试。\n"
 
-#: builtin/commit.c:744
+#: builtin/commit.c:758
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -4043,7 +4061,7 @@ msgstr ""
 "请为您的变更输入提交说明。以 '%c' 开始的行将被忽略,而一个空的提交\n"
 "说明将会终止提交。\n"
 
-#: builtin/commit.c:749
+#: builtin/commit.c:763
 #, c-format
 msgid ""
 "Please enter the commit message for your changes. Lines starting\n"
@@ -4054,355 +4072,355 @@ msgstr ""
 "也可以删除它们。一个空的提交说明将会终止提交。\n"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:762
+#: builtin/commit.c:776
 #, c-format
 msgid "%sAuthor:    %s"
 msgstr "%s作者:     %s"
 
 #  译者:为保证在输出中对齐,注意调整句中空格!
-#: builtin/commit.c:769
+#: builtin/commit.c:783
 #, c-format
 msgid "%sCommitter: %s"
 msgstr "%s提交者:   %s"
 
-#: builtin/commit.c:789
+#: builtin/commit.c:803
 msgid "Cannot read index"
 msgstr "无法读取索引"
 
-#: builtin/commit.c:826
+#: builtin/commit.c:845
 msgid "Error building trees"
 msgstr "无法创建树对象"
 
-#: builtin/commit.c:841 builtin/tag.c:359
+#: builtin/commit.c:860 builtin/tag.c:359
 #, c-format
 msgid "Please supply the message using either -m or -F option.\n"
 msgstr "请使用 -m 或 -F 选项提供提交说明。\n"
 
-#: builtin/commit.c:938
+#: builtin/commit.c:957
 #, c-format
 msgid "No existing author found with '%s'"
 msgstr "没有找到匹配 '%s' 的作者"
 
-#: builtin/commit.c:953 builtin/commit.c:1189
+#: builtin/commit.c:972 builtin/commit.c:1208
 #, c-format
 msgid "Invalid untracked files mode '%s'"
 msgstr "无效的未追踪文件参数 '%s'"
 
-#: builtin/commit.c:990
+#: builtin/commit.c:1009
 msgid "--long and -z are incompatible"
 msgstr "--long 和 -z 选项不兼容"
 
-#: builtin/commit.c:1020
+#: builtin/commit.c:1039
 msgid "Using both --reset-author and --author does not make sense"
 msgstr "同时使用 --reset-author 和 --author 没有意义"
 
-#: builtin/commit.c:1031
+#: builtin/commit.c:1050
 msgid "You have nothing to amend."
 msgstr "您没有可修补的提交。"
 
-#: builtin/commit.c:1034
+#: builtin/commit.c:1053
 msgid "You are in the middle of a merge -- cannot amend."
 msgstr "您正处于一个合并过程中 -- 无法修补提交。"
 
-#: builtin/commit.c:1036
+#: builtin/commit.c:1055
 msgid "You are in the middle of a cherry-pick -- cannot amend."
 msgstr "您正处于一个拣选过程中 -- 无法修补提交。"
 
-#: builtin/commit.c:1039
+#: builtin/commit.c:1058
 msgid "Options --squash and --fixup cannot be used together"
 msgstr "选项 --squash 和 --fixup 不能同时使用"
 
-#: builtin/commit.c:1049
+#: builtin/commit.c:1068
 msgid "Only one of -c/-C/-F/--fixup can be used."
 msgstr "只能用一个 -c/-C/-F/--fixup 选项。"
 
-#: builtin/commit.c:1051
+#: builtin/commit.c:1070
 msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
 msgstr "选项 -m 不能和 -c/-C/-F/--fixup 同时使用。"
 
-#: builtin/commit.c:1059
+#: builtin/commit.c:1078
 msgid "--reset-author can be used only with -C, -c or --amend."
 msgstr "--reset-author 只能和 -C、-c 或 --amend 同时使用。"
 
-#: builtin/commit.c:1076
+#: builtin/commit.c:1095
 msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
 msgstr "只能用一个 --include/--only/--all/--interactive/--patch 选项。"
 
-#: builtin/commit.c:1078
+#: builtin/commit.c:1097
 msgid "No paths with --include/--only does not make sense."
 msgstr "参数 --include/--only 不跟路径没有意义。"
 
-#: builtin/commit.c:1080
+#: builtin/commit.c:1099
 msgid "Clever... amending the last one with dirty index."
 msgstr "聪明... 在索引不干净下修补最后的提交。"
 
-#: builtin/commit.c:1082
+#: builtin/commit.c:1101
 msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
 msgstr "指定了明确的路径而没有使用 -i 或 -o 选项;认为是 --only paths..."
 
-#: builtin/commit.c:1092 builtin/tag.c:575
+#: builtin/commit.c:1111 builtin/tag.c:575
 #, c-format
 msgid "Invalid cleanup mode %s"
 msgstr "无效的清理模式 %s"
 
-#: builtin/commit.c:1097
+#: builtin/commit.c:1116
 msgid "Paths with -a does not make sense."
 msgstr "路径和 -a 选项同时使用没有意义。"
 
-#: builtin/commit.c:1203 builtin/commit.c:1436
+#: builtin/commit.c:1222 builtin/commit.c:1455
 msgid "show status concisely"
 msgstr "以简洁的格式显示状态"
 
-#: builtin/commit.c:1205 builtin/commit.c:1438
+#: builtin/commit.c:1224 builtin/commit.c:1457
 msgid "show branch information"
 msgstr "显示分支信息"
 
-#: builtin/commit.c:1207 builtin/commit.c:1440 builtin/push.c:452
+#: builtin/commit.c:1226 builtin/commit.c:1459 builtin/push.c:452
 msgid "machine-readable output"
 msgstr "机器可读的输出"
 
-#: builtin/commit.c:1210 builtin/commit.c:1442
+#: builtin/commit.c:1229 builtin/commit.c:1461
 msgid "show status in long format (default)"
 msgstr "以长格式显示状态(默认)"
 
-#: builtin/commit.c:1213 builtin/commit.c:1445
+#: builtin/commit.c:1232 builtin/commit.c:1464
 msgid "terminate entries with NUL"
 msgstr "条目以NUL字符结尾"
 
-#: builtin/commit.c:1215 builtin/commit.c:1448 builtin/fast-export.c:667
+#: builtin/commit.c:1234 builtin/commit.c:1467 builtin/fast-export.c:667
 #: builtin/fast-export.c:670 builtin/tag.c:459
 msgid "mode"
 msgstr "模式"
 
-#: builtin/commit.c:1216 builtin/commit.c:1448
+#: builtin/commit.c:1235 builtin/commit.c:1467
 msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
 msgstr "显示未跟踪的文件,“模式”的可选参数:all、normal、no。(默认:all)"
 
-#: builtin/commit.c:1219
+#: builtin/commit.c:1238
 msgid "show ignored files"
 msgstr "显示忽略的文件"
 
-#: builtin/commit.c:1220 parse-options.h:154
+#: builtin/commit.c:1239 parse-options.h:154
 msgid "when"
 msgstr "何时"
 
-#: builtin/commit.c:1221
+#: builtin/commit.c:1240
 msgid ""
 "ignore changes to submodules, optional when: all, dirty, untracked. "
 "(Default: all)"
 msgstr ""
 "忽略子模组的更改,“何时”的可选参数:all、dirty、untracked。(默认:all)"
 
-#: builtin/commit.c:1223
+#: builtin/commit.c:1242
 msgid "list untracked files in columns"
 msgstr "以列的方式显示未跟踪的文件"
 
-#: builtin/commit.c:1294
+#: builtin/commit.c:1313
 msgid "couldn't look up newly created commit"
 msgstr "无法找到新创建的提交"
 
-#: builtin/commit.c:1296
+#: builtin/commit.c:1315
 msgid "could not parse newly created commit"
 msgstr "不能解析新创建的提交"
 
-#: builtin/commit.c:1337
+#: builtin/commit.c:1356
 msgid "detached HEAD"
 msgstr "分离头指针"
 
 #  译者:中文字符串拼接,可删除前导空格
-#: builtin/commit.c:1339
+#: builtin/commit.c:1358
 msgid " (root-commit)"
 msgstr "(根提交)"
 
-#: builtin/commit.c:1406
+#: builtin/commit.c:1425
 msgid "suppress summary after successful commit"
 msgstr "提交成功后不显示概述信息"
 
-#: builtin/commit.c:1407
+#: builtin/commit.c:1426
 msgid "show diff in commit message template"
 msgstr "在提交说明模板里显示差异"
 
-#: builtin/commit.c:1409
+#: builtin/commit.c:1428
 msgid "Commit message options"
 msgstr "提交说明选项"
 
-#: builtin/commit.c:1410 builtin/tag.c:457
+#: builtin/commit.c:1429 builtin/tag.c:457
 msgid "read message from file"
 msgstr "从文件中读取提交说明"
 
-#: builtin/commit.c:1411
+#: builtin/commit.c:1430
 msgid "author"
 msgstr "作者"
 
-#: builtin/commit.c:1411
+#: builtin/commit.c:1430
 msgid "override author for commit"
 msgstr "提交时覆盖作者"
 
-#: builtin/commit.c:1412 builtin/gc.c:178
+#: builtin/commit.c:1431 builtin/gc.c:178
 msgid "date"
 msgstr "日期"
 
-#: builtin/commit.c:1412
+#: builtin/commit.c:1431
 msgid "override date for commit"
 msgstr "提交时覆盖日期"
 
-#: builtin/commit.c:1413 builtin/merge.c:223 builtin/notes.c:405
+#: builtin/commit.c:1432 builtin/merge.c:223 builtin/notes.c:405
 #: builtin/notes.c:562 builtin/tag.c:455
 msgid "message"
 msgstr "说明"
 
-#: builtin/commit.c:1413
+#: builtin/commit.c:1432
 msgid "commit message"
 msgstr "提交说明"
 
-#: builtin/commit.c:1414
+#: builtin/commit.c:1433
 msgid "reuse and edit message from specified commit"
 msgstr "重用并编辑指定提交的提交说明"
 
-#: builtin/commit.c:1415
+#: builtin/commit.c:1434
 msgid "reuse message from specified commit"
 msgstr "重用指定提交的提交说明"
 
-#: builtin/commit.c:1416
+#: builtin/commit.c:1435
 msgid "use autosquash formatted message to fixup specified commit"
 msgstr "使用 autosquash 格式的提交说明用以修正指定的提交"
 
-#: builtin/commit.c:1417
+#: builtin/commit.c:1436
 msgid "use autosquash formatted message to squash specified commit"
 msgstr "使用 autosquash 格式的提交说明用以压缩至指定的提交"
 
-#: builtin/commit.c:1418
+#: builtin/commit.c:1437
 msgid "the commit is authored by me now (used with -C/-c/--amend)"
 msgstr "现在将该提交的作者改为我(和 -C/-c/--amend 参数共用)"
 
-#: builtin/commit.c:1419 builtin/log.c:1160 builtin/revert.c:111
+#: builtin/commit.c:1438 builtin/log.c:1160 builtin/revert.c:111
 msgid "add Signed-off-by:"
 msgstr "添加 Signed-off-by: 签名"
 
-#: builtin/commit.c:1420
+#: builtin/commit.c:1439
 msgid "use specified template file"
 msgstr "使用指定的模板文件"
 
-#: builtin/commit.c:1421
+#: builtin/commit.c:1440
 msgid "force edit of commit"
 msgstr "强制编辑提交"
 
 #  译者:可选值,不能翻译(或是原文中笔误,应为 mode)
-#: builtin/commit.c:1422
+#: builtin/commit.c:1441
 msgid "default"
 msgstr "default"
 
-#: builtin/commit.c:1422 builtin/tag.c:460
+#: builtin/commit.c:1441 builtin/tag.c:460
 msgid "how to strip spaces and #comments from message"
 msgstr "设置如何删除提交说明里的空格和#注释"
 
-#: builtin/commit.c:1423
+#: builtin/commit.c:1442
 msgid "include status in commit message template"
 msgstr "在提交说明模板里包含状态信息"
 
-#: builtin/commit.c:1424 builtin/merge.c:230 builtin/tag.c:461
+#: builtin/commit.c:1443 builtin/merge.c:230 builtin/tag.c:461
 msgid "key id"
 msgstr "key id"
 
-#: builtin/commit.c:1425 builtin/merge.c:231
+#: builtin/commit.c:1444 builtin/merge.c:231
 msgid "GPG sign commit"
 msgstr "GPG 提交签名"
 
 #. end commit message options
-#: builtin/commit.c:1428
+#: builtin/commit.c:1447
 msgid "Commit contents options"
 msgstr "提交内容选项"
 
-#: builtin/commit.c:1429
+#: builtin/commit.c:1448
 msgid "commit all changed files"
 msgstr "提交所有改动的文件"
 
-#: builtin/commit.c:1430
+#: builtin/commit.c:1449
 msgid "add specified files to index for commit"
 msgstr "添加指定的文件到索引区等待提交"
 
-#: builtin/commit.c:1431
+#: builtin/commit.c:1450
 msgid "interactively add files"
 msgstr "交互式添加文件"
 
-#: builtin/commit.c:1432
+#: builtin/commit.c:1451
 msgid "interactively add changes"
 msgstr "交互式添加变更"
 
-#: builtin/commit.c:1433
+#: builtin/commit.c:1452
 msgid "commit only specified files"
 msgstr "只提交指定的文件"
 
-#: builtin/commit.c:1434
+#: builtin/commit.c:1453
 msgid "bypass pre-commit hook"
 msgstr "绕过 pre-commit 钩子"
 
-#: builtin/commit.c:1435
+#: builtin/commit.c:1454
 msgid "show what would be committed"
 msgstr "显示将要提交的内容"
 
-#: builtin/commit.c:1446
+#: builtin/commit.c:1465
 msgid "amend previous commit"
 msgstr "修改先前的提交"
 
-#: builtin/commit.c:1447
+#: builtin/commit.c:1466
 msgid "bypass post-rewrite hook"
 msgstr "绕过 post-rewrite 钩子"
 
-#: builtin/commit.c:1452
+#: builtin/commit.c:1471
 msgid "ok to record an empty change"
 msgstr "允许一个空提交"
 
-#: builtin/commit.c:1455
+#: builtin/commit.c:1474
 msgid "ok to record a change with an empty message"
 msgstr "允许空的提交说明"
 
-#: builtin/commit.c:1488
+#: builtin/commit.c:1507
 msgid "could not parse HEAD commit"
 msgstr "不能解析 HEAD 提交"
 
-#: builtin/commit.c:1526 builtin/merge.c:525
+#: builtin/commit.c:1545 builtin/merge.c:525
 #, c-format
 msgid "could not open '%s' for reading"
 msgstr "不能为读入打开 '%s'"
 
-#: builtin/commit.c:1533
+#: builtin/commit.c:1552
 #, c-format
 msgid "Corrupt MERGE_HEAD file (%s)"
 msgstr "损坏的 MERGE_HEAD 文件(%s)"
 
-#: builtin/commit.c:1540
+#: builtin/commit.c:1559
 msgid "could not read MERGE_MODE"
 msgstr "不能读取 MERGE_MODE"
 
-#: builtin/commit.c:1559
+#: builtin/commit.c:1578
 #, c-format
 msgid "could not read commit message: %s"
 msgstr "不能读取提交说明:%s"
 
-#: builtin/commit.c:1573
+#: builtin/commit.c:1592
 #, c-format
 msgid "Aborting commit; you did not edit the message.\n"
 msgstr "终止提交;您未更改来自模版的提交说明。\n"
 
-#: builtin/commit.c:1578
+#: builtin/commit.c:1597
 #, c-format
 msgid "Aborting commit due to empty commit message.\n"
 msgstr "终止提交因为提交说明为空。\n"
 
-#: builtin/commit.c:1593 builtin/merge.c:861 builtin/merge.c:886
+#: builtin/commit.c:1612 builtin/merge.c:861 builtin/merge.c:886
 msgid "failed to write commit object"
 msgstr "无法写提交对象"
 
-#: builtin/commit.c:1614
+#: builtin/commit.c:1633
 msgid "cannot lock HEAD ref"
 msgstr "无法锁定 HEAD 引用"
 
-#: builtin/commit.c:1618
+#: builtin/commit.c:1637
 msgid "cannot update HEAD ref"
 msgstr "无法更新 HEAD 引用"
 
-#: builtin/commit.c:1629
+#: builtin/commit.c:1648
 msgid ""
 "Repository has been updated, but unable to write\n"
 "new_index file. Check that disk is not full or quota is\n"
@@ -9722,7 +9740,7 @@ msgstr "无法保存 $stash_sha1"
 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\" it at any time.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
 msgstr ""
 "应用 autostash 导致冲突。\n"
 "您的修改安全地保存在 stash 中。\n"
diff --git a/quote.c b/quote.c
index 5c8808160e700af0c055a84f8527eb3ac76962d9..45e3db12d514dd7393539ca0aff09f5aa8467b8d 100644 (file)
--- a/quote.c
+++ b/quote.c
@@ -42,23 +42,6 @@ void sq_quote_buf(struct strbuf *dst, const char *src)
        free(to_free);
 }
 
-void sq_quote_print(FILE *stream, const char *src)
-{
-       char c;
-
-       fputc('\'', stream);
-       while ((c = *src++)) {
-               if (need_bs_quote(c)) {
-                       fputs("'\\", stream);
-                       fputc(c, stream);
-                       fputc('\'', stream);
-               } else {
-                       fputc(c, stream);
-               }
-       }
-       fputc('\'', stream);
-}
-
 void sq_quote_argv(struct strbuf *dst, const char** argv, size_t maxlen)
 {
        int i;
@@ -408,72 +391,72 @@ int unquote_c_style(struct strbuf *sb, const char *quoted, const char **endp)
 
 /* quoting as a string literal for other languages */
 
-void perl_quote_print(FILE *stream, const char *src)
+void perl_quote_buf(struct strbuf *sb, const char *src)
 {
        const char sq = '\'';
        const char bq = '\\';
        char c;
 
-       fputc(sq, stream);
+       strbuf_addch(sb, sq);
        while ((c = *src++)) {
                if (c == sq || c == bq)
-                       fputc(bq, stream);
-               fputc(c, stream);
+                       strbuf_addch(sb, bq);
+               strbuf_addch(sb, c);
        }
-       fputc(sq, stream);
+       strbuf_addch(sb, sq);
 }
 
-void python_quote_print(FILE *stream, const char *src)
+void python_quote_buf(struct strbuf *sb, const char *src)
 {
        const char sq = '\'';
        const char bq = '\\';
        const char nl = '\n';
        char c;
 
-       fputc(sq, stream);
+       strbuf_addch(sb, sq);
        while ((c = *src++)) {
                if (c == nl) {
-                       fputc(bq, stream);
-                       fputc('n', stream);
+                       strbuf_addch(sb, bq);
+                       strbuf_addch(sb, 'n');
                        continue;
                }
                if (c == sq || c == bq)
-                       fputc(bq, stream);
-               fputc(c, stream);
+                       strbuf_addch(sb, bq);
+               strbuf_addch(sb, c);
        }
-       fputc(sq, stream);
+       strbuf_addch(sb, sq);
 }
 
-void tcl_quote_print(FILE *stream, const char *src)
+void tcl_quote_buf(struct strbuf *sb, const char *src)
 {
        char c;
 
-       fputc('"', stream);
+       strbuf_addch(sb, '"');
        while ((c = *src++)) {
                switch (c) {
                case '[': case ']':
                case '{': case '}':
                case '$': case '\\': case '"':
-                       fputc('\\', stream);
+                       strbuf_addch(sb, '\\');
                default:
-                       fputc(c, stream);
+                       strbuf_addch(sb, c);
                        break;
                case '\f':
-                       fputs("\\f", stream);
+                       strbuf_addstr(sb, "\\f");
                        break;
                case '\r':
-                       fputs("\\r", stream);
+                       strbuf_addstr(sb, "\\r");
                        break;
                case '\n':
-                       fputs("\\n", stream);
+                       strbuf_addstr(sb, "\\n");
                        break;
                case '\t':
-                       fputs("\\t", stream);
+                       strbuf_addstr(sb, "\\t");
                        break;
                case '\v':
-                       fputs("\\v", stream);
+                       strbuf_addstr(sb, "\\v");
                        break;
                }
        }
-       fputc('"', stream);
+       strbuf_addch(sb, '"');
 }
diff --git a/quote.h b/quote.h
index ed110a5d8d9e98a680c67379c7c39e4eda5b25f5..71dcc3aa0279af6611f7471d1a4c9949b1dc49fb 100644 (file)
--- a/quote.h
+++ b/quote.h
@@ -27,8 +27,6 @@ struct strbuf;
  * excluding the final null regardless of the buffer size.
  */
 
-extern void sq_quote_print(FILE *stream, const char *src);
-
 extern void sq_quote_buf(struct strbuf *, const char *src);
 extern void sq_quote_argv(struct strbuf *, const char **argv, size_t maxlen);
 
@@ -68,8 +66,8 @@ extern char *quote_path_relative(const char *in, const char *prefix,
                          struct strbuf *out);
 
 /* quoting as a string literal for other languages */
-extern void perl_quote_print(FILE *stream, const char *src);
-extern void python_quote_print(FILE *stream, const char *src);
-extern void tcl_quote_print(FILE *stream, const char *src);
+extern void perl_quote_buf(struct strbuf *sb, const char *src);
+extern void python_quote_buf(struct strbuf *sb, const char *src);
+extern void tcl_quote_buf(struct strbuf *sb, const char *src);
 
 #endif
diff --git a/refs.c b/refs.c
index 7b08a37153457d335ecf676a73252aa5bdbee4fb..d78860c46d95ea9785c83c08824355275393ed99 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -72,10 +72,6 @@ int check_refname_format(const char *refname, int flags)
 {
        int component_len, component_count = 0;
 
-       if (!strcmp(refname, "@"))
-               /* Refname is a single character '@'. */
-               return -1;
-
        while (1) {
                /* We are at the start of a path component. */
                component_len = check_refname_component(refname, flags);
@@ -3200,14 +3196,6 @@ int update_ref(const char *action, const char *refname,
        return 0;
 }
 
-struct ref *find_ref_by_name(const struct ref *list, const char *name)
-{
-       for ( ; list; list = list->next)
-               if (!strcmp(list->name, name))
-                       return (struct ref *)list;
-       return NULL;
-}
-
 /*
  * generate a format suitable for scanf from a ref_rev_parse_rules
  * rule, that is replace the "%.*s" spec with a "%s" spec
index 5b3ce9eed299e312c132b590ea4926cfb019a271..b5ebe0180069c1c1f96b769a37c5f3eb9459dfe9 100644 (file)
@@ -6,6 +6,7 @@
 #include "exec_cmd.h"
 #include "run-command.h"
 #include "pkt-line.h"
+#include "string-list.h"
 #include "sideband.h"
 #include "argv-array.h"
 
@@ -16,11 +17,13 @@ struct options {
        int verbosity;
        unsigned long depth;
        unsigned progress : 1,
+               check_self_contained_and_connected : 1,
                followtags : 1,
                dry_run : 1,
                thin : 1;
 };
 static struct options options;
+static struct string_list cas_options = STRING_LIST_INIT_DUP;
 
 static int set_option(const char *name, const char *value)
 {
@@ -67,6 +70,22 @@ static int set_option(const char *name, const char *value)
                        return -1;
                return 0;
        }
+       else if (!strcmp(name, "check-connectivity")) {
+               if (!strcmp(value, "true"))
+                       options.check_self_contained_and_connected = 1;
+               else if (!strcmp(value, "false"))
+                       options.check_self_contained_and_connected = 0;
+               else
+                       return -1;
+               return 0;
+       }
+       else if (!strcmp(name, "cas")) {
+               struct strbuf val = STRBUF_INIT;
+               strbuf_addf(&val, "--" CAS_OPT_NAME "=%s", value);
+               string_list_append(&cas_options, val.buf);
+               strbuf_release(&val);
+               return 0;
+       }
        else {
                return 1 /* unsupported */;
        }
@@ -654,7 +673,7 @@ static int fetch_git(struct discovery *heads,
        struct strbuf preamble = STRBUF_INIT;
        char *depth_arg = NULL;
        int argc = 0, i, err;
-       const char *argv[15];
+       const char *argv[16];
 
        argv[argc++] = "fetch-pack";
        argv[argc++] = "--stateless-rpc";
@@ -668,6 +687,8 @@ static int fetch_git(struct discovery *heads,
                argv[argc++] = "-v";
                argv[argc++] = "-v";
        }
+       if (options.check_self_contained_and_connected)
+               argv[argc++] = "--check-self-contained-and-connected";
        if (!options.progress)
                argv[argc++] = "--no-progress";
        if (options.depth) {
@@ -790,6 +811,7 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
        struct rpc_state rpc;
        int i, err;
        struct argv_array args;
+       struct string_list_item *cas_option;
 
        argv_array_init(&args);
        argv_array_pushl(&args, "send-pack", "--stateless-rpc", "--helper-status",
@@ -804,6 +826,8 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs)
        else if (options.verbosity > 1)
                argv_array_push(&args, "--verbose");
        argv_array_push(&args, options.progress ? "--progress" : "--no-progress");
+       for_each_string_list_item(cas_option, &cas_options)
+               argv_array_push(&args, cas_option->string);
        argv_array_push(&args, url);
        for (i = 0; i < nr_spec; i++)
                argv_array_push(&args, specs[i]);
@@ -939,6 +963,7 @@ int main(int argc, const char **argv)
                        printf("fetch\n");
                        printf("option\n");
                        printf("push\n");
+                       printf("check-connectivity\n");
                        printf("\n");
                        fflush(stdout);
                } else {
index efcba931eca963bd6a5fd13f01a4859e0ae9e14d..24334679e0971e3af5e168d1cf7259da55d21d50 100644 (file)
--- a/remote.c
+++ b/remote.c
@@ -148,6 +148,7 @@ static struct remote *make_remote(const char *name, int len)
        }
 
        ret = xcalloc(1, sizeof(struct remote));
+       ret->prune = -1;  /* unspecified */
        ALLOC_GROW(remotes, remotes_nr + 1, remotes_alloc);
        remotes[remotes_nr++] = ret;
        if (len)
@@ -404,6 +405,8 @@ static int handle_config(const char *key, const char *value, void *cb)
                remote->skip_default_update = git_config_bool(key, value);
        else if (!strcmp(subkey, ".skipfetchall"))
                remote->skip_default_update = git_config_bool(key, value);
+       else if (!strcmp(subkey, ".prune"))
+               remote->prune = git_config_bool(key, value);
        else if (!strcmp(subkey, ".url")) {
                const char *v;
                if (git_config_string(&v, key, value))
@@ -1302,6 +1305,14 @@ static void add_missing_tags(struct ref *src, struct ref **dst, struct ref ***ds
        free(sent_tips.tip);
 }
 
+struct ref *find_ref_by_name(const struct ref *list, const char *name)
+{
+       for ( ; list; list = list->next)
+               if (!strcmp(list->name, name))
+                       return (struct ref *)list;
+       return NULL;
+}
+
 static void prepare_ref_index(struct string_list *ref_index, struct ref *ref)
 {
        for ( ; ref; ref = ref->next)
@@ -1411,12 +1422,13 @@ int match_push_refs(struct ref *src, struct ref **dst,
 }
 
 void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
-       int force_update)
+                            int force_update)
 {
        struct ref *ref;
 
        for (ref = remote_refs; ref; ref = ref->next) {
                int force_ref_update = ref->force || force_update;
+               int reject_reason = 0;
 
                if (ref->peer_ref)
                        hashcpy(ref->new_sha1, ref->peer_ref->new_sha1);
@@ -1431,6 +1443,26 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
                }
 
                /*
+                * Bypass the usual "must fast-forward" check but
+                * replace it with a weaker "the old value must be
+                * this value we observed".  If the remote ref has
+                * moved and is now different from what we expect,
+                * reject any push.
+                *
+                * It also is an error if the user told us to check
+                * with the remote-tracking branch to find the value
+                * to expect, but we did not have such a tracking
+                * branch.
+                */
+               if (ref->expect_old_sha1) {
+                       if (ref->expect_old_no_trackback ||
+                           hashcmp(ref->old_sha1, ref->old_sha1_expect))
+                               reject_reason = REF_STATUS_REJECT_STALE;
+               }
+
+               /*
+                * The usual "must fast-forward" rules.
+                *
                 * Decide whether an individual refspec A:B can be
                 * pushed.  The push will succeed if any of the
                 * following are true:
@@ -1448,24 +1480,26 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
                 *     passing the --force argument
                 */
 
-               if (!ref->deletion && !is_null_sha1(ref->old_sha1)) {
-                       int why = 0; /* why would this push require --force? */
-
+               else if (!ref->deletion && !is_null_sha1(ref->old_sha1)) {
                        if (!prefixcmp(ref->name, "refs/tags/"))
-                               why = REF_STATUS_REJECT_ALREADY_EXISTS;
+                               reject_reason = REF_STATUS_REJECT_ALREADY_EXISTS;
                        else if (!has_sha1_file(ref->old_sha1))
-                               why = REF_STATUS_REJECT_FETCH_FIRST;
+                               reject_reason = REF_STATUS_REJECT_FETCH_FIRST;
                        else if (!lookup_commit_reference_gently(ref->old_sha1, 1) ||
                                 !lookup_commit_reference_gently(ref->new_sha1, 1))
-                               why = REF_STATUS_REJECT_NEEDS_FORCE;
+                               reject_reason = REF_STATUS_REJECT_NEEDS_FORCE;
                        else if (!ref_newer(ref->new_sha1, ref->old_sha1))
-                               why = REF_STATUS_REJECT_NONFASTFORWARD;
-
-                       if (!force_ref_update)
-                               ref->status = why;
-                       else if (why)
-                               ref->forced_update = 1;
+                               reject_reason = REF_STATUS_REJECT_NONFASTFORWARD;
                }
+
+               /*
+                * "--force" will defeat any rejection implemented
+                * by the rules above.
+                */
+               if (!force_ref_update)
+                       ref->status = reject_reason;
+               else if (reject_reason)
+                       ref->forced_update = 1;
        }
 }
 
@@ -1936,3 +1970,121 @@ struct ref *get_stale_heads(struct refspec *refs, int ref_count, struct ref *fet
        string_list_clear(&ref_names, 0);
        return stale_refs;
 }
+
+/*
+ * Compare-and-swap
+ */
+void clear_cas_option(struct push_cas_option *cas)
+{
+       int i;
+
+       for (i = 0; i < cas->nr; i++)
+               free(cas->entry[i].refname);
+       free(cas->entry);
+       memset(cas, 0, sizeof(*cas));
+}
+
+static struct push_cas *add_cas_entry(struct push_cas_option *cas,
+                                     const char *refname,
+                                     size_t refnamelen)
+{
+       struct push_cas *entry;
+       ALLOC_GROW(cas->entry, cas->nr + 1, cas->alloc);
+       entry = &cas->entry[cas->nr++];
+       memset(entry, 0, sizeof(*entry));
+       entry->refname = xmemdupz(refname, refnamelen);
+       return entry;
+}
+
+int parse_push_cas_option(struct push_cas_option *cas, const char *arg, int unset)
+{
+       const char *colon;
+       struct push_cas *entry;
+
+       if (unset) {
+               /* "--no-<option>" */
+               clear_cas_option(cas);
+               return 0;
+       }
+
+       if (!arg) {
+               /* just "--<option>" */
+               cas->use_tracking_for_rest = 1;
+               return 0;
+       }
+
+       /* "--<option>=refname" or "--<option>=refname:value" */
+       colon = strchrnul(arg, ':');
+       entry = add_cas_entry(cas, arg, colon - arg);
+       if (!*colon)
+               entry->use_tracking = 1;
+       else if (get_sha1(colon + 1, entry->expect))
+               return error("cannot parse expected object name '%s'", colon + 1);
+       return 0;
+}
+
+int parseopt_push_cas_option(const struct option *opt, const char *arg, int unset)
+{
+       return parse_push_cas_option(opt->value, arg, unset);
+}
+
+int is_empty_cas(const struct push_cas_option *cas)
+{
+       return !cas->use_tracking_for_rest && !cas->nr;
+}
+
+/*
+ * Look at remote.fetch refspec and see if we have a remote
+ * tracking branch for the refname there.  Fill its current
+ * value in sha1[].
+ * If we cannot do so, return negative to signal an error.
+ */
+static int remote_tracking(struct remote *remote, const char *refname,
+                          unsigned char sha1[20])
+{
+       char *dst;
+
+       dst = apply_refspecs(remote->fetch, remote->fetch_refspec_nr, refname);
+       if (!dst)
+               return -1; /* no tracking ref for refname at remote */
+       if (read_ref(dst, sha1))
+               return -1; /* we know what the tracking ref is but we cannot read it */
+       return 0;
+}
+
+static void apply_cas(struct push_cas_option *cas,
+                     struct remote *remote,
+                     struct ref *ref)
+{
+       int i;
+
+       /* Find an explicit --<option>=<name>[:<value>] entry */
+       for (i = 0; i < cas->nr; i++) {
+               struct push_cas *entry = &cas->entry[i];
+               if (!refname_match(entry->refname, ref->name, ref_rev_parse_rules))
+                       continue;
+               ref->expect_old_sha1 = 1;
+               if (!entry->use_tracking)
+                       hashcpy(ref->old_sha1_expect, cas->entry[i].expect);
+               else if (remote_tracking(remote, ref->name, ref->old_sha1_expect))
+                       ref->expect_old_no_trackback = 1;
+               return;
+       }
+
+       /* Are we using "--<option>" to cover all? */
+       if (!cas->use_tracking_for_rest)
+               return;
+
+       ref->expect_old_sha1 = 1;
+       if (remote_tracking(remote, ref->name, ref->old_sha1_expect))
+               ref->expect_old_no_trackback = 1;
+}
+
+void apply_push_cas(struct push_cas_option *cas,
+                   struct remote *remote,
+                   struct ref *remote_refs)
+{
+       struct ref *ref;
+       for (ref = remote_refs; ref; ref = ref->next)
+               apply_cas(cas, remote, ref);
+}
index cf5672466151254b92582ba4729a2a95e670beff..131130a611b55c9f79649037e6dde916b621f578 100644 (file)
--- a/remote.h
+++ b/remote.h
@@ -1,6 +1,8 @@
 #ifndef REMOTE_H
 #define REMOTE_H
 
+#include "parse-options.h"
+
 enum {
        REMOTE_CONFIG,
        REMOTE_REMOTES,
@@ -40,6 +42,7 @@ struct remote {
        int fetch_tags;
        int skip_default_update;
        int mirror;
+       int prune;
 
        const char *receivepack;
        const char *uploadpack;
@@ -71,6 +74,56 @@ struct refspec {
 
 extern const struct refspec *tag_refspec;
 
+struct ref {
+       struct ref *next;
+       unsigned char old_sha1[20];
+       unsigned char new_sha1[20];
+       unsigned char old_sha1_expect[20]; /* used by expect-old */
+       char *symref;
+       unsigned int
+               force:1,
+               forced_update:1,
+               expect_old_sha1:1,
+               expect_old_no_trackback:1,
+               deletion:1,
+               matched:1;
+
+       /*
+        * Order is important here, as we write to FETCH_HEAD
+        * in numeric order. And the default NOT_FOR_MERGE
+        * should be 0, so that xcalloc'd structures get it
+        * by default.
+        */
+       enum {
+               FETCH_HEAD_MERGE = -1,
+               FETCH_HEAD_NOT_FOR_MERGE = 0,
+               FETCH_HEAD_IGNORE = 1
+       } fetch_head_status;
+
+       enum {
+               REF_STATUS_NONE = 0,
+               REF_STATUS_OK,
+               REF_STATUS_REJECT_NONFASTFORWARD,
+               REF_STATUS_REJECT_ALREADY_EXISTS,
+               REF_STATUS_REJECT_NODELETE,
+               REF_STATUS_REJECT_FETCH_FIRST,
+               REF_STATUS_REJECT_NEEDS_FORCE,
+               REF_STATUS_REJECT_STALE,
+               REF_STATUS_UPTODATE,
+               REF_STATUS_REMOTE_REJECT,
+               REF_STATUS_EXPECTING_REPORT
+       } status;
+       char *remote_status;
+       struct ref *peer_ref; /* when renaming */
+       char name[FLEX_ARRAY]; /* more */
+};
+
+#define REF_NORMAL     (1u << 0)
+#define REF_HEADS      (1u << 1)
+#define REF_TAGS       (1u << 2)
+
+extern struct ref *find_ref_by_name(const struct ref *list, const char *name);
+
 struct ref *alloc_ref(const char *name);
 struct ref *copy_ref(const struct ref *ref);
 struct ref *copy_ref_list(const struct ref *ref);
@@ -84,6 +137,14 @@ int check_ref_type(const struct ref *ref, int flags);
  */
 void free_refs(struct ref *ref);
 
+struct extra_have_objects {
+       int nr, alloc;
+       unsigned char (*array)[20];
+};
+extern struct ref **get_remote_heads(int in, char *src_buf, size_t src_len,
+                                    struct ref **list, unsigned int flags,
+                                    struct extra_have_objects *);
+
 int resolve_remote_symref(struct ref *ref, struct ref *list);
 int ref_newer(const unsigned char *new_sha1, const unsigned char *old_sha1);
 
@@ -172,4 +233,27 @@ struct ref *guess_remote_head(const struct ref *head,
 /* Return refs which no longer exist on remote */
 struct ref *get_stale_heads(struct refspec *refs, int ref_count, struct ref *fetch_map);
 
+/*
+ * Compare-and-swap
+ */
+#define CAS_OPT_NAME "force-with-lease"
+
+struct push_cas_option {
+       unsigned use_tracking_for_rest:1;
+       struct push_cas {
+               unsigned char expect[20];
+               unsigned use_tracking:1;
+               char *refname;
+       } *entry;
+       int nr;
+       int alloc;
+};
+
+extern int parseopt_push_cas_option(const struct option *, const char *arg, int unset);
+extern int parse_push_cas_option(struct push_cas_option *, const char *arg, int unset);
+extern void clear_cas_option(struct push_cas_option *);
+
+extern int is_empty_cas(const struct push_cas_option *);
+void apply_push_cas(struct push_cas_option *, struct remote *, struct ref *);
+
 #endif
index 84ccc0529b75508be5d1603a9e73790ca2b102fe..ac20d1aaed7b5e1a52682dfd196f87e2f94e87c7 100644 (file)
@@ -15,6 +15,7 @@
 #include "string-list.h"
 #include "line-log.h"
 #include "mailmap.h"
+#include "commit-slab.h"
 
 volatile show_early_output_fn_t show_early_output;
 
@@ -2763,7 +2764,7 @@ static int commit_match(struct commit *commit, struct rev_info *opt)
        return retval;
 }
 
-static inline int want_ancestry(struct rev_info *revs)
+static inline int want_ancestry(const struct rev_info *revs)
 {
        return (revs->rewrite_parents || revs->children.name);
 }
@@ -2820,6 +2821,14 @@ enum commit_action simplify_commit(struct rev_info *revs, struct commit *commit)
        if (action == commit_show &&
            !revs->show_all &&
            revs->prune && revs->dense && want_ancestry(revs)) {
+               /*
+                * --full-diff on simplified parents is no good: it
+                * will show spurious changes from the commits that
+                * were elided.  So we save the parents on the side
+                * when --full-diff is in effect.
+                */
+               if (revs->full_diff)
+                       save_parents(revs, commit);
                if (rewrite_parents(revs, commit, rewrite_one) < 0)
                        return commit_error;
        }
@@ -2839,6 +2848,7 @@ static struct commit *get_revision_1(struct rev_info *revs)
                free(entry);
 
                if (revs->reflog_info) {
+                       save_parents(revs, commit);
                        fake_reflog_parent(revs->reflog_info, commit);
                        commit->object.flags &= ~(ADDED | SEEN | SHOWN);
                }
@@ -3038,6 +3048,8 @@ struct commit *get_revision(struct rev_info *revs)
        c = get_revision_internal(revs);
        if (c && revs->graph)
                graph_update(revs->graph, c);
+       if (!c)
+               free_saved_parents(revs);
        return c;
 }
 
@@ -3069,3 +3081,54 @@ void put_revision_mark(const struct rev_info *revs, const struct commit *commit)
        fputs(mark, stdout);
        putchar(' ');
 }
+
+define_commit_slab(saved_parents, struct commit_list *);
+
+#define EMPTY_PARENT_LIST ((struct commit_list *)-1)
+
+void save_parents(struct rev_info *revs, struct commit *commit)
+{
+       struct commit_list **pp;
+
+       if (!revs->saved_parents_slab) {
+               revs->saved_parents_slab = xmalloc(sizeof(struct saved_parents));
+               init_saved_parents(revs->saved_parents_slab);
+       }
+
+       pp = saved_parents_at(revs->saved_parents_slab, commit);
+
+       /*
+        * When walking with reflogs, we may visit the same commit
+        * several times: once for each appearance in the reflog.
+        *
+        * In this case, save_parents() will be called multiple times.
+        * We want to keep only the first set of parents.  We need to
+        * store a sentinel value for an empty (i.e., NULL) parent
+        * list to distinguish it from a not-yet-saved list, however.
+        */
+       if (*pp)
+               return;
+       if (commit->parents)
+               *pp = copy_commit_list(commit->parents);
+       else
+               *pp = EMPTY_PARENT_LIST;
+}
+
+struct commit_list *get_saved_parents(struct rev_info *revs, const struct commit *commit)
+{
+       struct commit_list *parents;
+
+       if (!revs->saved_parents_slab)
+               return commit->parents;
+
+       parents = *saved_parents_at(revs->saved_parents_slab, commit);
+       if (parents == EMPTY_PARENT_LIST)
+               return NULL;
+       return parents;
+}
+
+void free_saved_parents(struct rev_info *revs)
+{
+       if (revs->saved_parents_slab)
+               clear_saved_parents(revs->saved_parents_slab);
+}
index 95859ba119033ba17346c701493df1474eec5df2..e7f1d211bf0a203978a3024bcbae5c98f25c60cf 100644 (file)
@@ -25,6 +25,7 @@
 struct rev_info;
 struct log_info;
 struct string_list;
+struct saved_parents;
 
 struct rev_cmdline_info {
        unsigned int nr;
@@ -187,6 +188,9 @@ struct rev_info {
 
        /* line level range that we are chasing */
        struct decoration line_log_data;
+
+       /* copies of the parent lists, for --full-diff display */
+       struct saved_parents *saved_parents_slab;
 };
 
 #define REV_TREE_SAME          0
@@ -273,4 +277,20 @@ typedef enum rewrite_result (*rewrite_parent_fn_t)(struct rev_info *revs, struct
 
 extern int rewrite_parents(struct rev_info *revs, struct commit *commit,
        rewrite_parent_fn_t rewrite_parent);
+
+/*
+ * Save a copy of the parent list, and return the saved copy.  This is
+ * used by the log machinery to retrieve the original parents when
+ * commit->parents has been modified by history simpification.
+ *
+ * You may only call save_parents() once per commit (this is checked
+ * for non-root commits).
+ *
+ * get_saved_parents() will transparently return commit->parents if
+ * history simplification is off.
+ */
+extern void save_parents(struct rev_info *revs, struct commit *commit);
+extern struct commit_list *get_saved_parents(struct rev_info *revs, const struct commit *commit);
+extern void free_saved_parents(struct rev_info *revs);
+
 #endif
index 7d172ef37f7b185f9586ce9015a08481d0bd259c..b228d65613c511ffa59eb3ab254ee2e2b6f26c9b 100644 (file)
@@ -5,6 +5,7 @@
 #include "sideband.h"
 #include "run-command.h"
 #include "remote.h"
+#include "connect.h"
 #include "send-pack.h"
 #include "quote.h"
 #include "transport.h"
@@ -226,6 +227,7 @@ int send_pack(struct send_pack_args *args,
                case REF_STATUS_REJECT_ALREADY_EXISTS:
                case REF_STATUS_REJECT_FETCH_FIRST:
                case REF_STATUS_REJECT_NEEDS_FORCE:
+               case REF_STATUS_REJECT_STALE:
                case REF_STATUS_UPTODATE:
                        continue;
                default:
index 8e27db1bd2b49f28b235fcd7e18a0dda43a1f045..8c2d1ed52d6663507ff5b03bc7e5b4f4070403d1 100644 (file)
@@ -614,7 +614,7 @@ static void scan_windows(struct packed_git *p,
        }
 }
 
-static int unuse_one_window(struct packed_git *current, int keep_fd)
+static int unuse_one_window(struct packed_git *current)
 {
        struct packed_git *p, *lru_p = NULL;
        struct pack_window *lru_w = NULL, *lru_l = NULL;
@@ -628,15 +628,8 @@ static int unuse_one_window(struct packed_git *current, int keep_fd)
                pack_mapped -= lru_w->len;
                if (lru_l)
                        lru_l->next = lru_w->next;
-               else {
+               else
                        lru_p->windows = lru_w->next;
-                       if (!lru_p->windows && lru_p->pack_fd != -1
-                               && lru_p->pack_fd != keep_fd) {
-                               close(lru_p->pack_fd);
-                               pack_open_fds--;
-                               lru_p->pack_fd = -1;
-                       }
-               }
                free(lru_w);
                pack_open_windows--;
                return 1;
@@ -644,10 +637,10 @@ static int unuse_one_window(struct packed_git *current, int keep_fd)
        return 0;
 }
 
-void release_pack_memory(size_t need, int fd)
+void release_pack_memory(size_t need)
 {
        size_t cur = pack_mapped;
-       while (need >= (cur - pack_mapped) && unuse_one_window(NULL, fd))
+       while (need >= (cur - pack_mapped) && unuse_one_window(NULL))
                ; /* nothing */
 }
 
@@ -658,7 +651,7 @@ void *xmmap(void *start, size_t length,
        if (ret == MAP_FAILED) {
                if (!length)
                        return NULL;
-               release_pack_memory(length, fd);
+               release_pack_memory(length);
                ret = mmap(start, length, prot, flags, fd, offset);
                if (ret == MAP_FAILED)
                        die_errno("Out of memory? mmap failed");
@@ -682,6 +675,83 @@ void close_pack_windows(struct packed_git *p)
        }
 }
 
+/*
+ * The LRU pack is the one with the oldest MRU window, preferring packs
+ * with no used windows, or the oldest mtime if it has no windows allocated.
+ */
+static void find_lru_pack(struct packed_git *p, struct packed_git **lru_p, struct pack_window **mru_w, int *accept_windows_inuse)
+{
+       struct pack_window *w, *this_mru_w;
+       int has_windows_inuse = 0;
+
+       /*
+        * Reject this pack if it has windows and the previously selected
+        * one does not.  If this pack does not have windows, reject
+        * it if the pack file is newer than the previously selected one.
+        */
+       if (*lru_p && !*mru_w && (p->windows || p->mtime > (*lru_p)->mtime))
+               return;
+
+       for (w = this_mru_w = p->windows; w; w = w->next) {
+               /*
+                * Reject this pack if any of its windows are in use,
+                * but the previously selected pack did not have any
+                * inuse windows.  Otherwise, record that this pack
+                * has windows in use.
+                */
+               if (w->inuse_cnt) {
+                       if (*accept_windows_inuse)
+                               has_windows_inuse = 1;
+                       else
+                               return;
+               }
+
+               if (w->last_used > this_mru_w->last_used)
+                       this_mru_w = w;
+
+               /*
+                * Reject this pack if it has windows that have been
+                * used more recently than the previously selected pack.
+                * If the previously selected pack had windows inuse and
+                * we have not encountered a window in this pack that is
+                * inuse, skip this check since we prefer a pack with no
+                * inuse windows to one that has inuse windows.
+                */
+               if (*mru_w && *accept_windows_inuse == has_windows_inuse &&
+                   this_mru_w->last_used > (*mru_w)->last_used)
+                       return;
+       }
+
+       /*
+        * Select this pack.
+        */
+       *mru_w = this_mru_w;
+       *lru_p = p;
+       *accept_windows_inuse = has_windows_inuse;
+}
+
+static int close_one_pack(void)
+{
+       struct packed_git *p, *lru_p = NULL;
+       struct pack_window *mru_w = NULL;
+       int accept_windows_inuse = 1;
+
+       for (p = packed_git; p; p = p->next) {
+               if (p->pack_fd == -1)
+                       continue;
+               find_lru_pack(p, &lru_p, &mru_w, &accept_windows_inuse);
+       }
+
+       if (lru_p) {
+               close(lru_p->pack_fd);
+               pack_open_fds--;
+               lru_p->pack_fd = -1;
+               return 1;
+       }
+
+       return 0;
+}
+
 void unuse_pack(struct pack_window **w_cursor)
 {
        struct pack_window *w = *w_cursor;
@@ -777,7 +847,7 @@ static int open_packed_git_1(struct packed_git *p)
                        pack_max_fds = 1;
        }
 
-       while (pack_max_fds <= pack_open_fds && unuse_one_window(NULL, -1))
+       while (pack_max_fds <= pack_open_fds && close_one_pack())
                ; /* nothing */
 
        p->pack_fd = git_open_noatime(p->pack_name);
@@ -893,7 +963,7 @@ unsigned char *use_pack(struct packed_git *p,
                        win->len = (size_t)len;
                        pack_mapped += win->len;
                        while (packed_git_limit < pack_mapped
-                               && unuse_one_window(p, p->pack_fd))
+                               && unuse_one_window(p))
                                ; /* nothing */
                        win->base = xmmap(NULL, win->len,
                                PROT_READ, MAP_PRIVATE,
@@ -939,7 +1009,7 @@ static struct packed_git *alloc_packed_git(int extra)
 
 static void try_to_free_pack_memory(size_t size)
 {
-       release_pack_memory(size, -1);
+       release_pack_memory(size);
 }
 
 struct packed_git *add_packed_git(const char *path, int path_len, int local)
index 852dd951dc2d93660727de23ea9467503288e25b..65ad066d9bb4efd9b61142b40d790bac9543de1d 100644 (file)
@@ -1004,17 +1004,6 @@ int get_sha1_mb(const char *name, unsigned char *sha1)
        return st;
 }
 
-/* parse @something syntax, when 'something' is not {.*} */
-static int interpret_empty_at(const char *name, int namelen, int len, struct strbuf *buf)
-{
-       if (len || name[1] == '{')
-               return -1;
-
-       strbuf_reset(buf);
-       strbuf_add(buf, "HEAD", 4);
-       return 1;
-}
-
 static int reinterpret(const char *name, int namelen, int len, struct strbuf *buf)
 {
        /* we have extra data, which might need further processing */
@@ -1077,15 +1066,9 @@ int interpret_branch_name(const char *name, struct strbuf *buf)
        cp = strchr(name, '@');
        if (!cp)
                return -1;
-
-       len = interpret_empty_at(name, namelen, cp - name, buf);
-       if (len > 0)
-               return reinterpret(name, namelen, len, buf);
-
        tmp_len = upstream_mark(cp, namelen - (cp - name));
        if (!tmp_len)
                return -1;
-
        len = cp + tmp_len - name;
        cp = xstrndup(name, cp - name);
        upstream = branch_get(*cp ? cp : NULL);
index 3f0a3f9419a3dead24cd8e850051f595d0b5974f..c0f93c208c11b2dad0d508fcb7adf14873484385 100644 (file)
@@ -134,6 +134,9 @@ int parse_submodule_config_option(const char *var, const char *value)
                return 0;
 
        if (!strcmp(key, "path")) {
+               if (!value)
+                       return config_error_nonbool(var);
+
                config = unsorted_string_list_lookup(&config_name_for_path, value);
                if (config)
                        free(config->util);
@@ -151,6 +154,9 @@ int parse_submodule_config_option(const char *var, const char *value)
        } else if (!strcmp(key, "ignore")) {
                char *name_cstr;
 
+               if (!value)
+                       return config_error_nonbool(var);
+
                if (strcmp(value, "untracked") && strcmp(value, "dirty") &&
                    strcmp(value, "all") && strcmp(value, "none")) {
                        warning("Invalid parameter \"%s\" for config option \"submodule.%s.ignore\"", value, var);
index 895b9258b07ca65b78ac376023e203f482d8ac16..dab405d57479fe95dcb71b16a7a059410d2ae005 100644 (file)
@@ -141,10 +141,11 @@ stop_httpd() {
                -f "$TEST_PATH/apache.conf" $HTTPD_PARA -k stop
 }
 
-test_http_push_nonff() {
+test_http_push_nonff () {
        REMOTE_REPO=$1
        LOCAL_REPO=$2
        BRANCH=$3
+       EXPECT_CAS_RESULT=${4-failure}
 
        test_expect_success 'non-fast-forward push fails' '
                cd "$REMOTE_REPO" &&
@@ -167,6 +168,22 @@ test_http_push_nonff() {
        test_expect_success 'non-fast-forward push shows help message' '
                test_i18ngrep "Updates were rejected because" output
        '
+
+       test_expect_failure 'force with lease aka cas' '
+               HEAD=$( cd "$REMOTE_REPO" && git rev-parse --verify HEAD ) &&
+               test_when_finished '\''
+                       (cd "$REMOTE_REPO" && git update-ref HEAD "$HEAD")
+               '\'' &&
+               (
+                       cd "$LOCAL_REPO" &&
+                       git push -v --force-with-lease=$BRANCH:$HEAD origin
+               ) &&
+               git rev-parse --verify "$BRANCH" >expect &&
+               (
+                       cd "$REMOTE_REPO" && git rev-parse --verify HEAD
+               ) >actual &&
+               test_cmp expect actual
+       '
 }
 
 setup_askpass_helper() {
index dd17e3a09d728a08c8038c5ce8187ea63112cdf3..397c4804010c7566a4f969822c413e46fe817e53 100644 (file)
@@ -22,6 +22,9 @@ ErrorLog error.log
 <IfModule !mod_version.c>
        LoadModule version_module modules/mod_version.so
 </IfModule>
+<IfModule !mod_headers.c>
+       LoadModule headers_module modules/mod_headers.so
+</IfModule>
 
 <IfVersion < 2.4>
 LockFile accept.lock
@@ -87,6 +90,11 @@ Alias /auth/dumb/ www/auth/dumb/
        SetEnv GIT_HTTP_EXPORT_ALL
        SetEnv GIT_NAMESPACE ns
 </LocationMatch>
+<LocationMatch /smart_cookies/>
+       SetEnv GIT_EXEC_PATH ${GIT_EXEC_PATH}
+       SetEnv GIT_HTTP_EXPORT_ALL
+       Header set Set-Cookie name=value
+</LocationMatch>
 ScriptAliasMatch /smart_*[^/]*/(.*) ${GIT_EXEC_PATH}/git-http-backend/$1
 ScriptAlias /broken_smart/ broken-smart-http.sh/
 <Directory ${GIT_EXEC_PATH}>
index 986b2a8f2664b1734964049a5b24fc50cf938cfe..5ed69a6f566bf3a7944b41bace4cfbe26d015040 100755 (executable)
@@ -25,6 +25,10 @@ test_expect_success POSIXPERM,SANITY 'mktemp to unwritable directory prints file
        grep "cannotwrite/test" err
 '
 
+test_expect_success 'git_mkstemps_mode does not fail if fd 0 is not open' '
+       git commit --allow-empty -m message <&-
+'
+
 test_expect_success 'check for a bug in the regex routines' '
        # if this test fails, re-build git with NO_REGEX=1
        test-regex
index 4e911fb43d8ea2c699b3a836547b618274db6e05..a420742494024e127d4e4233153c7054e077e471 100755 (executable)
@@ -78,6 +78,13 @@ $content"
        echo $sha1 | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
        test_cmp expect actual
     '
+
+    test_expect_success '--batch-check with %(rest)' '
+       echo "$type this is some extra content" >expect &&
+       echo "$sha1    this is some extra content" |
+               git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
+       test_cmp expect actual
+    '
 }
 
 hello_content="Hello World"
@@ -91,6 +98,14 @@ test_expect_success "setup" '
 
 run_tests 'blob' $hello_sha1 $hello_size "$hello_content" "$hello_content"
 
+test_expect_success '--batch-check without %(rest) considers whole line' '
+       echo "$hello_sha1 blob $hello_size" >expect &&
+       git update-index --add --cacheinfo 100644 $hello_sha1 "white space" &&
+       test_when_finished "git update-index --remove \"white space\"" &&
+       echo ":white space" | git cat-file --batch-check >actual &&
+       test_cmp expect actual
+'
+
 tree_sha1=$(git write-tree)
 tree_size=33
 tree_pretty_content="100644 blob $hello_sha1   hello"
index 9a105fe21f0da2851fc0f2aae4ff10e2417c9842..6f47c0dd0ec9b5e59205ca98eea9bd729605e004 100755 (executable)
@@ -144,4 +144,26 @@ test_expect_success 'empty reflog file' '
        test_cmp expect actual
 '
 
+# This guards against the alternative of showing the diffs vs. the
+# reflog ancestor.  The reflog used is designed to list the commits
+# more than once, so as to exercise the corresponding logic.
+test_expect_success 'git log -g -p shows diffs vs. parents' '
+       test_commit two &&
+       git branch flipflop &&
+       git update-ref refs/heads/flipflop -m flip1 HEAD^ &&
+       git update-ref refs/heads/flipflop -m flop1 HEAD &&
+       git update-ref refs/heads/flipflop -m flip2 HEAD^ &&
+       git log -g -p flipflop >reflog &&
+       grep -v ^Reflog reflog >actual &&
+       git log -1 -p HEAD^ >log.one &&
+       git log -1 -p HEAD >log.two &&
+       (
+               cat log.one; echo
+               cat log.two; echo
+               cat log.one; echo
+               cat log.two
+       ) >expect &&
+       test_cmp expect actual
+'
+
 test_done
index 4db1613f8a313b3d292132592c8e408dd95f05c9..e5aea3b89602fdaf5ed3a9a230a604dd3f48cda0 100755 (executable)
@@ -55,8 +55,6 @@ check "HEAD@{u}" ref refs/heads/upstream-branch
 check "@{u}@{1}" commit upstream-one
 check "@{-1}@{u}" ref refs/heads/master
 check "@{-1}@{u}@{1}" commit master-one
-check "@" commit new-two
-check "@@{u}" ref refs/heads/upstream-branch
 nonsense "@{u}@{-1}"
 nonsense "@{0}@{0}"
 nonsense "@{1}@{u}"
index 49ccb38f8856e6e5fa00961c6e9117f94c6ae233..4dbeddb0de17eb9fa87fbed98daabcb180235555 100755 (executable)
@@ -976,4 +976,17 @@ test_expect_success 'rebase -i with --strategy and -X' '
        test $(cat file1) = Z
 '
 
+test_expect_success 'rebase -i error on commits with \ in message' '
+       current_head=$(git rev-parse HEAD)
+       test_when_finished "git rebase --abort; git reset --hard $current_head; rm -f error" &&
+       test_commit TO-REMOVE will-conflict old-content &&
+       test_commit "\temp" will-conflict new-content dummy &&
+       (
+       EDITOR=true &&
+       export EDITOR &&
+       test_must_fail git rebase -i HEAD^ --onto HEAD^^ 2>error
+       ) &&
+       test_expect_code 1 grep  "      emp" error
+'
+
 test_done
index 5d22f17ca2d3469c7542805e365246a70a5fba64..debda7a678277e1198ba6620210b66984caf03a2 100755 (executable)
@@ -673,22 +673,4 @@ test_expect_success 'store updates stash ref and reflog' '
        grep quux bazzy
 '
 
-test_expect_success 'stash a change to turn a non-directory to a directory' '
-       git reset --hard &&
-       >testfile &&
-       git add testfile &&
-       git commit -m "add testfile as a regular file" &&
-       rm testfile &&
-       mkdir testfile &&
-       >testfile/file &&
-       test_must_fail git stash save "recover regular file" &&
-       test -f testfile/file
-'
-
-test_expect_success 'stash a change to turn a non-directory to a directory (forced)' '
-       git stash save --force "recover regular file (forced)" &&
-       ! test -f testfile/file &&
-       test -f testfile
-'
-
 test_done
index fd2598e60190fe04381652c7dfe997e01b4ea0c5..a80584ea0eaba854ff21318e3c9646f72325bee7 100755 (executable)
@@ -505,4 +505,20 @@ test_expect_success 'test --all, --depth, and explicit tag' '
        ) >out-adt 2>error-adt
 '
 
+test_expect_success 'shallow fetch with tags does not break the repository' '
+       mkdir repo1 &&
+       (
+               cd repo1 &&
+               git init &&
+               test_commit 1 &&
+               test_commit 2 &&
+               test_commit 3 &&
+               mkdir repo2 &&
+               cd repo2 &&
+               git init &&
+               git fetch --depth=2 ../.git master:branch &&
+               git fsck
+       )
+'
+
 test_done
index fde689166a5dcb419e0519580d628f91f1f29f83..1f0f8e6827773b1bb9a419a822de2d1ebde8e37a 100755 (executable)
@@ -497,6 +497,88 @@ test_expect_success "should be able to fetch with duplicate refspecs" '
        )
 '
 
+# configured prune tests
+
+set_config_tristate () {
+       # var=$1 val=$2
+       case "$2" in
+       unset)  test_unconfig "$1" ;;
+       *)      git config "$1" "$2" ;;
+       esac
+}
+
+test_configured_prune () {
+       fetch_prune=$1 remote_origin_prune=$2 cmdline=$3 expected=$4
+
+       test_expect_success "prune fetch.prune=$1 remote.origin.prune=$2${3:+ $3}; $4" '
+               # make sure a newbranch is there in . and also in one
+               git branch -f newbranch &&
+               (
+                       cd one &&
+                       test_unconfig fetch.prune &&
+                       test_unconfig remote.origin.prune &&
+                       git fetch &&
+                       git rev-parse --verify refs/remotes/origin/newbranch
+               )
+
+               # now remove it
+               git branch -d newbranch &&
+
+               # then test
+               (
+                       cd one &&
+                       set_config_tristate fetch.prune $fetch_prune &&
+                       set_config_tristate remote.origin.prune $remote_origin_prune &&
+
+                       git fetch $cmdline &&
+                       case "$expected" in
+                       pruned)
+                               test_must_fail git rev-parse --verify refs/remotes/origin/newbranch
+                               ;;
+                       kept)
+                               git rev-parse --verify refs/remotes/origin/newbranch
+                               ;;
+                       esac
+               )
+       '
+}
+
+test_configured_prune unset unset ""           kept
+test_configured_prune unset unset "--no-prune" kept
+test_configured_prune unset unset "--prune"    pruned
+
+test_configured_prune false unset ""           kept
+test_configured_prune false unset "--no-prune" kept
+test_configured_prune false unset "--prune"    pruned
+
+test_configured_prune true  unset ""           pruned
+test_configured_prune true  unset "--prune"    pruned
+test_configured_prune true  unset "--no-prune" kept
+
+test_configured_prune unset false ""           kept
+test_configured_prune unset false "--no-prune" kept
+test_configured_prune unset false "--prune"    pruned
+
+test_configured_prune false false ""           kept
+test_configured_prune false false "--no-prune" kept
+test_configured_prune false false "--prune"    pruned
+
+test_configured_prune true  false ""           kept
+test_configured_prune true  false "--prune"    pruned
+test_configured_prune true  false "--no-prune" kept
+
+test_configured_prune unset true  ""           pruned
+test_configured_prune unset true  "--no-prune" kept
+test_configured_prune unset true  "--prune"    pruned
+
+test_configured_prune false true  ""           pruned
+test_configured_prune false true  "--no-prune" kept
+test_configured_prune false true  "--prune"    pruned
+
+test_configured_prune true  true  ""           pruned
+test_configured_prune true  true  "--prune"    pruned
+test_configured_prune true  true  "--no-prune" kept
+
 test_expect_success 'all boundary commits are excluded' '
        test_commit base &&
        test_commit oneside &&
diff --git a/t/t5533-push-cas.sh b/t/t5533-push-cas.sh
new file mode 100755 (executable)
index 0000000..ba20d83
--- /dev/null
@@ -0,0 +1,189 @@
+#!/bin/sh
+
+test_description='compare & swap push force/delete safety'
+
+. ./test-lib.sh
+
+setup_srcdst_basic () {
+       rm -fr src dst &&
+       git clone --no-local . src &&
+       git clone --no-local src dst &&
+       (
+               cd src && git checkout HEAD^0
+       )
+}
+
+test_expect_success setup '
+       : create template repository
+       test_commit A &&
+       test_commit B &&
+       test_commit C
+'
+
+test_expect_success 'push to update (protected)' '
+       setup_srcdst_basic &&
+       (
+               cd dst &&
+               test_commit D &&
+               test_must_fail git push --force-with-lease=master:master origin master
+       ) &&
+       git ls-remote . refs/heads/master >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to update (protected, forced)' '
+       setup_srcdst_basic &&
+       (
+               cd dst &&
+               test_commit D &&
+               git push --force --force-with-lease=master:master origin master
+       ) &&
+       git ls-remote dst refs/heads/master >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to update (protected, tracking)' '
+       setup_srcdst_basic &&
+       (
+               cd src &&
+               git checkout master &&
+               test_commit D &&
+               git checkout HEAD^0
+       ) &&
+       git ls-remote src refs/heads/master >expect &&
+       (
+               cd dst &&
+               test_commit E &&
+               git ls-remote . refs/remotes/origin/master >expect &&
+               test_must_fail git push --force-with-lease=master origin master &&
+               git ls-remote . refs/remotes/origin/master >actual &&
+               test_cmp expect actual
+       ) &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to update (protected, tracking, forced)' '
+       setup_srcdst_basic &&
+       (
+               cd src &&
+               git checkout master &&
+               test_commit D &&
+               git checkout HEAD^0
+       ) &&
+       (
+               cd dst &&
+               test_commit E &&
+               git ls-remote . refs/remotes/origin/master >expect &&
+               git push --force --force-with-lease=master origin master
+       ) &&
+       git ls-remote dst refs/heads/master >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to update (allowed)' '
+       setup_srcdst_basic &&
+       (
+               cd dst &&
+               test_commit D &&
+               git push --force-with-lease=master:master^ origin master
+       ) &&
+       git ls-remote dst refs/heads/master >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to update (allowed, tracking)' '
+       setup_srcdst_basic &&
+       (
+               cd dst &&
+               test_commit D &&
+               git push --force-with-lease=master origin master
+       ) &&
+       git ls-remote dst refs/heads/master >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to update (allowed even though no-ff)' '
+       setup_srcdst_basic &&
+       (
+               cd dst &&
+               git reset --hard HEAD^ &&
+               test_commit D &&
+               git push --force-with-lease=master origin master
+       ) &&
+       git ls-remote dst refs/heads/master >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to delete (protected)' '
+       setup_srcdst_basic &&
+       git ls-remote src refs/heads/master >expect &&
+       (
+               cd dst &&
+               test_must_fail git push --force-with-lease=master:master^ origin :master
+       ) &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to delete (protected, forced)' '
+       setup_srcdst_basic &&
+       (
+               cd dst &&
+               git push --force --force-with-lease=master:master^ origin :master
+       ) &&
+       >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'push to delete (allowed)' '
+       setup_srcdst_basic &&
+       (
+               cd dst &&
+               git push --force-with-lease=master origin :master
+       ) &&
+       >expect &&
+       git ls-remote src refs/heads/master >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'cover everything with default force-with-lease (protected)' '
+       setup_srcdst_basic &&
+       (
+               cd src &&
+               git branch naster master^
+       )
+       git ls-remote src refs/heads/\* >expect &&
+       (
+               cd dst &&
+               test_must_fail git push --force-with-lease origin master master:naster
+       ) &&
+       git ls-remote src refs/heads/\* >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'cover everything with default force-with-lease (allowed)' '
+       setup_srcdst_basic &&
+       (
+               cd src &&
+               git branch naster master^
+       )
+       (
+               cd dst &&
+               git fetch &&
+               git push --force-with-lease origin master master:naster
+       ) &&
+       git ls-remote dst refs/heads/master |
+       sed -e "s/master/naster/" >expect &&
+       git ls-remote src refs/heads/naster >actual &&
+       test_cmp expect actual
+'
+
+test_done
index beb00be4b1593a058308d8897fed81a7cf1556d7..470ac54295e8640feb4d23a81c5dc8ce362857d0 100755 (executable)
@@ -153,7 +153,7 @@ test_expect_success 'used receive-pack service' '
 '
 
 test_http_push_nonff "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git \
-       "$ROOT_PATH"/test_repo_clone master
+       "$ROOT_PATH"/test_repo_clone master             success
 
 test_expect_success 'push fails for non-fast-forward refs unmatched by remote helper' '
        # create a dissimilarly-named remote ref so that git is unable to match the
index 55a866af803452e164e2c11c421b1e63f62d2e1e..8196af19f68ac3772a81326828f7cdf83ae399a1 100755 (executable)
@@ -187,6 +187,22 @@ test_expect_success 'dumb clone via http-backend respects namespace' '
        test_cmp expect actual
 '
 
+cat >cookies.txt <<EOF
+127.0.0.1      FALSE   /smart_cookies/ FALSE   0       othername       othervalue
+EOF
+cat >expect_cookies.txt <<EOF
+
+127.0.0.1      FALSE   /smart_cookies/ FALSE   0       othername       othervalue
+127.0.0.1      FALSE   /smart_cookies/repo.git/info/   FALSE   0       name    value
+EOF
+test_expect_success 'cookies stored in http.cookiefile when http.savecookies set' '
+       git config http.cookiefile cookies.txt &&
+       git config http.savecookies true &&
+       git ls-remote $HTTPD_URL/smart_cookies/repo.git master &&
+       tail -3 cookies.txt > cookies_tail.txt
+       test_cmp expect_cookies.txt cookies_tail.txt
+'
+
 test -n "$GIT_TEST_LONG" && test_set_prereq EXPENSIVE
 
 test_expect_success EXPENSIVE 'create 50,000 tags in the repo' '
index 57ce2395d6738617797d0ba270874abd55a3b899..fde5e712eb512791c893de7b393fe36e382a3f6d 100755 (executable)
@@ -127,4 +127,10 @@ test_expect_success 'full history simplification without parent' '
        }
 '
 
+test_expect_success '--full-diff is not affected by --parents' '
+       git log -p --pretty="%H" --full-diff -- file >expected &&
+       git log -p --pretty="%H" --full-diff --parents -- file >actual &&
+       test_cmp expected actual
+'
+
 test_done
index 5ee97b003a879a0b6a558265e94c18582aa836c0..a39d07446508598dded68561a946e8385a7830c3 100755 (executable)
@@ -18,6 +18,16 @@ test_expect_success 'setup - initial commit' '
        git branch initial
 '
 
+test_expect_success 'configuration parsing' '
+       test_when_finished "rm -f .gitmodules" &&
+       cat >.gitmodules <<-\EOF &&
+       [submodule "s"]
+               path
+               ignore
+       EOF
+       test_must_fail git status
+'
+
 test_expect_success 'setup - repository in init subdirectory' '
        mkdir init &&
        (
index 91d4fd1facf8dc6f97ecd77cdfcdd03b7e1d8927..be93f10cf02bc77e7c78be41bea69b4268305e66 100755 (executable)
@@ -145,7 +145,7 @@ test_expect_success 'use "submodule foreach" to checkout 2nd level submodule' '
                git rev-parse --resolve-git-dir nested1/.git &&
                test_must_fail git rev-parse --resolve-git-dir nested1/nested2/.git &&
                git submodule foreach "git submodule update --init" &&
-               git rev-parse --resolve-git-dir nested1/nested1/nested2/.git
+               git rev-parse --resolve-git-dir nested1/nested2/.git &&
                test_must_fail git rev-parse --resolve-git-dir nested1/nested2/nested3/.git
        )
 '
index ac6f3b6af25c67ae3a2c0748c34f99b4cd0d4b32..31a770d9bc58d7c01d69f7817fcbc06622859662 100755 (executable)
@@ -1031,6 +1031,32 @@ test_expect_success \
         git diff-tree -M -r M3^ M3 >actual &&
         compare_diff_raw expect actual'
 
+cat >input <<INPUT_END
+commit refs/heads/M4
+committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+data <<COMMIT
+rename root
+COMMIT
+
+from refs/heads/M2^0
+R "" sub
+
+INPUT_END
+
+cat >expect <<EOF
+:100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 R100  file2/oldf      sub/file2/oldf
+:100755 100755 85df50785d62d3b05ab03d9cbf7e4a0b49449730 85df50785d62d3b05ab03d9cbf7e4a0b49449730 R100  file4   sub/file4
+:100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc R100  i/am/new/to/you sub/i/am/new/to/you
+:100755 100755 e74b7d465e52746be2b4bae983670711e6e66657 e74b7d465e52746be2b4bae983670711e6e66657 R100  newdir/exec.sh  sub/newdir/exec.sh
+:100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 R100  newdir/interesting      sub/newdir/interesting
+EOF
+test_expect_success \
+       'M: rename root to subdirectory' \
+       'git fast-import <input &&
+        git diff-tree -M -r M4^ M4 >actual &&
+        cat actual &&
+        compare_diff_raw expect actual'
+
 ###
 ### series N
 ###
@@ -1227,6 +1253,29 @@ test_expect_success \
         git diff-tree -C --find-copies-harder -r N4 N6 >actual &&
         compare_diff_raw expect actual'
 
+test_expect_success \
+       'N: copy root by path' \
+       'cat >expect <<-\EOF &&
+       :100755 100755 f1fb5da718392694d0076d677d6d0e364c79b0bc f1fb5da718392694d0076d677d6d0e364c79b0bc C100   file2/newf      oldroot/file2/newf
+       :100644 100644 7123f7f44e39be127c5eb701e5968176ee9d78b1 7123f7f44e39be127c5eb701e5968176ee9d78b1 C100   file2/oldf      oldroot/file2/oldf
+       :100755 100755 85df50785d62d3b05ab03d9cbf7e4a0b49449730 85df50785d62d3b05ab03d9cbf7e4a0b49449730 C100   file4   oldroot/file4
+       :100755 100755 e74b7d465e52746be2b4bae983670711e6e66657 e74b7d465e52746be2b4bae983670711e6e66657 C100   newdir/exec.sh  oldroot/newdir/exec.sh
+       :100644 100644 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 fcf778cda181eaa1cbc9e9ce3a2e15ee9f9fe791 C100   newdir/interesting      oldroot/newdir/interesting
+       EOF
+        cat >input <<-INPUT_END &&
+       commit refs/heads/N-copy-root-path
+       committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
+       data <<COMMIT
+       copy root directory by (empty) path
+       COMMIT
+
+       from refs/heads/branch^0
+       C "" oldroot
+       INPUT_END
+        git fast-import <input &&
+        git diff-tree -C --find-copies-harder -r branch N-copy-root-path >actual &&
+        compare_diff_raw expect actual'
+
 test_expect_success \
        'N: delete directory by copying' \
        'cat >expect <<-\EOF &&
@@ -2934,4 +2983,20 @@ test_expect_success 'S: ls with garbage after sha1 must fail' '
        test_i18ngrep "space after tree-ish" err
 '
 
+###
+### series T (ls)
+###
+# Setup is carried over from series S.
+
+test_expect_success 'T: ls root tree' '
+       sed -e "s/Z\$//" >expect <<-EOF &&
+       040000 tree $(git rev-parse S^{tree})   Z
+       EOF
+       sha1=$(git rev-parse --verify S) &&
+       git fast-import --import-marks=marks <<-EOF >actual &&
+       ls $sha1 ""
+       EOF
+       test_cmp expect actual
+'
+
 test_done
index 272a071e85b0b7c6b34da06fd7492a257b09fa52..2d4beb5e50c257fed2f4b6475cb5834425b5a64f 100755 (executable)
@@ -69,7 +69,7 @@ run_completion ()
        local -a COMPREPLY _words
        local _cword
        _words=( $1 )
-       test "${1: -1}" = ' ' && _words+=('')
+       test "${1: -1}" = ' ' && _words[${#_words[@]}+1]=''
        (( _cword = ${#_words[@]} - 1 ))
        __git_wrap__git_main && print_comp
 }
index 3c3e4e8c38023595978368e0b1665e122e0bdfab..59f875e830df432ed200eeca96e70100a1fb2d2b 100755 (executable)
@@ -61,6 +61,29 @@ test_expect_success 'prompt - unborn branch' '
        test_cmp expected "$actual"
 '
 
+repo_with_newline='repo
+with
+newline'
+
+if mkdir "$repo_with_newline" 2>/dev/null
+then
+       test_set_prereq FUNNYNAMES
+else
+       say 'Your filesystem does not allow newlines in filenames.'
+fi
+
+test_expect_success FUNNYNAMES 'prompt - with newline in path' '
+       printf " (master)" >expected &&
+       git init "$repo_with_newline" &&
+       test_when_finished "rm -rf \"$repo_with_newline\"" &&
+       mkdir "$repo_with_newline"/subdir &&
+       (
+               cd "$repo_with_newline/subdir" &&
+               __git_ps1 >"$actual"
+       ) &&
+       test_cmp expected "$actual"
+'
+
 test_expect_success 'prompt - detached head' '
        printf " ((%s...))" $(git log -1 --format="%h" --abbrev=13 b1^) >expected &&
        test_config core.abbrev 13 &&
index 15ab6d8e7ea05ca54f0b755828e166fafe9bc28c..1f3bcebfd76ae1b37e1542631a87e5a5e3e6b1eb 100755 (executable)
@@ -30,6 +30,7 @@ do
        if [ "$local_sha" = $z40 ]
        then
                # Handle delete
+               :
        else
                if [ "$remote_sha" = $z40 ]
                then
index 63cabc37e37dd338d3d9ee0764f099840d937600..4c2a39e8ff03df5285657a5c0f9b7746c28d76a6 100644 (file)
@@ -27,6 +27,7 @@ struct helper_data {
                push : 1,
                connect : 1,
                signed_tags : 1,
+               check_connectivity : 1,
                no_disconnect_req : 1;
        char *export_marks;
        char *import_marks;
@@ -186,6 +187,8 @@ static struct child_process *get_helper(struct transport *transport)
                        data->bidi_import = 1;
                else if (!strcmp(capname, "export"))
                        data->export = 1;
+               else if (!strcmp(capname, "check-connectivity"))
+                       data->check_connectivity = 1;
                else if (!data->refspecs && !prefixcmp(capname, "refspec ")) {
                        ALLOC_GROW(refspecs,
                                   refspec_nr + 1,
@@ -349,6 +352,9 @@ static int fetch_with_fetch(struct transport *transport,
        struct strbuf buf = STRBUF_INIT;
 
        standard_options(transport);
+       if (data->check_connectivity &&
+           data->transport_options.check_self_contained_and_connected)
+               set_helper_option(transport, "check-connectivity", "true");
 
        for (i = 0; i < nr_heads; i++) {
                const struct ref *posn = to_fetch[i];
@@ -372,6 +378,10 @@ static int fetch_with_fetch(struct transport *transport,
                        else
                                transport->pack_lockfile = xstrdup(name);
                }
+               else if (data->check_connectivity &&
+                        data->transport_options.check_self_contained_and_connected &&
+                        !strcmp(buf.buf, "connectivity-ok"))
+                       data->transport_options.self_contained_and_connected = 1;
                else if (!buf.len)
                        break;
                else
@@ -683,6 +693,11 @@ static int push_update_ref_status(struct strbuf *buf,
                        free(msg);
                        msg = NULL;
                }
+               else if (!strcmp(msg, "stale info")) {
+                       status = REF_STATUS_REJECT_STALE;
+                       free(msg);
+                       msg = NULL;
+               }
        }
 
        if (*ref)
@@ -737,13 +752,15 @@ static void push_update_refs_status(struct helper_data *data,
 }
 
 static int push_refs_with_push(struct transport *transport,
-               struct ref *remote_refs, int flags)
+                              struct ref *remote_refs, int flags)
 {
        int force_all = flags & TRANSPORT_PUSH_FORCE;
        int mirror = flags & TRANSPORT_PUSH_MIRROR;
        struct helper_data *data = transport->data;
        struct strbuf buf = STRBUF_INIT;
        struct ref *ref;
+       struct string_list cas_options = STRING_LIST_INIT_DUP;
+       struct string_list_item *cas_option;
 
        get_helper(transport);
        if (!data->push)
@@ -756,6 +773,7 @@ static int push_refs_with_push(struct transport *transport,
                /* Check for statuses set by set_ref_status_for_push() */
                switch (ref->status) {
                case REF_STATUS_REJECT_NONFASTFORWARD:
+               case REF_STATUS_REJECT_STALE:
                case REF_STATUS_REJECT_ALREADY_EXISTS:
                case REF_STATUS_UPTODATE:
                        continue;
@@ -778,11 +796,29 @@ static int push_refs_with_push(struct transport *transport,
                strbuf_addch(&buf, ':');
                strbuf_addstr(&buf, ref->name);
                strbuf_addch(&buf, '\n');
+
+               /*
+                * The "--force-with-lease" options without explicit
+                * values to expect have already been expanded into
+                * the ref->old_sha1_expect[] field; we can ignore
+                * transport->smart_options->cas altogether and instead
+                * can enumerate them from the refs.
+                */
+               if (ref->expect_old_sha1) {
+                       struct strbuf cas = STRBUF_INIT;
+                       strbuf_addf(&cas, "%s:%s",
+                                   ref->name, sha1_to_hex(ref->old_sha1_expect));
+                       string_list_append(&cas_options, strbuf_detach(&cas, NULL));
+               }
        }
-       if (buf.len == 0)
+       if (buf.len == 0) {
+               string_list_clear(&cas_options, 0);
                return 0;
+       }
 
        standard_options(transport);
+       for_each_string_list_item(cas_option, &cas_options)
+               set_helper_option(transport, "cas", cas_option->string);
 
        if (flags & TRANSPORT_PUSH_DRY_RUN) {
                if (set_helper_option(transport, "dry-run", "true") != 0)
index e15db9808c85a3918a8de3c409500aaa78d1328e..b321d6a49d40c78612284557f7ef6d7822a45c8f 100644 (file)
@@ -3,6 +3,8 @@
 #include "run-command.h"
 #include "pkt-line.h"
 #include "fetch-pack.h"
+#include "remote.h"
+#include "connect.h"
 #include "send-pack.h"
 #include "walker.h"
 #include "bundle.h"
@@ -707,6 +709,10 @@ static int print_one_push_status(struct ref *ref, const char *dest, int count, i
                print_ref_status('!', "[rejected]", ref, ref->peer_ref,
                                                 "needs force", porcelain);
                break;
+       case REF_STATUS_REJECT_STALE:
+               print_ref_status('!', "[rejected]", ref, ref->peer_ref,
+                                                "stale info", porcelain);
+               break;
        case REF_STATUS_REMOTE_REJECT:
                print_ref_status('!', "[remote rejected]", ref,
                                                 ref->deletion ? NULL : ref->peer_ref,
@@ -1076,6 +1082,7 @@ static int run_pre_push_hook(struct transport *transport,
        for (r = remote_refs; r; r = r->next) {
                if (!r->peer_ref) continue;
                if (r->status == REF_STATUS_REJECT_NONFASTFORWARD) continue;
+               if (r->status == REF_STATUS_REJECT_STALE) continue;
                if (r->status == REF_STATUS_UPTODATE) continue;
 
                strbuf_reset(&buf);
@@ -1140,6 +1147,12 @@ int transport_push(struct transport *transport,
                        return -1;
                }
 
+               if (transport->smart_options &&
+                   transport->smart_options->cas &&
+                   !is_empty_cas(transport->smart_options->cas))
+                       apply_push_cas(transport->smart_options->cas,
+                                      transport->remote, remote_refs);
+
                set_ref_status_for_push(remote_refs,
                        flags & TRANSPORT_PUSH_MIRROR,
                        flags & TRANSPORT_PUSH_FORCE);
index ea70ea7e4a1b61c3006c614712ddd1aa41205ac6..10f7556001c98c9da533c959b1e1c7b3ba8b2ca0 100644 (file)
@@ -2,6 +2,7 @@
 #define TRANSPORT_H
 
 #include "cache.h"
+#include "run-command.h"
 #include "remote.h"
 
 struct git_transport_options {
@@ -13,6 +14,7 @@ struct git_transport_options {
        int depth;
        const char *uploadpack;
        const char *receivepack;
+       struct push_cas_option *cas;
 };
 
 struct transport {
@@ -126,6 +128,9 @@ struct transport *transport_get(struct remote *, const char *);
 /* Transfer the data as a thin pack if not null */
 #define TRANS_OPT_THIN "thin"
 
+/* Check the current value of the remote ref */
+#define TRANS_OPT_CAS "cas"
+
 /* Keep the pack that was transferred if not null */
 #define TRANS_OPT_KEEP "keep"
 
index bf01717015b662cec594d2d3c73e57f409037533..1a61e6f363d6a03b262ad5e5a28c58c2caf722d5 100644 (file)
@@ -1154,8 +1154,10 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
 
        o->src_index = NULL;
        ret = check_updates(o) ? (-2) : 0;
-       if (o->dst_index)
+       if (o->dst_index) {
+               discard_index(o->dst_index);
                *o->dst_index = o->result;
+       }
 
 done:
        clear_exclude_list(&el);
index 127e59a6037a14ad63648a727e873fe4a9e38381..b03492e664daa53f09d13787494c925af702d949 100644 (file)
@@ -10,6 +10,7 @@
 #include "revision.h"
 #include "list-objects.h"
 #include "run-command.h"
+#include "connect.h"
 #include "sigchain.h"
 #include "version.h"
 #include "string-list.h"