web-dev-qa-db-ja.com

.gitconfigで自分自身に複数のユーザーを指定できますか?

私の~/.gitconfigでは、私の個人用電子メールアドレスを[user]の下にリストしています。それがGithubリポジトリに使いたいからです。

しかし、最近私は仕事にもgitを使い始めました。私の会社のgitリポジトリでコミットすることはできますが、新しいチェンジセットのアナウンスを送信するときは、私の.gitconfigの電子メールアドレスを認識できないため、Anonymousからのものです。

[user]に複数の.gitconfig定義を指定することは可能ですか?それとも、特定のディレクトリのデフォルトの.gitconfigを上書きする他の方法はありますか?私の場合、すべての作業コードを~/worksrc/でチェックアウトします - そのディレクトリ(およびそのサブディレクトリ)だけに.gitconfigを指定する方法はありますか?

605
Brock Boland

グローバル設定を上書きする特定のユーザ/ Eメールアドレスを使用するように個々のリポジトリを設定できます。リポジトリのルートから実行します。

git config user.name "Your Name Here"
git config user.email [email protected]

デフォルトのユーザー/ emailは〜/ .gitconfigで設定されています

git config --global user.name "Your Name Here"
git config --global user.email [email protected]
847
discomurray

Git 2.13 なので、新しく導入された Conditional includes を使ってこれを解くことができます。

例:

グローバル設定〜/ .gitconfig

[user]
    name = John Doe
    email = [email protected]

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

作業固有の設定〜/ work/.gitconfig

[user]
    email = [email protected]
295

または、ローカルの.git/configファイルに次の情報を追加することもできます。

[user]  
    name = Your Name
    email = [email protected]
101
Rahul Prasad

Orr Sellaのブログ投稿 からインスピレーションを得た後、私はローカルリポジトリの~/.git/templates/hooks内の情報に基づいて特定のユーザー名とEメールアドレスを設定するpre-commitフックを書きました(./.git/configにあります)

テンプレートディレクトリへのパスを~/.gitconfigに配置する必要があります。

[init]
    templatedir = ~/.git/templates

その後、それぞれのgit initまたはgit cloneがそのフックをピックアップし、次のgit commitの間にユーザーデータを適用します。すでに存在しているリポジトリにフックを適用したい場合は、リポジトリを再初期化するためにリポジトリ内でgit initを実行するだけです。

ここに私が思い付いたフックがあります(それはまだいくらかの磨きを必要とします - 提案は大歓迎です)。どちらかとして保存

~/.git/templates/hooks/pre_commit

または

~/.git/templates/hooks/post-checkout

そしてそれが実行可能であることを確認してください:chmod +x ./post-checkout || chmod +x ./pre_commit

#!/usr/bin/env bash

# -------- USER CONFIG
# Patterns to match a repo's "remote.Origin.url" - beginning portion of the hostname
git_remotes[0]="Github"
git_remotes[1]="Gitlab"

# Adjust names and e-mail addresses
local_id_0[0]="my_name_0"
local_id_0[1]="my_email_0"

local_id_1[0]="my_name_1"
local_id_1[1]="my_email_1"

local_fallback_id[0]="${local_id_0[0]}"
local_fallback_id[1]="${local_id_0[1]}"


# -------- FUNCTIONS
setIdentity()
{
    local current_id local_id

    current_id[0]="$(git config --get --local user.name)"
    current_id[1]="$(git config --get --local user.email)"

    local_id=("$@")

    if [[ "${current_id[0]}" == "${local_id[0]}" &&
          "${current_id[1]}" == "${local_id[1]}" ]]; then
        printf " Local identity is:\n"
        printf "»  User: %s\n»  Mail: %s\n\n" "${current_id[@]}"
    else
        printf "»  User: %s\n»  Mail: %s\n\n" "${local_id[@]}"
        git config --local user.name "${local_id[0]}"
        git config --local user.email "${local_id[1]}"
    fi

    return 0
}

# -------- IMPLEMENTATION
current_remote_url="$(git config --get --local remote.Origin.url)"

if [[ "$current_remote_url" ]]; then

    for service in "${git_remotes[@]}"; do

        # Disable case sensitivity for regex matching
        shopt -s nocasematch

        if [[ "$current_remote_url" =~ $service ]]; then
            case "$service" in

                "${git_remotes[0]}" )
                    printf "\n»» An Intermission\n»  %s repository found." "${git_remotes[0]}"
                    setIdentity "${local_id_0[@]}"
                    exit 0
                    ;;

                "${git_remotes[1]}" )
                    printf "\n»» An Intermission\n»  %s repository found." "${git_remotes[1]}"
                    setIdentity "${local_id_1[@]}"
                    exit 0
                    ;;

                * )
                    printf "\n»  pre-commit hook: unknown error\n» Quitting.\n"
                    exit 1
                    ;;

            esac
        fi
    done
else
    printf "\n»» An Intermission\n»  No remote repository set. Using local fallback identity:\n"
    printf "»  User: %s\n»  Mail: %s\n\n" "${local_fallback_id[@]}"

    # Get the user's attention for a second
    sleep 1

    git config --local user.name "${local_fallback_id[0]}"
    git config --local user.email "${local_fallback_id[1]}"
fi

exit 0

編集:

それで、私はそのフックをPythonのフックとコマンドとして書き直しました。さらに、スクリプトをGitコマンド(git passport)として呼び出すことも可能です。また、プロンプトで選択可能なconfigfile(~/.gitpassport)内に任意の数のIDを定義することも可能です。プロジェクトはgithub.comで見つけることができます。 git-passport - 複数のGitアカウント/ユーザーIDを管理するためにPythonで書かれたGitコマンドとフック

37
Saucier

1つのコマンドgithubアカウントを切り替える

この解決法は単一のgitエイリアスの形をとります。実行されると、現在のプロジェクトユーザーは別のアカウントにアタッチされます

sshキーを生成します

ssh-keygen -t rsa -C "[email protected]" -f '/Users/arnaudrinquin/.ssh/id_rsa'

[...]

ssh-keygen -t rsa -C "[email protected]" -f '/Users/arnaudrinquin/.ssh/id_rsa_pro'

あなたのGitHub/Bitbucketアカウントにリンクする

  1. デフォルトの公開鍵をコピーするpbcopy < ~/.ssh/id_rsa.pub
  2. gitHubアカウントにログイン
  3. キーをadd SSH key githubページに貼り付けます
  4. 他の公開鍵をコピーするpbcopy < ~/.ssh/id_rsa_pro.pub
  5. 他のすべてのアカウントに対して、手順2〜4を繰り返して調整します。

Step 1. SSHキーの自動切り替え。

sshに応じて特定の暗号化キーを使用するようにHostを設定することができます。いいことは、同じhostnameに対して複数のエイリアスを持つことができるということです。

この例の~/.ssh/configファイルを参照してください。

# Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

# Professional github alias
Host github_pro
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_pro

リモート設定のgit

[email protected]git@github_proに変更することで、gitリモートでこれらのエイリアスを使用できるようになりました。

既存のプロジェクトのリモート処理を変更するか(git remote set-url Origin git@github_pro:foo/bar.gitのようなものを使用)、それらを複製するときに直接適用することができます。

git clone [email protected]:ArnaudRinquin/atom-zentabs.git

エイリアスを使用すると、次のようになります。

git clone git@github_pro:ArnaudRinquin/atom-zentabs.git

ステップ2. git user.emailを変更する

Gitの設定はグローバルまたはプロジェクトごとに設定できます。今回の場合、プロジェクトごとの設定が必要です。それを変更するのはとても簡単です:

git config user.email '[email protected]'

これは簡単ですが、私たちがいる開発者にとっては長い時間がかかります。非常に単純なgitエイリアスを書くことができます。

それを~/.gitconfigファイルに追加します。

[user]
    name = Arnaud Rinquin
    email = [email protected]

...

[alias]
    setpromail = "config user.email '[email protected]'"

それから、私たちがしなければならないのは、私たちのEメールをこのプロジェクト専用に変更するためのgit setpromailです。

ステップ3.コマンドスイッチを1つしてください。

デフォルトのアカウントから、指定したアカウントに、パラメータなしの単一のコマンドで切り替えるのはいいことではないでしょうか。これは間違いなく可能です。このコマンドには2つのステップがあります。

  • 現在のプロジェクトのリモートから選択したエイリアスへの変更
  • 現在のプロジェクトのuser.email設定を変更する

2番目のステップには、すでに1つのコマンドによる解決策がありますが、最初の1つの方法はより困難です。 1コマンドリモートホスト変更

これがあなたの~/.gitconfigに追加するための別のgit aliasコマンドの形の解決策です。

[alias]
  changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"

これにより、あるホストから別のホスト(別名)にすべてのリモートを変更できます。例を見てください。

$ > git remote -v
Origin  [email protected]:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
Origin  [email protected]:ArnaudRinquin/arnaudrinquin.github.io.git (Push)

$ > git changeremotehost github.com github_pro

$ > git remote -v
Origin  git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
Origin  git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (Push)

それらすべてを結合する

2つのコマンドを1つにまとめればいいのですが、これは非常に簡単です。私がどのようにbitbucketホスト切り替えを統合するのかを見てください。

[alias]
  changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
  setpromail = "config user.email '[email protected]'"
  gopro = !sh -c \"git changeremotehost github.com github_pro && git changeremotehost bitbucket.com bitbucket_pro && git setpromail\"

ソースリンク - チュートリアル

35
Kaleem Ullah

デフォルトのEメールアドレス( GithubユーザーへのEメールアドレス )を持ちたくない場合は、尋ねるように設定できます。それをどのように行うことができるかはあなたが使用するgitのバージョンに依存します。下記を見てください。

(意図した)欠点は、リポジトリごとに一度あなたの電子メールアドレス(そしてあなたの名前)を設定しなければならないということです。だから、あなたはそれをするのを忘れることはできません。

バージョン<2.7.0

[user]
    name = Your name
    email = "(none)"

Orr Sellaのブログ投稿 のDan Aloniによるコメントに記載されているように、グローバル設定~/.gitconfigで。リポジトリで最初のコミットを行おうとすると、gitはNiceメッセージで失敗します。

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  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: unable to auto-detect email address (got '(none)')

電子メールアドレスがローカルに設定されている場合、名前はグローバル設定から取得されます(メッセージは完全に正確ではありません)。

2.7.0≦バージョン<2.8.0

バージョン2.7.0より前の動作は意図されておらず、2.7.0で修正されました。 Orr Sellaのブログ投稿 で説明されているように、まだpre-commitフックを使うことができます。このソリューションは他のバージョンでも機能しますが、他のソリューションはこのバージョンでは機能しません。

バージョン≥2.8.0

Dan Aloniは - その振る舞いを実現するためのオプションを追加しました( リリースノートを参照 )。と一緒に使用します。

[user]
    useConfigOnly = true

それを機能させるために、グローバル設定で名前やEメールアドレスを与えてはいけません。その後、最初のコミットでエラーメッセージが表示されます。

fatal: user.useConfigOnly set but no name given

そのため、メッセージはそれほど有益ではありませんが、オプションを明示的に設定しているので、何をすべきかを知っておくべきです。バージョン2.7.0未満のソリューションとは対照的に、名前と電子メールの両方を手動で設定する必要があります。

23
John

gitを複数の名前/電子メールで機能させるもう1つのオプションは、gitをエイリアスし、-cフラグを使用してグローバルおよびリポジトリ固有の設定を上書きすることです。

たとえば、エイリアスを定義すると、

alias git='/usr/bin/git -c user.name="Your name" -c user.email="[email protected]"'

それが機能するかどうかを確認するには、単にgit config user.emailと入力します。

$ git config user.email
[email protected]

別名の代わりに、あなたは$PATHの中にカスタムのgit実行可能ファイルを入れることもできます。

#!/bin/sh
/usr/bin/git -c user.name="Your name" -c user.email="[email protected]" "$@"

これらのメソッドがリポジトリ固有の.git/configより優れている点は、カスタムのgitプログラムがアクティブなときに、すべてのgitリポジトリに適用されることです。このようにして、(共有)設定を変更せずにユーザー/名前を簡単に切り替えることができます。

16
Rob W

条件付きインクルード Git 2.13では、少ない作業で1台のマシンに複数のユーザー/ Eメールを共存させることが可能になりました。

user.gitconfigは私の個人名とメールアドレスを持っています。 work-user.gitconfigは私の仕事名とメールアドレスを持っています。両方のファイルは~パスにあります。

そのため、私の個人名/メールアドレスがデフォルトで適用されます。 c:/work/ dirには、私の仕事名/ emailが適用されます。 c:/work/github/ dirには、私の個人名/メールアドレスが適用されます。これは最後の設定が適用されるときに機能します。

# ~/.gitconfig
[include]
    path = user.gitconfig
[includeIf "gitdir/i:c:/work/"]
    path = work-user.gitconfig
[includeIf "gitdir/i:c:/work/github/"]
    path = user.gitconfig

gitdirは大文字と小文字を区別し、gitdir/iは大文字と小文字を区別しません。

"gitdir/i:github/"は、パスにgithubを持つディレクトリに条件付きインクルードを適用します。

11
hIpPy

間違いを避けるためにうまくいくように思われる簡単な解決策があります。

[user]から~/.gitconfigセクションを削除するだけで、各リポジトリにuser.nameを設定せずにコミットすることができなくなります。

あなたの~/.bashrcに、ユーザーと電子メールのためにいくつかの簡単なエイリアスを追加してください:

alias ggmail='git config user.name "My Name";git config user.email [email protected]'
alias gwork='git config user.name "My Name";git config user.email [email protected]'
8
Zantier

gitエイリアス(およびgit設定のセクション)で救助してください。

(コマンドラインから)エイリアスを追加します。

git config --global alias.identity '! git config user.name $(git config user.$1.name); git config user.email $(git config user.$1.email); :'

その後、例えば、

git config --global user.github.name "your github username"
git config --global user.github.email [email protected]

そして、新規またはクローンレポとして、このコマンドを実行することができます。

git identity github

この解決方法は自動的ではありませんが、あなたのグローバル〜/ .gitconfigでユーザーとEメールの設定を解除すると、gitはそれぞれの新規または複製されたリポジトリでそれらを手動で設定するように促します。

git config --global --unset user.name
git config --global --unset user.email
7
codesnik

この答えは@Saucierによる投稿に部分的に触発されていますが、私はリモートに基づいてレポジトリごとにuser.nameuser.emailを設定する自動化された方法を探していました。彼は発達した。 useConfigOnly設定の場合は、@ Johnにもh/tを入力します。これが私の解決策です:

.gitconfigが変更されました:

[github]
    name = <github username>
    email = <github email>
[gitlab]
    name = <gitlab username>
    email = <gitlab email>
[init]
    templatedir = ~/.git-templates
[user]
    useConfigOnly = true

チェックアウト後 フック 次のパスに保存する必要があります。~/.git-templates/hooks/post-checkout

#!/usr/bin/env bash

# make regex matching below case insensitive
shopt -s nocasematch

# values in the services array should have a corresponding section in
# .gitconfig where the 'name' and 'email' for that service are specified
remote_url="$( git config --get --local remote.Origin.url )"
services=(
    'github'
    'gitlab'
)

set_local_user_config() {
    local service="${1}"
    local config="${2}"
    local service_config="$( git config --get ${service}.${config} )"
    local local_config="$( git config --get --local user.${config} )"

    if [[ "${local_config}" != "${service_config}" ]]; then
        git config --local "user.${config}" "${service_config}"
        echo "repo 'user.${config}' has been set to '${service_config}'"
    fi
}

# if remote_url doesn't contain the any of the values in the services
# array the user name and email will remain unset and the
# user.useConfigOnly = true setting in .gitconfig will Prompt for those
# credentials and prevent commits until they are defined
for s in "${services[@]}"; do
    if [[ "${remote_url}" =~ "${s}" ]]; then
        set_local_user_config "${s}" 'name'
        set_local_user_config "${s}" 'email'
        break
    fi
done

私はgithubとgitlabに異なる認証情報を使用していますが、上記のコード内のそれらの参照は、あなたが使用しているサービスによって置き換えられたり拡張されたりする可能性があります。チェックアウト後にチェックアウト後フックがレポのために自動的にユーザ名とEメールをローカルに設定するようにするには、サービス名がリモートURLに表示されていることを確認し、post-checkoutスクリプトのservices配列に追加してそのセクションを作成しますあなたの.gitconfigにはあなたのユーザー名とそのサービスのための電子メールが含まれています。

リモートURLにサービス名が表示されない場合、またはリポジトリにリモートがない場合、ユーザー名と電子メールはローカルに設定されません。このような場合、user.useConfigOnly設定が有効になり、ユーザー名と電子メールがリポジトリレベルで設定されるまでコミットできなくなり、その情報を構成するようにユーザーに促します。

6
Grant Humphries

GIT_AUTHOR_EMAIL + local .bashrc

.bashrc_local:このファイルを追跡するのではなく、あなたの仕事用のコンピュータにだけ置いてください。

export GIT_AUTHOR_EMAIL='[email protected]'
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"

.bashrc:このファイルを追跡し、職場のコンピュータでも自宅のコンピュータでも同じにします。

F="$HOME/.bashrc_local"
if [ -r "$F" ]; then
    . "$F"
fi

私は https://github.com/technicalpickles/homesick を使用して私のドットファイルを同期させます。

Gitconfigだけが環境変数を受け付けるなら: git configのシェル変数展開

Windows環境

さらにこれをあなたのシステムにインストールしているのなら、Git Extensions --> Settings --> Global Settingsから修正することができます。

gitextensions - 最新リリース

これらの設定にアクセスするには、Windows環境のフォルダ/ディレクトリを右クリックします。 enter image description here

更新 バージョン2.49で複数の設定を切り替える/維持する方法How to switch/maintain multiple settings in Version 2.49

3
Abhijeet

これは私がここで多くの答えのステップをたどった後に私がちょうど見つけたものです

異なるgithubアカウントに複数のSSHキーを設定する方法

現在保存されているキーの確認を始めたいと思うかもしれません

$ ssh-add -l

以前にキャッシュされたキーをすべて削除することにした場合( オプション、これに注意してください

$ ssh-add -D

それから、あなたが使いたい/使う必要があるそれぞれのEメール/アカウントにリンクされたssh pub/privキーを作成することができます。

$ cd ~/.ssh
$ ssh-keygen -t rsa -C "[email protected]" <-- save it as "id_rsa_work"
$ ssh-keygen -t rsa -C "[email protected]" <-- save it as "id_rsa_pers"

このコマンドを実行すると、以下のファイルが作成されます。

~/.ssh/id_rsa_work      
~/.ssh/id_rsa_work.pub

~/.ssh/id_rsa_pers
~/.ssh/id_rsa_pers.pub 

認証エージェント が実行されていることを確認してください。

$ eval `ssh-agent -s`

以下のように生成されたキーを追加します(〜/ .sshフォルダーから)

$ ssh-add id_rsa_work
$ ssh-add id_rsa_pers

保存した鍵をもう一度確認できます

$ ssh-add -l

今すぐあなたのgithub/bickbuketサーバーに生成された公開鍵を追加する必要があります

それぞれのレポジトリを異なるフォルダにクローンする

ユーザー work が使用されるフォルダに移動してこれを実行します。

$ git config user.name "Working Hard"
$ git config user.email "[email protected]" 

これが何をするのかを見るために、 "。git/config"の内容をチェックしてください。

User pers が使用されるフォルダに移動してこれを実行してください。

$ git config user.name "Personal Account"
$ git config user.email "[email protected]" 

これが何をするのかを見るために、 "。git/config"の内容をチェックしてください。

これらすべての後にあなたはスイッチフォルダーによってあなたの個人的なそして仕事のコードをコミットすることができるでしょう

たぶんそれは単純なハックです、しかしそれは役に立ちます。以下のように2つのSSHキーを生成してください。

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/GowthamSai/.ssh/id_rsa): work
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in damsn.
Your public key has been saved in damsn.pub.
The key fingerprint is:
SHA256:CrsKDJWVVek5GTCqmq8/8RnwvAo1G6UOmQFbzddcoAY [email protected]
The key's randomart image is:
+---[RSA 4096]----+
|. .oEo+=o+.      |
|.o o+o.o=        |
|o o o.o. +       |
| =.+ .  =        |
|= *+.   S.       |
|o*.++o .         |
|=.oo.+.          |
| +. +.           |
|.o=+.            |
+----[SHA256]-----+

同じように、個人用にもう1つ作成します。だから、あなたは2つのSSHキー、仕事と会社を持っています。 work.pub、work、personal.pub、personalを 〜/ .ssh/ ディレクトリにコピーします。

次の行を使ってシェルスクリプトを作成し、crev.sh(Company Reverse)という名前を次の内容で付けます。

cp ~/.ssh/work ~/.ssh/id_rsa
cp ~/.ssh/work.pub ~/.ssh/id_rsa.pub

同様に、以下の内容でprev.sh(Personal Reverse)という名前のものをもう1つ作成します。

cp ~/.ssh/personal ~/.ssh/id_rsa
cp ~/.ssh/personal.pub ~/.ssh/id_rsa.pub

〜/ .bashrcに以下のようなスクリプトのエイリアスを追加します。

alias crev="sh ~/.ssh/crev.sh"
alias prev="sh ~/.ssh/prev.sh"
source ~/.bashrc

会社を使いたいときはいつでもcrevを実行し、個人的に使いたい場合はprev :-pを実行してください。

あなたのGitHubアカウントにそれらのsshキーを追加してください。これらのスクリプトはid_rsaを上書きするため、id_rsaを以前に生成していないことを確認してください。 id_rsaをすでに生成している場合は、それをいずれかのアカウントに使用します。それらを個人用としてコピーし、個人用鍵の生成をスキップします。

2
7H3 IN5ID3R

これをあなたの〜/ .bash_profileに追加するだけでgithub.comのデフォルトキーを切り替えることができます。

# Git SSH keys swap
alias work_git="ssh-add -D  && ssh-add -K ~/.ssh/id_rsa_work"
alias personal_git="ssh-add -D && ssh-add -K ~/.ssh/id_rsa"
1
Jason DeBolt

私はそれを処理するbash関数を作りました。 これがGithubレポジトリです

記録用:

# Look for closest .gitconfig file in parent directories
# This file will be used as main .gitconfig file.
function __recursive_gitconfig_git {
    gitconfig_file=$(__recursive_gitconfig_closest)
    if [ "$gitconfig_file" != '' ]; then
        home="$(dirname $gitconfig_file)/"
        HOME=$home /usr/bin/git "$@"
    else
        /usr/bin/git "$@"
    fi
}

# Look for closest .gitconfig file in parents directories
function __recursive_gitconfig_closest {
    slashes=${PWD//[^\/]/}
    directory="$PWD"
    for (( n=${#slashes}; n>0; --n ))
    do
        test -e "$directory/.gitconfig" && echo "$directory/.gitconfig" && return 
        directory="$directory/.."
    done
}


alias git='__recursive_gitconfig_git'
1
Arount

Rob W's answer のようなものですが、異なった異なるsshキーを許可し、古いgitバージョン(例えばcore.sshCommand configを持っていない)で動作します。

ファイル~/bin/git_poweruserを実行可能な権限で、PATHに作成しました。

#!/bin/bash

TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT

cat > $TMPDIR/ssh << 'EOF'
#!/bin/bash
ssh -i $HOME/.ssh/poweruserprivatekey $@
EOF

chmod +x $TMPDIR/ssh
export GIT_SSH=$TMPDIR/ssh

git -c user.name="Power User name" -c user.email="[email protected]" $@

"パワーユーザー"として何かをコミットまたはプッシュしたいときはいつでも、私はgitの代わりにgit_poweruserを使います。それはどんなディレクトリでも動作するはずで、少なくとも私のものではなく.gitconfig.ssh/configの変更を必要としません。

0
Jellby

ほとんどの質問がOPに答えましたが、私はこれを自分で試してみる必要がありました。簡単な手順は次のとおりです。

  • 他のリポジトリから既存の.gitconfgをコピーします
  • 新しく追加したリポジトリに貼り付けます
  • .gitconfigファイルの値(名前、電子メールアドレス、ユーザー名など)を変更する[user] name = John email = [email protected] username = john133
  • 作業リポジトリに.gitignoreファイルをコミットしないようにするために、.gitconfigリストにfilenameを追加します。
0
Tatarin

別のユーザーとしてコミットしたいリポジトリでコミットを行う時点でgit commit --author "Your Name <[email protected]>"を使用することもできます。

0
szx