Фіксувати без встановлення user.email та user.name


77

Я намагаюся зробити так

git commit --author='Paul Draper <my@email.org>' -m 'My commit message'

але я розумію

*** Please tell me who you are.

Run

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

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

Я можу встановити їх, але я перебуваю у спільному вікні, і мені доведеться (хотіти) зняти їх після цього.

git config user.name 'Paul Draper'
git config user.email 'my@email.org'
git commit -m 'My commit message'
git config --unset user.name
git config --unset user.email

Це багато рядків для одного коміту!

Чи є коротший шлях?


7
Насправді не коротший, але якщо ви встановите змінні середовища GIT_COMMITTER_NAMEта GIT_COMMITTER_EMAILAUTHORверсії того самого, або використовуєте --authorаргумент, як ви це робили), цього має бути достатньо, і вам не потрібно --unset.
torek

git config user.name "ваше ім'я користувача тут" git config user.email user@email.com
felipsmartins

1
Або це коротше і, мабуть, простіше:git -c user.name=... -c user.email=... commit ...
Торек,

Відповіді:


127

(Це трапилося зі мною після того, як запропонував довгу версію зі змінними середовища - git commit хоче встановити як автора, так і комітер, і --authorзамінює лише першу.)

Усі команди git беруть -cаргументи перед дієсловом дії, щоб встановити тимчасові дані конфігурації, тому це ідеальне місце для цього:

git -c user.name='Paul Draper' -c user.email='my@email.org' commit -m '...'

Отже, у цьому випадку -cце частина gitкоманди, а не commitпідкоманда.


це звучить приголомшливо, але яка версія це підтримує? Я отримую "Невідомий варіант: -c", я перебуваю у версії 1.7.1 ....: '- (
msb

3
@msb: Git навчився git -cу версії 1.7.2 ( пропустив на стільки: - :) .
Торек,

19

Ви можете відредагувати .git/configфайл у своєму репо, щоб додати наступний псевдонім:

[alias]
  paulcommit = -c user.name='Paul Draper' -c user.email='my@email.org' commit

або ви можете зробити це за допомогою командного рядка:

git config alias.paulcommit "-c user.name='Paul Draper' -c user.email='my@email.org' commit"

І тоді ви можете зробити:

git paulcommit -m "..."

Примітки:

  • Ідея полягає в тому , то додати ще й псевдоніми , як jeancommit, georgecommit... для інших користувачів цієї загальної коробки.
  • Ви можете додати цей псевдонім до загальної конфігурації, відредагувавши свій особистий .gitconfigабо додавши --globalопцію до командного рядка при додаванні псевдоніма.
  • Псевдонім paulcommitне короткий, але він багатослівний, і загалом ви можете ввести лише git pau+ tab.

0

Варто зазначити, що git на linux буде за замовчуванням іменем користувача linux, як вказано в полі "gecos" в / etc / passwd. Ви можете вивести це ім'я за допомогою grep $(whoami) /etc/passwd | cut -d ':' -f 5. Якщо це поле порожнє, ви не можете здійснити комісію без встановлення імені користувача, але якщо воно не порожнє, git буде використовувати його. Отже, ви станете автором, а користувач системи - комітером.

Див. Https://github.com/git/git/blob/master/ident.c

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.