인기있는 Git 설정 옵션.link
https://news.hada.io/topic?id=13405
https://jvns.ca/blog/2024/02/16/popular-git-config-options/
-
pull.ff only 또는 pull.rebase true
두 설정 모두 git pull을 실행할 때 브랜치가 상위 브랜치와 다를 경우 실수로 병합 커밋을 생성하는 것을 방지하기 위함.
pull.rebase true는 매번 git pull --rebase를 실행하는 것과 동일.
pull.ff only는 매번 git pull --ff-only를 실행하는 것과 동일.
두 설정을 동시에 사용하는 것은 의미가 없으며, --ff-only가 --rebase를 덮어쓰기 때문. -
merge.conflictstyle zdiff3
병합 충돌을 더 읽기 쉽게 만드는 설정.
diff3는 기본 설정에서 병합 충돌을 보여주는 방식을 변경하여 원본 코드를 중간에 표시.
zdiff3는 diff3의 개선된 버전으로 더 나은 것으로 여겨짐. -
rebase.autosquash true
오래된 커밋을 수정하기 쉽게 만드는 기능.
git commit --fixup OLD_COMMIT_ID를 사용하여 커밋하면 git rebase --autosquash main을 실행할 때 자동으로 fixup! 커밋을 대상과 결합. -
rebase.autostash true
git rebase 전후로 자동으로 git stash와 git stash pop을 실행. -
push.default simple, push.default current
현재 브랜치를 같은 이름의 원격 브랜치로 자동으로 푸시하도록 설정.
push.default simple은 기본 설정으로, 브랜치가 이미 원격 브랜치를 추적하고 있을 때만 작동.
push.default current는 항상 로컬 브랜치를 동일한 이름의 원격 브랜치로 푸시. -
init.defaultBranch main
새로운 저장소를 생성할 때 master 대신 main 브랜치를 생성. -
commit.verbose true
커밋 메시지를 작성하는 텍스트 편집기에 전체 커밋 차이를 추가하여 작업 내용을 기억하는 데 도움. -
rerere.enabled true
git rebase 중에 병합 충돌을 어떻게 해결했는지 기억하고 자동으로 충돌을 해결. -
help.autocorrect 10
git의 자동 수정 기능은 오타를 확인하지만 수정된 명령어를 자동으로 실행하지 않음.
자동으로 실행하도록 설정하려면 help.autocorrect를 1, 10, immediate, 또는 prompt로 설정. -
core.pager delta
git diff, git log, git show 등의 출력을 표시하는 데 사용되는 "pager".
delta는 구문 강조 기능이 있는 고급 diff 보기 도구로 설정. -
diff.algorithm histogram
기본 diff 알고리즘은 함수의 순서가 변경될 때 종종 문제를 일으킴.
diff.algorithm histogram은 이를 더 명확하게 표시. -
core.excludesfile: 전역 .gitignore
모든 저장소에 적용되는 전역 gitignore 파일 설정.
13 includeIf: 개인 및 업무용 별도의 git 설정
개인 및 업무용 저장소에 대해 다른 이메일 주소를 구성하는 데 사용.
-
url."git@github.com:".insteadOf 'https://github.com/'
https://github.com을 git@github.com:으로 자동으로 대체. -
fsckobjects: 데이터 손상 방지
데이터 손상을 적극적으로 감지하여 팀을 몇 번 구한 설정. -
submodule 관련 설정
status.submoduleSummary true
diff.submodule log
submodule.recurse true -
그 외의 설정들
blame.ignoreRevsFile .git-blame-ignore-revs
branch.sort -committerdate
color.ui false
commit.cleanup scissors
core.autocrlf false
core.editor emacs
credential.helper osxkeychain
diff.tool difftastic
diff.colorMoved default
diff.colorMovedWS allow-indentation-change
diff.context 10
fetch.prune true 및 fetch.prunetags
gpg.format ssh
log.date iso
merge.keepbackup false
merge.tool meld
push.followtags true
rebase.missingCommitsCheck error
rebase.updateRefs true -
설정 방법
일반적으로 git config --global NAME VALUE를 사용하여 설정.
옵션을 삭제하려면 ~/.gitconfig를 수동으로 편집. -
이 글을 쓴 후 변경한 설정
diff.algorithm histogram
branch.sort -committerdate
merge.conflictstyle zdiff3