-
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 truegit 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 truegit rebase중에 병합 충돌을 어떻게 해결했는지 기억하고 자동으로 충돌을 해결.
-
help.autocorrect 10- git의 자동 수정 기능은 오타를 확인하지만 수정된 명령어를 자동으로 실행하지 않음.
- 자동으로 실행하도록 설정하려면
help.autocorrect를1,10,immediate, 또는prompt로 설정.
-
core.pager deltagit diff,git log,git show등의 출력을 표시하는 데 사용되는 "pager".delta는 구문 강조 기능이 있는 고급 diff 보기 도구로 설정.
-
diff.algorithm histogram- 기본 diff 알고리즘은 함수의 순서가 변경될 때 종종 문제를 일으킴.
diff.algorithm histogram은 이를 더 명확하게 표시.
-
core.excludesfile: 전역 .gitignore- 모든 저장소에 적용되는 전역 gitignore 파일 설정.
-
includeIf: 개인 및 업무용 별도의 git 설정- 개인 및 업무용 저장소에 대해 다른 이메일 주소를 구성하는 데 사용.
-
url."git@github.com:".insteadOf 'https://github.com/'https://github.com을git@github.com:으로 자동으로 대체.
-
fsckobjects: 데이터 손상 방지- 데이터 손상을 적극적으로 감지하여 팀을 몇 번 구한 설정.
-
submodule 관련 설정
status.submoduleSummary truediff.submodule logsubmodule.recurse true
-
그 외의 설정들
blame.ignoreRevsFile .git-blame-ignore-revsbranch.sort -committerdatecolor.ui falsecommit.cleanup scissorscore.autocrlf falsecore.editor emacscredential.helper osxkeychaindiff.tool difftasticdiff.colorMoved defaultdiff.colorMovedWS allow-indentation-changediff.context 10fetch.prune true및fetch.prunetagsgpg.format sshlog.date isomerge.keepbackup falsemerge.tool meldpush.followtags truerebase.missingCommitsCheck errorrebase.updateRefs true
-
설정 방법
- 일반적으로
git config --global NAME VALUE를 사용하여 설정. - 옵션을 삭제하려면
~/.gitconfig를 수동으로 편집.
- 일반적으로
-
이 글을 쓴 후 변경한 설정
diff.algorithm histogrambranch.sort -committerdatemerge.conflictstyle zdiff3
-
마무리
- 많은 사람들에게 좋아하는 설정을 물어보고 가장 많이 언급된 것들을 나열하는 것이 유용함.
GN⁺의 의견
- 이 글에서 가장 중요한 것은 개발자들이 자주 사용하는 git 설정 옵션들을 알 수 있다는 점임.
- git을 사용하는 초급 소프트웨어 엔지니어에게 이러한 설정들은 작업 효율성을 높이고 일상적인 문제를 해결하는 데 도움이 될 수 있음.
- 특히
merge.conflictstyle zdiff3나rebase.autosquash true같은 설정은 병합 충돌 해결과 커밋 히스토리 관리를 더 쉽게 만들어 줌으로써, 협업 과정에서 발생할 수 있는 문제들을 줄일 수 있음.