Как управлять несколькими пользовательскими конфигами в Git? - PullRequest
6 голосов
/ 08 января 2011

Я работаю с несколькими удаленными репозиториями Git, и каждому требуются разные учетные данные Git (Имя и Почта).

Есть ли какое-либо решение, например сценарий или рекомендации по их управлению?

Я знаю о "config --local", но не хочу каждый раз устанавливать эти переменные вручную.

Ответы [ 2 ]

10 голосов
/ 08 января 2011

Похоже, что просто сказать git config user.name (или user.email) в определенном хранилище без указания --global или --system поможет. По умолчанию конфигурация задается в текущем репозитории, и вы должны предоставить ей явные опции для записи в вашу пользовательскую или общесистемную конфигурацию.

Я не знаю, как это сделать, если вы только что клонировали репозитории, которые нуждаются в другой конфигурации. Возможно, вы могли бы написать небольшой скрипт, который обернет git clone, чтобы клонировать какой-либо репозиторий, а затем установить соответствующую конфигурацию на основе любой информации? Если вы уроните скрипт в /usr/lib/git-core с именем, похожим на git-nclone, вы можете запустить его как git nclone.

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

0 голосов
/ 02 января 2018

Я создал пару псевдонимов, которые выглядят так:

Идея заключается в том, что я могу сохранить свои учетные данные (адрес электронной почты, имя пользователя) в определении псевдонима.Затем, когда я хочу клонировать или инициализировать, мне не нужно каждый раз выполнять git config.

при инициализации:

initgithub = !git init && git config user.email [youremailfor@github.com] && git config user.name [yourgithubusername]

initbitbucket = !git init && git config user.email [youremailfor@bitbucket.com] && git config user.name [yourbitbucketusername]

при клонировании:

clonegithub = "!f() { git clone $1 $2; cd $2; git config user.email [youremailfor@github.com]; git config user.name [yourgithubusername];  }; f"

clonebitbucket = "!f() { git clone $1 $2; cd $2; git config user.email [youremailfor@bitbucket.com]; git config user.name [yourbitbucketusername];  }; f"

использование:

при инициализации:

git initgithub

git initbitbucket

при клонировании:

git clonegithub https://github.com/pathtoproject.git / c / temp / somefolder / project

git clonebitbucket https://github.com/pathtoproject.git / c / temp / somefolder / project

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...