Рубрики
Uncategorized

О, конфигурации GIT! Давайте упростим

Познакомьтесь с конфигурациями GIT. Tagged with Git, DevOps, Linux, версия Control.

О, git сложный!

Git — сложная система. Чтобы увидеть доказательство, проверьте:

  1. ohshitgit.com
  2. gitfightrules.com
  3. git-man-page-generator.net

Профессионал. 😉

Чтобы смягчить это Мы собираемся войти в голову Линус Торвальдс ! (Немного, может быть, в один нейрон), и в этой части мы сосредоточимся на конфигурациях. Я всегда думал, что для понимания системы мне нужно понять, что это конфигурации (или, даже лучше, ее установка).

Когда я доберусь до новой компании, первое, что я пытаюсь выяснить, это:

  1. Как мне это установить?
  2. Как мне это настроить?

Как думает Линус Торвальдс?

Все файл

Да, так думает Линус: все это файл

Поскольку 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»