1つのgit commitの構成済みユーザーを上書きする


97

会社のgitサーバー用にすでに構成されている仕事用ラップトップからgithub.com上のプロジェクトにコミットしようとしています。異なる構成ファイルまたは他のコマンドラインスイッチを使用して、異なる作成者の資格情報を指定してコミットする方法はありますか?

私は使ってみました

--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プロジェクトにコミットするためのユーザー名は更新されませんでした。他に試すことができるものはありますか?それは可能ですか?


2
Gitは作者コミッターを区別します。1つのコマンドに対してコミッターを一時的に設定するには、を使用します-c user.name=Me user.email=me@example.com。カスタムグローバル構成を使用するには、この質問を参照するか-cオプションを含むシェルエイリアスを使用してください。しかし、これらのどちらもおそらくこの状況で正しいことではありません-レポごとの設定が必要です。
Robin Green

Git 2.22(2019年第2四半期)では、専用の設定があります{author,committer}.{name,email}以下の私の回答を参照してください
VonC '10

回答:


177

まず、作者は必ずしもコミッターと同じではありません。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 ...

しかし、上記の構成オプションを使用する方が良いと思います。


5
共有アカウント(開発サーバーのルート)から自分のgit repoにコミットする必要があり、他の人に私の名前/メールを提供したくないので、これはまさに私が必要とするものです。
andrej

57

これをgitコマンドの前に追加してみてください:

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

これはワンショットでは問題ありませんが、gitからクローンしたローカルリポジトリの.git / configファイルに保存することをお勧めします。これは、git config (-globalまたは--systemを実行せずに、「リポジトリにローカル」にする)か、または.git/config(これと同じ構文です。~/.gitconfig


1
ありがとうございました!サーバーを複数の人と共有していますが、デフォルトのユーザーを設定したくありません。これは完璧です!
恐ろしくUnpythonic

1
@horriblyUnpythonicどういたしまして:)でエイリアスを作成したり.bash_aliases、ユーザーが定義されていないときにコミットを拒否するようにpre-commitフックを設定したりすることもできます。
Asenar 2016

27

あなたはまた、環境変数を設定することができGIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAME、およびGIT_AUTHOR_EMAILごとのシェルあるいはコマンドごとのベースで。


これは主に共有コンピュータのシナリオで使用されるため、自動クリーンアップを使用したセッションごとに最適です。
kmac

1
私のために働いていませんでした。著者はその後も同じままgit commit --amendでした。コミッターのみが変更されました。
OndraŽižka17年

私がやったように、ここに同じgit commit --amend --author="$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"
KCD

1
これはgit commit --amend、マンページに記載されているように、仕様により作成者が変更されないためです。解決策: git commit --amend --reset-author
kubanczyk

7

私はあなたが走ることができると信じています:

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のユーザー名とパスワードを使用してリモートリポジトリにpushする方法はあると思いますが、私には機能しなかったので引用しません。


5

IMOの提案がこれを実現するための最良の方法であるため、ここではJesse Glickの回答を拡張実装でフォローしています。

以下を.bash_profileに追加してください。アクティブなシェルで最初に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 "$@"
}

2

あなたはまた、環境変数を設定することができGIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_AUTHOR_NAME、およびGIT_AUTHOR_EMAILごとのシェルあるいはコマンドごとのベースで。

実際、Git 2.22(2019年第2四半期)以降、新しいオプションが追加{author,committer}.{name,email}されました。4つの新しい構成変数が導入されuser.{name,email}、より具体的なケースでオーバーライドできるようになりました。

William Hubbs( ``)によるコミット39ab4d0(2019年2月4日)を参照してください。(合併によりJunio C浜野- -4e021dcコミット 2019年3月7日)
gitster

config:著者とコミッターに個別のIDを与えることを許可する

author.emailauthor.namecommitter.emailおよびcommitter.name設定はに類似しているGIT_AUTHOR_*GIT_COMMITTER_*、環境変数が、のためのgit configシステム。
これにより、リポジトリごとに個別に設定できます。

Gitは、環境変数を使用して異なる作成者とコミッター情報を設定することをサポートしています。ただし、環境変数はシェルで設定されるため、リポジトリごとに異なる作成者およびコミッター情報が必要な場合は、外部ツールが必要です。

これは、のためにgitの設定にサポートを追加しauthor.emailauthor.namecommitter.emailおよびcommitter.name この情報はリポジトリごとに設定できるように設定。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.