git create stash без необходимости настраивать user.email и user.name (git stash --author?)

КОРОТКО

Есть ли возможность создать тайник (используя git stash create) без настройки user.email и user.name? Что-то похожее на вариант git commit --author?

НЕКОТОРЫЙ КОНТЕКСТ:

У меня есть несколько машин сборки, на которых у меня есть пользователь сборки. У каждого есть доступ к центральным репозиториям git. Однако я не настроил user.email и user.name для каждого из этих пользователей; так как им никогда не нужно делать коммиты.

В одном из моих скриптов я использую

git stash create

(что позволяет мне использовать git archive --format-gtz... Я избавлю вас от подробностей; см. мой похожий вопрос)

Однако эта команда не работает:

*** 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.

fatal: empty ident name (for <[email protected]>) not allowed
Cannot save the current index state

PS: у меня гит 1.8.4


person Chris Maes    schedule 22.04.2016    source источник
comment
Если вы можете перейти на более новую версию Git 2.21 (1 квартал 2019 г.), git stash допустит отсутствие удостоверения пользователя. См. мой ответ ниже.   -  person VonC    schedule 06.01.2019


Ответы (3)


С флагом git -c параметры конфигурации можно передать в командной строке:

git -c user.name=test -c [email protected] stash create
person Chris Maes    schedule 22.04.2016
comment
Возможно, вы также можете использовать переменные окружения GIT_AUTHOR_NAME и GIT_AUTHOR_EMAIL (и то же самое для COMMITER). Git-Internals-Environment-Variables - person Mort; 22.04.2016
comment
GIT_COMMITTER_NAME и GIT_COMMITTER_EMAIL достаточно для работы git stash. - person Selivanov Pavel; 26.08.2016

С Git 2.21 (1 квартал 2019 г., 2+ года спустя) вам не нужно настраивать user.email и user.name (git stash --author ?).

Для создания коммитов в разделе user.useConfigOnly требуется правильно настроенное имя пользователя/электронная почта; Теперь команда "git stash" (хотя она и создает объекты фиксации для представления записей тайника) освобождена от требования.

См. commit 3bc2111 (18 ноября 2018 г.) от Славика Джукич (``).
Помощь: Junio ​​C Hamano (gitster).
(Объединено Junio ​​C Hamano -- gitster -- в commit 1328d29, 4 января 2019 г.)

stash: допускать отсутствие удостоверения пользователя

Команда «git stash» настаивает на том, чтобы иметь пригодную для использования идентификацию пользователя в той же степени, что и команды «git commit-tree» и «git commit», потому что она использует тот же кодовый путь, который создает объекты фиксации, как и эти команды.

Строго не обязательно это делать.

Проверьте, не будем ли мы блевать, прежде чем создавать объекты коммитов, а затем предоставьте поддельную идентификацию, чтобы угодить механизму, создающему коммиты.
Добавьте тест в документ, подтверждающий, что тайник выполняется правильно как с действительным идентификатором, так и без него.

Это не так много для улучшения юзабилити, так как пользователи, которые запускают «git stash», в конечном итоге захотят записать свои изменения, которые временно хранятся в тайниках, в более постоянную историю путем фиксации, и они все равно должны сделать «git config user.{name,email}» в этот момент. , так что, возможно, это изменение только задерживает шаг, необходимый для работы в репозитории.

person VonC    schedule 06.01.2019

Если вы просто хотите удалить любые локальные изменения из рабочей копии и уверены, что ничего не нужно сохранять на потом, вы можете запустить команду тревожно опасная:

git checkout .

Этот вопрос может быть полезен не только git stash create (вопрос касается любого использования git stash). Вопрос, на который я ответил, вероятно, был бы дубликатом этого вопроса.

person Brent Bradburn    schedule 19.06.2018
comment
Я не понимаю, как это связано с моим вопросом? - person Chris Maes; 19.06.2018
comment
@ChrisMaes: он решает проблему, для которой в противном случае вы могли бы использовать git stash (удаление локальных изменений), и у него нет ограничения на запрос пользовательских данных. - person Brent Bradburn; 19.06.2018
comment
Как я уже отмечал в своем вопросе, мне не нужно удалять свои изменения. Мне очень нужно их сохранить... - person Chris Maes; 20.06.2018