我正在尝试从我的工作笔记本电脑上提交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项目。还有什么我可以尝试的,甚至可能吗?
答案 0 :(得分:116)
首先,作者不一定与提交者相同。 Git跟踪两者。
要设置仅用于此存储库的名称,您可以执行以下操作:
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 ...
但我认为最好只使用上面的配置选项。
答案 1 :(得分:41)
尝试将其添加到您的git命令:
git -c user.email=email@domain.fr -c user.name='Your Name'
这对于一次性攻击是可以的,但你可能更喜欢将它保存在你从git克隆的本地repo的.git / config文件中。这可以通过运行git config
(没有--global或--system使其成为“repo的本地”)或编辑.git/config
(它与~/.gitconfig
的语法相同来完成)
答案 2 :(得分:22)
您还可以在每个shell甚至每个命令的基础上设置环境变量GIT_COMMITTER_NAME
,GIT_COMMITTER_EMAIL
,GIT_AUTHOR_NAME
和GIT_AUTHOR_EMAIL
。
答案 3 :(得分:7)
我相信你可以跑:
git config user.name "Your Name"
git config user.email you@example.com
对于git的不同部分。尝试打开正在为github服务器的repo工作的文件夹。
确保在该工作文件夹中看到.git文件夹。现在在Terminal / Console / CommandPrompt中打开该文件夹,并尝试仅通过运行我在上面指定的命令来更改该文件夹的用户名和电子邮件。
通过更改它,您现在可以访问GitHub服务器。
看看这里:https://help.github.com/articles/setting-your-username-in-git
另外,我相信有一种方法可以通过在命令本身中使用你的github用户名和密码来推送到远程仓库,但是我没有引用它,因为它对我不起作用。
答案 4 :(得分:4)
跟随Jesse Glick的回答,扩大了实施范围,因为IMO的建议是最好的方法。
将以下内容添加到.bash_profile中。它会在首次在活动shell中运行任何git命令时提示您输入用户。然后它将记住所有后续运行的用户。
(显然将输入用户值交叉引用到案例块中各种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 "$@"
}
答案 5 :(得分:0)
您还可以在每个shell甚至每个命令的基础上设置环境变量
GIT_COMMITTER_NAME
,GIT_COMMITTER_EMAIL
,GIT_AUTHOR_NAME
和GIT_AUTHOR_EMAIL
。
实际上,自Git 2.22(2019年第二季度)以来,您有一个新选择:在更具体的情况下,引入了四个新的配置变量{author,committer}.{name,email}
以覆盖user.{name,email}
。
请参见commit 39ab4d0的William Hubbs (``)(2019年2月4日)。
(由Junio C Hamano -- gitster
--在commit 4e021dc中合并,2019年3月7日)
config
:允许提供单独的作者和提交者身份
author.email
,author.name
,committer.email
和committer.name
的设置类似于GIT_AUTHOR_*
和GIT_COMMITTER_*
环境变量,但对于{ {1}}系统。
这样就可以为每个存储库分别设置它们。Git支持使用环境变量设置不同的作者和提交者信息。但是,环境变量是在Shell中设置的,因此,如果不同存储库需要不同的作者和提交者信息,则需要使用外部工具。
这为
git config
,author.email
,author.name
和committer.email
设置的git config添加了支持,因此可以在每个存储库中设置此信息。