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

В КОРОТКЕ

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

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

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

В одном из моих сценариев я использую

git stash create

(что позволяет мне использовать архив git --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 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: У меня git 1.8.4

Ответ 1

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

git -c user.name=test -c [email protected] stash create

Ответ 2

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

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

См. коммит 3bc2111 (18 ноября 2018 г.) от Славицы Джукич ('').
Помощник: Джунио С. Хамано (gitster).
(Merged by Junio C Hamano -- [TG46] -- in commit 1328d29, 04 Jan 2019)

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

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

Это не обязательно необходимо.

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

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

Ответ 3

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

git checkout .

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