覆盖configuration的用户一个单一的提交

我正在尝试从我的工作笔记本电脑上提交github.com上的一个项目,该笔记本电脑已经为公司的git服务器configuration。 有没有办法提交指定不同的作者的凭据,可能使用不同的configuration文件或更多的命令行开关?

我试过使用

--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项目。 还有什么我可以尝试,甚至有可能吗?

首先,作者不一定是提交者。 Git跟踪两者。

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

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

注意缺less--global选项。 这将只在该存储库中设置configuration。 你也可以通过命令行使用-c选项:

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

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

试着把这个添加到你的git命令中:

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

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

您还可以在每个shell甚至每个命令的基础上设置环境variablesGIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAMEGIT_AUTHOR_EMAIL

我相信你可以运行:

 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用户名和密码推送到远程回购,但我并没有引用它,因为它不适用于我。

继续Jesse Glick的回答,扩大了实施,因为IMObuild议是最好的办法。

将下面的内容添加到.bash_profile中。 当首次在主动shell中运行任何git命令时,它会提示你一个用户。 它会记住所有后续运行的用户。

(显然交叉引用一个input的用户值,以确保所需的名称和电子邮件地址为各种git auther /名称值的情况下,并根据需要更新分配)

 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 "$@" }