
내 작은 .gitconfig
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
인생의 많은 시간을 깃 커맨드를 입력하면서 살게 되는데, 커맨드 한번에 10글자(git commit)씩 쓰다보면 시간이 참 빠르게 흘러간다는 생각이 듭니다.
그래서 본 블로그에서 설명할 설정을 알고 난 후로 이러한 답답함이 좀 해소되었습니다. 이러한 고민이 있으신분은 .gitconfig 한번씩 설정합시다.
.gitconfig
파일이름 그대로 깃의 설정입니다. 여기서 생각보다 많은 걸 할 수 있습니다. vi ~/.gitconfig 로 자신의 설정을 확인하실 수 있습니다.
[user]
name = tolluset
email = dlqud19@gmail.com
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[credential]
helper = osxkeychain
[alias]
s = status
a = add
au = add -u
aup = add -u -p
ap = add -p
anp = !git add -N . && git add -p
b = branch
c = commit
ca = commit --amend
cm = commit -m
d = diff
ds = diff --staged
l = log
lm = log --merges
la = log --all
cob = checkout -b
co = checkout
com = checkout main
rb = rebase
sbu = submodule update --init
sbur = submodule update --remote
sbui = submodule update --init
rs = restore
rss = restore --staged
ig = "!gi() { curl -L -s https://www.gitignore.io/api/$@ ;}; gi"
fa = fetch --all
fp = !git fetch --all -p && git pull -p
pp = pull -p
rv = remote -v
rao = remote add origin
pn = !git branch | grep -v \\* | egrep -v 'master|main' | xargs git branch -D
ac = !git add . && git commit -am
st = stash
stpo = stash pop
stpu = stash push
stc = stash clear
psoh = push origin HEAD
diff-image = "!f() { cd -- \"${GIT_PREFIX:-.}\"; GIT_DIFF_IMAGE_ENABLED=1 git diff \"$@\"; }; f"
[commit]
template = ~/.gitmessage.md
[pull]
rebase = false
[core]
attributesfile = ~/.gitattributes
command = ~/git-diff-image/git_diff_image
[init]
defaultBranch = main
제 .gitconfig 입니다. [alias] 밑으로 이것저것 많습니다. 설정해놓은 것들을 다 쓰지는 않고 주로 쓰는 것만 따로 정리해보겠습니다.
s = status
a = add
b = branch
c = commit
ca = commit --amend
cm = commit -m
d = diff
ds = diff --staged
l = log
cob = checkout -b
co = checkout
rb = rebase
rs = restore
rss = restore --staged
fa = fetch --all
fp = !git fetch --all -p && git pull -p
pn = !git branch | grep -v \\* | egrep -v 'master|main' | xargs git branch -D
st = stash
psoh = push origin HEAD
위에 커맨드가 주로 사용되네요. 하단에 fp, pn 요런 alias는 여러가지의 커맨드를 섞는 경우 ! 느낌표를 붙여줍니다. 대체 이런걸 어떻게 알 수 있는걸까요? 보통은 문서에 있습니다.
https://git-scm.com/docs/git-config#Documentation/git-config.txt-alias
fp 같은 경우 오랜만에 해당 레포지토리에 진입했을 때 자주 사용하게 됩니다. 전부 패치해주고 pull 해서 브랜치도 최신으로 맞춰주는데 -p 옵션으로 prune 효과를 줄 수 있습니다.
https://git-scm.com/docs/git-pull#Documentation/git-pull.txt---prune
그럼 pn은 뭘까요. 요건 제가 로컬에 브랜치가 잔뜩 쌓이는게 싫어서 추가한 커맨드입니다. master, main 브랜치와 현재 사용중인 브랜치 이외에 전부 지워버립니다.
마지막으로 마무리에 사용하는 psoh입니다. 작업을 마치고 리모트에 푸쉬하고 싶을 때 g psoh 같이 쓸 수 있습니다.
방금 왜 git 말고 g을 쓴걸까요. bash 혹은 zsh, fish 같은 쉘에서도 alias를 설정할 수 있습니다. 예를 들어 zsh를 사용하면 아래와 같이 하시면 됩니다.
echo alias g=\"git\" >> ~/.zshrc source ~/.zshrc
사실 여기서 직접 alias gs="git status" 처럼 설정하시면 스페이스 한칸이 줄게 됩니다. 하지만, 저는 git 말고도 alias로 이것저것 쓰고 있기 때문에 통일성을 위해서 git에 대한 alias는 .gitconfig에 설정했습니다.
마무리
여러 컴퓨터를 쓰는 경우 위 설정도 동일하게 사용하고 싶게 되는데, 그래서 저는 gist에 파일을 올려두었습니다.
https://gist.github.com/Tolluset/6a17de662372e3860a50f34ca9601d1a
Mac이시면 아래 커맨드로 클립보드에 복사할 수 있으니 gist 만들고 바로 붙여버리시면 됩니다.
# 다른 쉘이면 다른 쉘파일 사용, pbcopy는 클립보드에 복사하는 커맨드 cat ~/.zshrc | pbcopy
주의하실 점은 .gitconfig에 토큰같이 퍼블릭에 올리면 안되는 값이 있나 확인하시고 애매하면 시크릿으로 올리시면 됩니다.
아마 이러한 설정을 공유하는 시스템도 있을 것 같은데 저는 자주 컴퓨터를 바꾸는 환경이 아니라 gist로 관리해도 될 것 같습니다. 자주 바뀌는 환경이면 설정을 다운로드 해서 로컬 .gitconfig에 로드해주는 스크립트를 짜도 좋을 것 같네요. ??️







