Могу ли я указать несколько пользователей для себя в .gitconfig?

В моем ~/.gitconfig я перечислю свой личный адрес электронной почты в разделе [user], так как это то, что я хочу использовать для репозиториев Github.

Но я недавно начал использовать git для работы. Моя компания git repo позволяет мне совершать, но когда она отправляет объявления новых наборов изменений, она говорит, что они из анонимного, потому что он не распознает адрес электронной почты в моем .gitconfig - по крайней мере, что моя теория.

Можно ли указать несколько опций [user] в .gitconfig? Или есть другой способ переопределить значение по умолчанию .gitconfig для определенного каталога? В моем случае я проверяю весь рабочий код в ~/worksrc/ - существует ли способ указать .gitconfig только для этого каталога (и его подкаталогов)?

Ответ 1

Вы можете настроить отдельное репо для использования определенного адреса пользователя/адреса электронной почты, который переопределяет глобальную конфигурацию. Из корня репо выполните

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

тогда как пользователь/адрес по умолчанию настроен в ~/.gitconfig

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

Ответ 2

Так как git 2.13, это можно решить, используя недавно введенный Conditional включает.

Пример:

Глобальная конфигурация ~/.gitconfig

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

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

Конкретная конфигурация конфигурации ~/work/.gitconfig

[user]
    email = [email protected]

Ответ 3

Или вы можете добавить следующую информацию в локальный .git/config файл

[user]  
    name = Your Name
    email = [email protected]

Ответ 4

После получения какого-то вдохновения из сообщение в блоге Orr Sella Я написал крюк pre-commit (находится в ~/.git/templates/hooks), который установил бы определенные имена пользователей и адреса электронной почты на основе информации внутри локального репозитория ./.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 "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=("[email protected]")

    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 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

EDIT:

Итак, я переписал крюк как крючок и команду в Python. Кроме того, можно вызвать script как команду Git (git passport). Также возможно определить произвольное количество идентификаторов внутри файла конфигурации (~/.gitpassport), которые можно выбрать в подсказке. Вы можете найти проект на github.com: git -passport - команда Git и крючок, написанный на Python для управления несколькими учетными записями Git тождества.

Ответ 5

Переключатель учетных записей 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 для каждого другого аккаунта

Шаг 1. Автоматическое переключение по ssh-ключу.

Мы можем настроить ssh для отправки конкретного ключа шифрования в зависимости от host. Приятно, что у вас может быть несколько псевдонимов для одного hostname.

Посмотрите этот пример ~/.ssh/config файл ~/.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 Remote Configuration

Теперь вы можете использовать эти псевдонимы в git [email protected] изменив [email protected] на [email protected]_pro.

Вы можете либо изменить существующие git remote set-url origin [email protected]_pro:foo/bar.git проекты (используя что-то вроде git remote set-url origin [email protected]_pro:foo/bar.git), либо адаптировать их напрямую при клонировании.

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

используя псевдоним, он становится:

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

Шаг 2. Изменение git user.email

Настройки Git config могут быть глобальными или для каждого проекта. В нашем случае нам нужны индивидуальные настройки проекта. Это очень легко изменить:

git config user.email '[email protected]'

Несмотря на то, что это легко, для разработчиков нам не хватает времени. Для этого мы можем написать очень простой псевдоним git.

Мы собираемся добавить его в файл ~/.gitconfig.

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

...

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

Затем все, что нам нужно сделать, это git setpromail чтобы git setpromail нашу электронную почту только для этого проекта.

Шаг 3. Один командный переключатель, пожалуйста?!

Разве не было бы неплохо переключиться с учетной записи по умолчанию на указанную с помощью одной команды без параметров? Это определенно возможно. Эта команда будет состоять из двух шагов:

  • изменить пульты текущего проекта на выбранные псевдонимы
  • изменить текущий проект user.email config

У нас уже есть одно командное решение для второго шага, но первый намного сложнее. Одна команда удаленного изменения хоста

Вот решение в виде другой команды git alias для добавления в ~/.gitconfig:

[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  [email protected]_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin  [email protected]_pro:ArnaudRinquin/arnaudrinquin.github.io.git (push)

Объедините их всех

Теперь нам просто нужно объединить две команды в одну, это довольно просто. Посмотрите, как я также интегрирую переключение хостов 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\"

Ссылка на источник -Tutorial

Ответ 6

Если вы не хотите иметь адрес электронной почты по умолчанию (ссылки на адрес электронной почты для пользователя github), вы можете настроить его, чтобы вас спросили. Как вы можете это сделать, это зависит от используемой версии git, см. Ниже.

Недостатком (предполагаемым) является то, что вам нужно настроить свой адрес электронной почты (и свое имя) один раз для каждого репозитория. Таким образом, вы не можете забыть это сделать.

Версия < 2.7.0

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

в вашей глобальной конфигурации ~/.gitconfig, как указано в комментарии Дэн Алони в сообщении Orr Sella. При попытке выполнить первую фиксацию в репозитории, git завершается с хорошим сообщением:

*** 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 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. Это решение работает и для других версий, но другие решения не для этой версии.

Версия ≥ 2.8.0

Дэн Алони добавил вариант для достижения такого поведения (см. примечания к выпуску). Используйте его с помощью:

[user]
    useConfigOnly = true

Чтобы сделать это, вы не можете указывать имя или адрес электронной почты в глобальной конфигурации. Затем при первом фиксации вы получаете сообщение об ошибке

fatal: user.useConfigOnly set but no name given

Таким образом, сообщение не очень поучительно, но, поскольку вы задали параметр явно, вы должны знать, что делать. В отличие от решения версий < 2.7.0, вам всегда нужно вручную указывать имя и адрес электронной почты.

Ответ 7

Другой способ получить git для работы с несколькими именами/сообщениями электронной почты - с помощью aliasing 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]

Вместо псевдонима вы также можете поместить пользовательский git исполняемый файл в свой $PATH.

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

Преимущество этого метода над конкретным репозиторием .git/config заключается в том, что он применяется к каждому репозиторию git, когда пользовательская программа git активна. Таким образом, вы можете легко переключаться между пользователями/именами без изменения какой-либо (общей) конфигурации.

Ответ 8

С помощью условных включений в Git 2.13 теперь возможно совместное использование нескольких пользователей и сообщений электронной почты на одном компьютере без особых усилий.

user.gitconfig имеет мое личное имя и адрес электронной почты. work-user.gitconfig имеет мое рабочее имя и адрес электронной почты. Оба файла находятся на ~ пути.

Поэтому мое личное имя/адрес электронной почты применяются по умолчанию. Для c: /work/ dir применяется имя моей работы/адрес электронной почты. Для 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 в своем пути.

Ответ 9

Существует простое решение, которое, похоже, хорошо работает, чтобы избежать ошибок.

Просто удалите раздел [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]'

Ответ 10

Git псевдонимы (и разделы в Git Configs) на помощь!

добавить псевдоним (из командной строки):

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 и установка для user.useConfigOnly true заставит git напоминать вам об их установке вручную в каждом новом или клонированном репо.

git config --global --unset user.name
git config --global --unset user.email
git config --global user.useConfigOnly true

Ответ 11

Этот ответ частично вдохновлен публикацией @Saucier, но я искал автоматический способ установки user.name и user.email для каждого репо, на основе удаленного, который был немного более легким, чем git паспортный пакет, который он разработал. Также h/t в @John для установки useConfigOnly. Вот мое решение:

Изменения .gitconfig:

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

ловушка post-checkout, которую следует сохранить по следующему пути: ~/.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, но эти ссылки в приведенном выше коде могут быть заменены или дополнены любым сервисом, который вы используете. Для того чтобы хук post-checkout автоматически устанавливал имя пользователя и адрес электронной почты для репо после извлечения, убедитесь, что имя сервиса отображается в удаленном URL-адресе, добавьте его в массив services в скрипте post-checkout и создайте раздел для этого в вашем .gitconfig который содержит ваше имя пользователя и адрес электронной почты для этой службы.

Если ни одно из имен сервисов не отображается в удаленном URL-адресе или в репозитории нет удаленного, имя пользователя и адрес электронной почты не будут установлены локально. В этих случаях будет user.useConfigOnly параметр user.useConfigOnly который не позволит вам совершать коммиты до тех пор, пока имя пользователя и адрес электронной почты не будут установлены на уровне репо, и предложит пользователю настроить эту информацию.

Ответ 12

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, чтобы синхронизировать мои dotfiles.

Если только gitconfig примет переменные среды: Расширение переменной оболочки в git config

Ответ 13

Окружающая среда Windows

Дополнительно это можно изменить в Git Extensions --> Settings --> Global Settings, если оно установлено в ваших системах.

gitextensions-последний релиз

Щелкните правой кнопкой мыши папку/каталог в среде Windows, чтобы получить доступ к этим настройкам. enter image description here

Обновление: Как переключать/поддерживать несколько настроек в версии 2.49 How to switch/maintain multiple settings in Version 2.49

Ответ 14

Вот то, что я только что нашел после выполнения шагов во многих ответах здесь

Как настроить параметры нескольких ключей SSH для другой учетной записи GitHub

Вы можете начать проверять сохраненные ключи

$ ssh-add -l

Если вы решили удалить все кэшированные ключи ранее (необязательно, позаботьтесь об этом)

$ ssh-add -D

Затем вы можете создать ключ 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 Acces Keys

Клонировать каждый репозиторий в разные папки

Перейдите в папку, где работа пользователя будет работать и выполнять это

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

Просто чтобы увидеть, что это делает, проверьте содержимое ".git/config"

Перейдите в папку, где будет работать пользователь pers, и выполните это

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

Просто чтобы увидеть, что это делает, проверьте содержимое ".git/config"

После всего этого вы сможете зафиксировать свой личный и рабочий код, просто переключаясь между этими двумя папками.

Ответ 15

Может быть, это простой взлом, но это полезно. Просто сгенерируйте 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 randomart image is:
+---[RSA 4096]----+
|. .oEo+=o+.      |
|.o o+o.o=        |
|o o o.o. +       |
| =.+ .  =        |
|= *+.   S.       |
|o*.++o .         |
|=.oo.+.          |
| +. +.           |
|.o=+.            |
+----[SHA256]-----+

Таким же образом создайте еще один для личного. Итак, у вас есть 2 ключа SSH, работа и компания. Скопируйте work.pub, work, personal.pub, personal в ~/.ssh/ Directory.

Затем создайте сценарий оболочки со следующими строками и назовите его как crev.sh(Company Reverse) со следующим содержимым.

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

Таким же образом создайте еще один файл с именем prev.sh(Personal Reverse) со следующим содержимым.

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, и если вы хотите использовать личный, сделайте пред: -p.

Добавьте эти ключи ssh в свои учетные записи GitHub. Убедитесь, что у вас нет сгенерированного ранее id_rsa, потому что эти скрипты будут перезаписывать id_rsa. Если вы уже создали id_rsa, используйте это для одной из учетных записей. Скопируйте их как личные и пропустите генерацию личных ключей.

Ответ 16

Я сделал функцию 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 "[email protected]"
    else
        /usr/bin/git "[email protected]"
    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'

Ответ 17

Просто добавьте это в ваш ~/.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"

Ответ 18

Что-то вроде Rob W answer, но позволяет различный другой ключ ssh и работает со старыми версиями git (у которых нет, например, core.sshCommand конфигурации).

Я создал файл ~/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 [email protected]
EOF

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

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

Всякий раз, когда я хочу совершить или нажимать что-то как "Power User", я использую git_poweruser вместо git. Он должен работать в любом каталоге и не требует изменений в .gitconfig или .ssh/config, по крайней мере, не в моем.

Ответ 19

Хотя большинство вопросов вроде отвечало ОП, мне просто пришлось пройти через это самому, и, даже не прибегая к помощи гугл, я смог найти самое быстрое и простое решение. Вот простые шаги:

  • скопируйте существующий .gitconfg из вашего другого .gitconfg
  • вставить в недавно добавленный репо
  • измените значения в файле .gitconfig, такие как имя, адрес электронной почты и имя пользователя [user] name = John email = [email protected] username = john133 имя [user] name = John email = [email protected] username = john133
  • добавьте имя файла в список .gitignore, чтобы убедиться, что вы не зафиксировали файл .gitconfig в своем рабочем репо

Ответ 20

Вы также можете использовать git commit --author "Your Name <[email protected]>" в момент выполнения коммита в репо, в котором вы хотите git commit --author "Your Name <[email protected]>" другого пользователя.

Ответ 21

Чтобы иметь возможность обновлять и фиксировать проекты git из разных организаций, добавьте другое письмо в файл ~/.gitconfig. Если у вас нет такого файла, создайте его. Файл должен выглядеть следующим образом:

[user]
    name = Bob Will
    email = [email protected]
    email = [email protected]