Как иметь несколько экземпляров ~/.gitconfig под одной учетной записью пользователя?

#git #github #version-control #environment-variables #tortoisegit

#git #github #контроль версий #переменные среды #tortoisegit

Вопрос:

Мне нужно настроить git в моей системе, где и GitHub, и TortoiseGit имеют свои собственные отдельные ~/.gitconfig AKA глобальные .gitconfig файлы. Из-за того, как работает git, кажется, что это невозможно сделать?

По сути, мне нужно, чтобы GitHub просматривал один .gitconfig файл по умолчанию, который будет содержать ту же информацию, что и моя фактическая учетная запись GitHub, а затем TortoiseGit каким-то образом по умолчанию использует совершенно отдельный .gitconfig файл, полностью отдельный от .gitconfig файла GitHubs.

Если это может быть достигнуто каким-либо другим способом, например, с помощью альтернативы TortoiseGit, это тоже хорошо, если это стоит столько же, сколько TortoiseGit (бесплатно).

Комментарии:

1. Может быть, вы могли бы объяснить свою фактическую цель. Например, вы пытаетесь заниматься как личным, так и профессиональным развитием на одной машине?

2. В этом суть. Я думаю, мой вопрос можно было бы немного обобщить, пытаясь игнорировать конкретные приложения git и переформулировать в основном так: как у вас могут быть два глобальных .gitconfig экземпляра, которые вообще не пересекаются друг с другом? Использование, скажем, SVN или другого поставщика VCS для одного типа работы и git для работы, которая отправляется на GitHub, очевидно, является решением, но оно не идеально. Итак, хотите посмотреть, как это сделать с помощью git. Я не мог возражать против каких-либо других вопросов, касающихся нулевого взаимодействия между двумя экземплярами.

3. В чем разница между этими двумя конфигурационными файлами?

4. @FatherTimeWarner, я полагаю, вы знаете, что вы можете иметь значения для каждого репозитория, опустив --global флаг?

5. @Крис, да. Но когда вы открываете .git файл с помощью Git Gui и переходите «Правка»> «Параметры», глобальное (все репозитории) Имя пользователя и поля адреса электронной почты по-прежнему заполняются информацией о других работах. Или открыв .git файл в Git Bash и перейдя $ git config --global --list , вы также увидите информацию о других рабочих пространствах. Это то, что я пытаюсь решить, из-за чего информация о другом рабочем пространстве не отображается.

Ответ №1:

Последние версии git будут считывать файл $XDG_CONFIG_HOME/git/config перед чтением ~/.gitconfig — см. Справочную страницу git-config .

У вас может быть отдельный раздел конфигурации git, скажем ~/project-bla/git/config , и запускаться export XDG_CONFIG_HOME=~/project-bla/ в одном сеансе терминала. Тогда этот сеанс всегда будет использовать эту конфигурацию. Обратите внимание, что настройки в ~/.gitconfig будут перезаписывать эти настройки, поэтому этот файл должен содержать только настройки, которые применяются везде.

Однако это будет работать только для командной строки git; Я не думаю, что есть такая опция для TortoiseGit .


Однако самое простое решение — просто настроить все в файле конфигурации для конкретного репозитория (в разделе mygitrepository1/.git/config ). Эти настройки не будут мешать друг другу.

Единственным недостатком является то, что вы не можете обмениваться настройками между некоторыми, но не всеми репозиториями — настройки ~/.gitconfig указаны для всех репозиториев, а конфигурация репозитория предназначена только для этого репозитория. Если вам нужна одна конфигурация для репозиториев a, b, c, а другая для репозиториев c, d, e, тогда вам нужно взломать что-то вроде решения, которое я изложил выше.