重写单个 git 提交的配置用户

我试图从我的工作笔记本电脑上提交到 Github.com上的一个项目,它已经为公司的 git 服务器配置好了。是否有办法提交指定不同的作者凭据,可以使用不同的配置文件或其他命令行开关?

我试过用

--author="My Name <MyNameEmail@email.com>"

我收到了信息:

 Committer: unknown <WorkEmail@workemail.net>
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:


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


After doing this, you may fix the identity used for this commit with:


git commit --amend --reset-author

但它仍然没有更新我的用户名,因为我提交了 github.com 项目。还有什么我可以试试的吗,有可能吗?

67732 次浏览

我相信你可以逃跑:

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

对于不同的 Git 部分。尝试打开正在为 github 服务器进行回购工作的文件夹。

确保您看到一个。工作文件夹中的 git 文件夹。现在,在 Terminal/Console/CommandPrompt 中打开该文件夹,只需运行我上面指定的命令,就可以尝试更改该文件夹的用户名和电子邮件。

通过改变这一点,您现在可以访问 GitHub 服务器。

看这里: https://help.github.com/articles/setting-your-username-in-git

另外,我相信有一种方法可以通过在命令本身中使用您的 github 用户名和密码来推送到远程回购,但是我不会引用它,因为它对我不起作用。

首先,作者不一定与提交者相同。

要设置这个存储库的名称,您可以这样做:

git config user.name "Your Name"
git config user.email "Your email"

注意,没有 --global选项。这将只在这个存储库中设置配置。

或者,您可以使用 -c选项仅对单个命令执行此操作:

git -c "user.name=Your Name" -c "user.email=Your email" commit ...

但是我认为最好使用上面的配置选项。

试着在你的 git 命令前面加上这个:

git -c user.email=email@domain.fr -c user.name='Your Name'

这对于一次性镜头来说是可以的,但是您可以将它保存在。从 git 克隆的本地回购的 git/config 文件。这可以通过运行 git config(no —— global 或—— system 使其成为“ local to the repo”)或编辑 .git/config(与 ~/.gitconfig语法相同)来实现

您还可以根据 shell 甚至根据命令设置环境变量 GIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL

继 Jesse Glick 的回答之后,我们将扩大实现范围,因为 IMO 他的建议是实现这个目标的最佳方式。

将以下内容添加到。Bash _ profile.当您首次在活动 shell 中运行任何 git 命令时,它将提示您输入用户。然后它会记住所有后续运行的用户。

(显然交叉引用一个输入用户值来确定 case 块中各种 git auther/name 值所需的名称和电子邮件地址,并根据需要更新赋值)

git() {
echo "Running BETTER git..."
if [ -z "$GIT_COMMITTER_NAME" ]; then
while true; do
read -p "Git User: " UNAME
case $UNAME in
user1 ) break;;
user2 ) break;;
* ) echo "Invalid User";;
esac
done
GIT_COMMITTER_NAME=$UNAME
export GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL=$UNAME@domain.com
export GIT_COMMITTER_EMAIL
GIT_AUTHOR_NAME=$GIT_COMMITTER_NAME
export GIT_AUTHOR_NAME
GIT_AUTHOR_EMAIL=$GIT_COMMITTER_EMAIL
export GIT_AUTHOR_EMAIL
fi
echo "  using git user: $GIT_AUTHOR_NAME / $GIT_AUTHOR_EMAIL"
/usr/bin/git "$@"
}

您还可以根据 shell 甚至根据命令设置环境变量 GIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL

实际上,自从 Git 2.22(2019年第二季度)以来,您有了一个新的选项: 在更具体的情况下,引入了四个新的配置变量 {author,committer}.{name,email}来覆盖 user.{name,email}

39ab4d0(2019年2月4日) by William Hubbs (“)
(朱尼奥 · C · 哈马诺 gitster于2019年3月7日合并于 犯罪现场调查,第四季,第21集)

config: 允许分别给出作者和提交者事件

author.emailauthor.namecommitter.emailcommitter.name设置类似于 GIT_AUTHOR_*GIT_COMMITTER_*环境变量,但是适用于 git config系统。
这允许为每个存储库分别设置它们。

Git 支持使用环境变量设置不同的作者和提交者信息。但是,环境变量是在 shell 中设置的,因此,如果不同的存储库需要不同的作者和提交者信息,则需要一个外部工具。

这就增加了对 author.emailauthor.namecommitter.emailcommitter.name设置的 git 配置的支持,因此可以在每个存储库中设置这些信息。