git log를 위한 .git/config 와 git config
최근 곧 있을 협업을 위해서 git을 다시 들여다보고 있는데 소위 'A DOG' 라고 표현하는 명령어를 치려다보니 너무 길기도해서 이를 config로 구성할 수는 없을까 알아보았다.
git log --all --decorate --oneline --graph (A DOG)
.git/config 가 /etc/gitconfig 보다 우선하기 때문에 작업 디렉토리에서 바로 config를 구성하는 것이 협업할 때 더 편할 것 같다. 예를 들어 "로컬 gitconfig에서 별도로 명령어를 만들어 놓았어요"라고 말할 수 있게 된다는 것 ㅎ
git 문서에 따르면 다음과 같이 작동한다.
'git config’라는 도구로 설정 내용을 확인하고 변경할 수 있다. Git은 이 설정에 따라 동작한다. 이때 사용하는 설정 파일은 세 가지나 된다.
-
/etc/gitconfig 파일: 시스템의 모든 사용자와 모든 저장소에 적용되는 설정이다. git config --system 옵션으로 이 파일을 읽고 쓸 수 있다. (이 파일은 시스템 전체 설정파일이기 때문에 수정하려면 시스템의 관리자 권한이 필요하다.)
-
~/.gitconfig, ~/.config/git/config 파일: 특정 사용자(즉 현재 사용자)에게만 적용되는 설정이다. git config --global 옵션으로 이 파일을 읽고 쓸 수 있다. 특정 사용자의 모든 저장소 설정에 적용된다.
-
.git/config : 이 파일은 Git 디렉토리에 있고 특정 저장소(혹은 현재 작업 중인 프로젝트)에만 적용된다. --local 옵션을 사용하면 이 파일을 사용하도록 지정할 수 있다. 하지만 기본적으로 이 옵션이 적용되어 있다. (당연히, 이 옵션을 적용하려면 Git 저장소인 디렉토리로 이동 한 후 적용할 수 있다.)
우선 수작업으로 gitconfig를 만들어보자. 현재 작업하고 있는 환경의 .git/config를 열고 다음을 추가해보자.
[alias]
lg = log --all --decorate --oneline --graph --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)'
이제 해당 프로젝트에서는 `git lg` 명령어가 사용 가능해진다. 가급적 구분이 쉽게 색깔을 이것저것 넣었다.
코더 개인 취향과 합리적인 수준에서 만들어내면 된다. 여기를 참고해보자
이러한 작업을 명령어로 처리해보자
github에 코드를 올리기 위한 user 등록이 다음과 같이 이루어졌던 것에서 짐작하자면, alias를 등록하는 방법도 마찬가지일 것이다.
// command
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
// output
[user]
name = "John Doe"
email = "johndoe@example.com"
// local하게 사용하고 싶은 경우
git config --local alias.lg "log --all --decorate --oneline --graph --format=format:'%C(yellow)%h%C(reset)%C(auto)%d%C(reset) %C(normal)%s%C(reset) %C(dim white)%an%C(reset) %C(dim blue)(%ar)'"
만약 개인 컴퓨터에서 계속 사용할 것이라면 --local을 --global로 변경만 해주면 될것이다.
작업한 config를 명령창에서 확인하고 싶다면
local > global > system으로 우선 순위가 배정되어 있다.
git config --local --list
git config --global --list
git config --system --list
Happy Hacking!
읽어보면 좋은 글)