不需要配置user.email和user.name就可以创建git stash(git stash --author ?)

18

简而言之

使用git stash create创建一个存储区,是否有可能不需要配置user.emailuser.name?类似于git commit --author选项?

一些背景:

我有几台构建机器,每台都有一个构建用户,并且可以访问中央git代码库。但是,我没有为这些用户的每个用户配置user.emailuser.name,因为他们从未需要进行提交。

在我的其中一个脚本中,我使用

git stash create

(这使我可以使用git archive --format-gtz...我会省略细节, 可以查看我相关的问题)。

然而,这个命令失败了:

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

fatal: empty ident name (for <macq@chmalap.macqel>) not allowed
Cannot save the current index state

PS:我有git 1.8.4


如果您可以升级到更高版本的Git 2.21(2019年第一季度),git stash将容忍缺失的用户身份。请参见下面的答案 - VonC
3个回答

25

使用 Git 的 -c 标志,可以在命令行上传递配置参数:

git -c user.name=test -c user.email=test@test.com stash create

3
您可以尝试使用GIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL(以及相应的COMMITER)环境变量。更多详情请参考Git-Internals-Environment-Variables - Mort
GIT_COMMITTER_NAMEGIT_COMMITTER_EMAIL对于git stash的工作已经足够。 - Selivanov Pavel

5
在 Git 2.21(2019年第一季度,两年多后),您将不必配置 user.email 和 user.name(git stash --author ?)。
在 user.useConfigOnly 下需要正确配置的用户名/电子邮件才能创建提交;现在“git stash”命令(即使它创建提交对象来表示存储条目)也不需要满足该要求。

请看提交3bc2111(2018年11月18日)由Slavica Djukic(“”)完成。
协助者:Junio C Hamano(gitster
(由Junio C Hamano -- gitster --提交1328d29中合并,2019年1月4日)

stash: 容忍缺失的用户身份识别信息

"git stash" 命令与"git commit-tree" 和 "git commit" 命令使用相同的代码路径来创建提交对象,因此需要像这些命令一样具备可用的用户身份识别信息。

实际上这并非完全必要。

在创建提交对象之前检查错误,然后提供虚假的身份信息来满足创建提交对象的机制。
添加测试以说明存储和不存储有效标识符时,捆绑操作都可以正确执行。

这并不是那么重要的可用性改进,因为运行"git stash"的用户最终会想要通过提交将暂存在存储库中的更改记录在更持久的历史中,并且他们必须在那个时候执行"git config user.{name,email}",因此可以说这种变化只是推迟了必须在存储库中工作所需的步骤。


-1

如果您只想从工作副本中删除任何本地更改,并且确信没有需要保存以供以后使用的内容,则可以运行令人不安的危险命令:

git checkout .

这个问题可能比只涉及git stash create更广泛(该问题适用于任何使用git stash的情况)。我回答的问题可能是这个问题的重复。


3
我不明白这与我的问题有什么关联? - Chris Maes
@ChrisMaes:它解决了一个问题,你可能会使用git stash来解决(删除本地更改),而且它没有需要用户数据的限制。 - Brent Bradburn
2
正如我在问题中所指出的,我不需要撤销我的更改。我真的需要保留它们... - Chris Maes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接