Я использую свой личный ноутбук как для работы, так и для личных проектов, и я хотел бы использовать свой рабочий адрес электронной почты для моих коммитов на работе (gitolite) и свой личный адрес электронной почты для остальных (github).
Я читал о следующих решениях, которые являются глобальными или временными:
git config --global user.email "bob@example.com"
git config user.email "bob@example.com"
git commit --author "Bob <bob@example.com>"
- установив один из
GIT_AUTHOR_EMAIL
,GIT_COMMITTER_EMAIL
илиEMAIL
переменные окружения
Одно из решений - запустить вручную функцию оболочки, которая устанавливает рабочую или личную среду в моей среде , но я почти уверен, что часто забываю переключаться на правильную идентификацию, что приводит к фиксации с неправильной идентификацией.
Есть ли способ привязать определенный репозиторий, название проекта и т. Д. К личности (имени, электронной почте)? Что делают люди?
git
github
gitolite
git-config
Мартин Джэмбон
источник
источник
Ответы:
git config user.email "bob@example.com"
Выполнение этого внутри репо установит конфигурацию в ЭТОМ репо, а не глобально.
Похоже, это в значительной степени то, что вам нужно, если только я вас не понял.
источник
Вам нужно использовать команду local set ниже:
местный набор
местные получают
Локальный конфигурационный файл находится в директории проекта:
.git/config
.глобальный набор
глобальный получить
Глобальный конфигурационный файл в вашей домашней директории:
~/.gitconfig
.Не забудьте указать пробелы и т. Д., Например: «Имя Фамилия».
источник
Отредактируйте файл конфигурации в папке ".git", чтобы сохранить другое имя пользователя и адрес электронной почты в зависимости от репозитория.
Эта команда ниже показывает вам, какое имя пользователя и адрес электронной почты установлены для этого репозитория.
Пример: для моего файла конфигурации в D: \ workspace \ eclipse \ ipchat \ .git \ config
Здесь ipchat - мое имя репо
источник
Если вы
git config user.email "foo@example.com"
его используете, он будет привязан к текущему проекту, в котором вы находитесь.Это то, что я делаю в своих проектах. Я устанавливаю соответствующий идентификатор при клонировании / инициализации репозитория. Это не безупречно (если вы забудете и нажмете, прежде чем понять, что вас обливают), но он настолько хорош, насколько вы можете получить, не имея возможности сказать
git config --global user.email 'ILLEGAL_VALUE'
Фактически, вы можете сделать недопустимое значение. Установите свой
git config --global user.name $(perl -e 'print "x"x968;')
Затем, если вы забудете установить неглобальные значения, вы получите сообщение об ошибке.
[РЕДАКТИРОВАТЬ] В другой системе мне пришлось увеличить число x до 968, чтобы заставить ее выйти из строя с "фатальным: невозможно длинный личный идентификатор". Та же версия git. Странный.
источник
Если вы не используете
--global
параметр, он установит переменные только для текущего проекта.источник
Начиная с Git 2.13, вы можете использовать
includeIf
в своем gitconfig файл с другой конфигурацией в зависимости от пути к репозиторию, в котором вы запускаете свои команды git.Поскольку с Ubuntu 18.04 поставляется достаточно новый Git, я с
~/.gitconfig
удовольствием его использую.https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
Чтобы использовать Git 2.13, вам нужно будет либо добавить PPA (Ubuntu старше 18.04 / Debian), либо загрузить двоичные файлы и установить (Windows / другой Linux).
источник
git config core.sshCommand
несколькими закрытыми ключами обеспечивает полное бесшовное управление идентификацией git.Это была моя проблема. Я написал сценарий ловушки, который предупреждает вас, если у вас есть удаленный github, а не определено локальное имя пользователя.
Вот как это настроить:
Создайте каталог для хранения глобальной ловушки
mkdir -p ~/.git-templates/hooks
Скажите git скопировать все в каталог
~/.git-templates
для каждого проекта.git
при запуске git init или clonegit config --global init.templatedir '~/.git-templates'
А теперь скопируйте следующие строки
~/.git-templates/hooks/pre-commit
и сделайте файл исполняемым (не забывайте об этом, иначе git его не выполнит!)Если вы используете другие хосты для своих частных репозиториев, вам необходимо заменить их в
github.com
соответствии с вашими потребностями.Теперь каждый раз, когда вы выполняете команду a,
git init
илиgit clone
git будет копировать этот скрипт в репозиторий и выполнять его до того, как будет произведена фиксация. Если вы не установили локальное имя пользователя, он выдаст предупреждение и не позволит вам выполнить фиксацию.источник
Мне очень нравится способ Мики Хеннинга в его статье (см. Настройка идентификаторов Git ) на эту тему. Тот факт, что он применяет и принудительно устанавливает личность для каждого созданного / клонированного репозитория, является хорошим способом не забывать настраивать это каждый раз.
Базовая конфигурация git
Отменить текущую конфигурацию пользователя в git:
Принудительно настроить идентификацию в каждом новом локальном репозитории:
Создайте псевдоним Git для
identity
команды, который мы будем использовать позже:Создание идентичности
Создайте личность с помощью GPG (используйте
gpg
или вgpg2
зависимости от того, что у вас есть в вашей системе). Повторите следующие шаги для каждой личности, которую вы хотите использовать.Скопируйте блок открытого ключа и добавьте его в настройки GitHub / GitProviderOfChoice в качестве ключа GPG.
Добавьте личность в конфигурацию Git. Также повторите это для каждого идентификатора, который вы хотите добавить:
Установить личность для репозитория
Если новое репо не связано с идентификатором, при фиксации появится сообщение об ошибке, напоминающее вам установить его.
Укажите идентификатор, который вы хотите использовать в новом репозитории:
Теперь вы готовы к фиксации с идентификатором gitlab .
источник