После этого сообщения SO и связанное руководство, я настроил следующую конфигурацию условия...
$ cat ~/.gitconfig
[user]
name = Random J. Hacker
email = [email protected]
[includeIf "gitdir:~/work/*"]
path = ~/work/.gitconfig
$ cat ~/work/.gitconfig
[user]
name = Serious Q. Programmer
email = [email protected]
Таким образом, все репозитории, которые я клонирую, когда работаю в Programmer Co., получают мой рабочий адрес электронной почты @programmer.biz в качестве --author
учетных данных по умолчанию; и каждый случайный репозиторий, который я клонирую на свой рабочий стол или /tmp
или ~/.vscode
или куда-то еще, получает мои сверхзаконные учетные данные @hack.er, назначенные автором.
К сожалению, я заметил следующее поведение...
$ git clone [email protected]:programmerbiz/repo.git
$ cd repo/
$ git config --list | grep user
user.name=Random J. Hacker
[email protected]
user.name=Serious Q. Programmer
[email protected]
О, нет! Мой пользователь @hack.er попал в репозиторий!
Я хотел бы автоматически настроить один и только один [user]
по умолчанию для всех репозиториев, не прибегая к сценарию bash. Есть ли оператор includeIf.Not
, синтаксис блока [else]
или аналогичный, который я могу использовать в ~/.gitconfig
для достижения этой цели? документация по условному включению не поддерживает этот вариант использования.
[user]
с частью else, а затем раздела includeif с определенной частью, похоже, это работает, по крайней мере, в Windows. - person Lasse V. Karlsen   schedule 30.07.2019includeIf
, как описано здесь? stackoverflow.com/a/46239540/3216427 - person joanis   schedule 30.07.2019@fun.times
и следовать за ним с помощьюincludeIf
, который переопределяет имя и адрес электронной почты только тогда, когда это применимо? Иначе было бы неявно в предыдущих глобальных параметрах. Собственно, это именно то, что @Lasse предложил выше. - person joanis   schedule 30.07.2019git config --list
, но когда я сделалgit commit
, он использовал правильные учетные данные. Мне кажется, что более позднее вхождение переопределяет более раннее, даже еслиgit config --list
по-прежнему перечисляет их обоих. - person joanis   schedule 30.07.2019git log
также показывает последнего автора в очень беглом тестировании для меня. Учитывая существование коммитов с несколькими авторами 1 2, я бы не хотел, чтобы кешированные учетные данные просто болтались и надеялись< /i> чтобы его не подхватил какой-то процесс, который не должен его видеть. - person Peter Vandivier   schedule 30.07.2019git log --format=raw
убедить себя, что это безопасно: согласноgit log --help
, необработанный формат показывает всю фиксацию точно так, как она хранится в объекте фиксации. С моей стороны, воспроизводя ваш сценарий, я вижу только рабочий идентификатор в своем тестовом коммите в папкеwork
. - person joanis   schedule 31.07.2019