О, git сложный!
Git — сложная система. Чтобы увидеть доказательство, проверьте:
Профессионал. 😉
Чтобы смягчить это Мы собираемся войти в голову Линус Торвальдс
! (Немного, может быть, в один нейрон), и в этой части мы сосредоточимся на конфигурациях. Я всегда думал, что для понимания системы мне нужно понять, что это конфигурации (или, даже лучше, ее установка).
Когда я доберусь до новой компании, первое, что я пытаюсь выяснить, это:
- Как мне это установить?
- Как мне это настроить?
Как думает Линус Торвальдс?
Все файл
Да, так думает Линус: все это файл
Поскольку Linus любит это, все является файлом, вы можете просто рассматривать конфигурации GIT как файл.
Поэтому, если нам удастся получить, какие файлы используют Linus в GIT, мы сможем проникнуть в OH-MY-Complex-GIT!
3 резервных слоя конфигурации
1. Система — ваша OS GIT Config — git config -system
2 Global — ваш пользователь GIT Config — git config -global
3 Локальный — ваш репозиторий GIT Config — git config - -local
git config --system # => /etc/gitconfig git config --global # => ~/.gitconfig or ~/.config/git/config git config --local # => .git/config
GIT First Read Git Config от .git/config -> [Запасение к] ~/.gitfconfig -> [запасной к]/и т. Д./gitconfig
Электронная почта пер репо
Так что, если у вас есть разные адреса электронной почты для разных репозиторий, это входит в .gitConfig config -local
Получить глобальную конфигурацию: git config -list -global
➜ tmp git config --list --global user.name=Tomer Ben David user.email=tomer.bendavid@ohohoh.com core.autocrlf=input format.pretty=format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset
Будет ли это так же, как Cat ~/.gitConfig
что ты думаешь?
➜ tmp cat ~/.gitconfig [user] name = Tomer Ben David email = tomer.bendavid@ohohoh.com [core] autocrlf = input [format] pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset
Да и нет! Разное нотация, но обычно одинаково!
Получить объединенную конфигурацию: git config -list
Объединенная конфигурация — это комбинация всех конфигураций с иерархией, давайте посмотрим на мою машину;)
git config --list ➜ tmp git config --list core.excludesfile=~/.gitignore core.legacyheaders=false core.quotepath=false mergetool.keepbackup=true push.default=simple color.ui=auto color.interactive=auto repack.usedeltabaseoffset=true alias.s=status alias.a=!git add . && git status alias.au=!git add -u . && git status alias.aa=!git add . && git add -u . && git status alias.c=commit alias.cm=commit -m alias.ca=commit --amend alias.ac=!git add . && git commit alias.acm=!git add . && git commit -m alias.l=log --graph --all --pretty=format:'%C(yellow)%h%C(cyan)%d%Creset %s %C(white)- %an, %ar%Creset' alias.ll=log --stat --abbrev-commit alias.lg=log --color --graph --pretty=format:'%C(bold white)%h%Creset -%C(bold green)%d%Creset %s %C(bold green)(%cr)%Creset %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative alias.llg=log --color --graph --pretty=format:'%C(bold white)%H %d%Creset%n%s%n%+b%C(bold blue)%an <%ae>%Creset %C(bold green)%cr (%ci)' --abbrev-commit alias.d=diff alias.master=checkout master alias.spull=svn rebase alias.spush=svn dcommit alias.alias=!git config --list | grep 'alias\.' | sed 's/alias\.\([^=]*\)=\(.*\)/\1\ => \2/' | sort include.path=~/.gitcinclude include.path=.githubconfig include.path=.gitcredential diff.exif.textconv=exif credential.helper=osxkeychain user.name=Tomer Ben David user.email=tomer.bendavid@ohohohoh.com core.autocrlf=input format.pretty=format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset
Вот и все Все Конфигурация GIT на моей машине, у вас есть! Надеюсь, я не положил там пароля;) Если бы я сделал, пожалуйста, дайте мне знать, ребята, это важно!
GIT config -local/global/system user.name -получить одну конфигурацию
Спросите слой от слоя для конфигурации
➜ tmp git config --local user.name fatal: BUG: setup_git_env called without repository # We called from a non-repository folder. ➜ tmp git config --global user.name Tomer Ben David ➜ tmp git config --system user.name # => nothing in the global config file. ➜ tmp
Ага! Так что это исходит от глобальной (пользовательской) конфигурации!
Обратите внимание, что в файле это с [Пользователь]
и имя, а конфигурация GIT возвращает комбинированное имя имя пользователя
Если вам нужна иерархия больше 3, то в файле это будет выглядеть:
[branch "gke"] remote = origin merge = refs/heads/gke
Так что этот должен быть Branch.gke.remote
, давайте подтвердим это:
➜ .git git:(gke) git config branch.gke.remote # => yes it is branch.gke.remote! origin
Установите новую конфигурацию с помощью git config mysection.mykey myvalue
➜ .git git:(gke) git config mysection.mykey myvalue ➜ .git git:(gke) git config mysection.mykey myvalue
Итак, мы смогли установить это, давайте посмотрим на файл:
➜ .git git:(gke) cat config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://bitbucket.org/yshenbaum/k8s-course.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "gke"] remote = origin merge = refs/heads/gke [mysection] ##### =====> Here it is! see the section in [] mykey = myvalue
Резюме
Теперь вы точно знаете, где именно ваши файлы конфигурации GIT это очень полезно и намного более объяснимо, чем использовать команды GIT. Перечитывать этот пост не уверен, что могло упростить, но это имеет смысл, по крайней мере, какой -то смысл в конце дня для нас, программистов! Последнее примечание
Ресурсы
Ry’s GIT Tutorial (книга)
Оригинал: «https://dev.to/tomerbendavid/git-configurations-2ngi»