Commit ohne Einstellung von user.email und user.name

75

Ich versuche mich so zu verpflichten

git commit --author='Paul Draper <[email protected]>' -m 'My commit message'

aber ich verstehe

*** Please tell me who you are.

Run

git config --global user.email "[email protected]"
git config --global user.name "Your Name"

to set your account's default identity.
Omit --global to set the identity only in this repository.

Ich kann diese einstellen, aber ich bin auf einer freigegebenen Box und müsste sie danach deaktivieren (wollen).

git config user.name 'Paul Draper'
git config user.email '[email protected]'
git commit -m 'My commit message'
git config --unset user.name
git config --unset user.email

Das sind viele Zeilen für ein Commit!

Gibt es einen kürzeren Weg?

Paul Draper
quelle
7
Nicht wirklich kürzer, aber wenn Sie Umgebungsvariablen GIT_COMMITTER_NAMEund GIT_COMMITTER_EMAIL(und entweder die AUTHORVersionen derselben oder das --authorArgument wie Sie verwenden) festlegen , sollte dies ausreichen, und Sie müssen es nicht --unset.
Torek
git config user.name "Ihr Benutzername hier" git config user.email [email protected]
felipsmartins
1
Oder das ist kürzer und wahrscheinlich einfacher:git -c user.name=... -c user.email=... commit ...
Torek

Antworten:

122

(Dies kam mir in den Sinn, nachdem ich die lange Version mit den Umgebungsvariablen vorgeschlagen hatte. Git Commit möchte sowohl einen Autor als auch einen Committer festlegen und --authorüberschreibt nur die erstere.)

Alle git-Befehle verwenden -cArgumente vor dem Aktionsverb, um temporäre Konfigurationsdaten festzulegen. Dies ist also der perfekte Ort dafür:

git -c user.name='Paul Draper' -c user.email='[email protected]' commit -m '...'

In diesem Fall -cist dies also Teil des gitBefehls und nicht des commitUnterbefehls.

torek
quelle
Das klingt großartig, aber welche Version unterstützt es? Ich erhalte eine "Unbekannte Option: -c", ich bin in Version 1.7.1 ....: '- (
msb
3
@msb: Git hat git -cin Version 1.7.2 gelernt (so sehr verpasst: - :) .
Torek
19

Sie können die .git/configDatei in Ihrem Repo bearbeiten , um den folgenden Alias ​​hinzuzufügen:

[alias]
  paulcommit = -c user.name='Paul Draper' -c user.email='[email protected]' commit

oder Sie können dies über die Befehlszeile tun:

git config alias.paulcommit "-c user.name='Paul Draper' -c user.email='[email protected]' commit"

Und dann können Sie tun:

git paulcommit -m "..."

Bemerkungen:

  • Die Idee ist , dann fügen Sie auch Aliase wie jeancommit, georgecommit... für die anderen Nutzer dieser gemeinsamen Box.
  • Sie können diesen Alias ​​zu Ihrer globalen Konfiguration hinzufügen, indem Sie Ihren persönlichen Alias ​​bearbeiten .gitconfigoder --globalder Befehlszeile eine Option hinzufügen , wenn Sie den Alias ​​hinzufügen.
  • Der Alias paulcommitist nicht kurz, aber er ist ausführlich und Sie können im Allgemeinen nur git pau+ eingeben tab.
Kpym
quelle
0

Es ist erwähnenswert, dass git unter Linux standardmäßig den Linux-Benutzernamen verwendet, der im Feld "gecos" in / etc / passwd angegeben ist. Sie können diesen Namen mit ausgeben grep $(whoami) /etc/passwd | cut -d ':' -f 5. Wenn dieses Feld leer ist, können Sie kein Commit durchführen, ohne einen Benutzernamen festzulegen. Wenn es nicht leer ist, wird es von git verwendet. Sie hätten also sich selbst als Autor und den Systembenutzer als Committer.

Siehe https://github.com/git/git/blob/master/ident.c

Francesco Silvani
quelle