인기 있는 Git 설정 옵션들
(jvns.ca)- 
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 파일 설정.
 
 - 
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 
 - 
 - 
마무리
- 많은 사람들에게 좋아하는 설정을 물어보고 가장 많이 언급된 것들을 나열하는 것이 유용함.
 
 
GN⁺의 의견
- 이 글에서 가장 중요한 것은 개발자들이 자주 사용하는 git 설정 옵션들을 알 수 있다는 점임.
 - git을 사용하는 초급 소프트웨어 엔지니어에게 이러한 설정들은 작업 효율성을 높이고 일상적인 문제를 해결하는 데 도움이 될 수 있음.
 - 특히 
merge.conflictstyle zdiff3나rebase.autosquash true같은 설정은 병합 충돌 해결과 커밋 히스토리 관리를 더 쉽게 만들어 줌으로써, 협업 과정에서 발생할 수 있는 문제들을 줄일 수 있음. 
메인 개발 환경에선 설정 해놓고 다른 환경에서 설정이 되어있지 않아 왜 안되나.. 했던 경험이 있습니다ㅋㅋㅋ 개발자라면 깃을 매일 사용하는 만큼 깃 설정과 관련된 것들에 대해 관심도가 높아졌으면 좋겠어요
Hacker News 의견
- 
core.autocrlf와safecrlf설정- CRLF 파일 커밋 방지 및 LF로 변환 강제
 - 필요시 
gitattributes로 오버라이드 가능 
 - 
.gitconfig의alias설정- 커밋 히스토리를 간결한 그래프로 출력하는 별칭 설정
 - Stack Overflow 게시물에서 가져온 설정
 
 - 
rebase.autosquash와fixup별칭- 자주 사용되는 설정으로, 커밋 후 리베이스 자동화
 - 
pull.rebase도 중요하지만fixup사용 빈도가 더 높음 
 - 
insteadOf설정의 유용성- GitHub 리모트 추가 시 단축어 사용
 - 
advice.statusHints,include.path,remote "origin".fetch,interactive.singleKey등의 다양한 설정 언급 
 - 개인 
.gitconfig설정 예시- 다양한 
alias,tag,tar,log,pull,diff,difftool,pager,safe,advice,init설정 포함 
 - 다양한 
 - 
delta를 페이지로 사용하는 설정- 더 읽기 쉽고 구문 강조된 차이점 표시
 - 기본 브랜치로 체크아웃하는 별칭 추가
 
 - 다양한 이메일 사용을 위한 
user.useConfigOnly설정- 
user.email주석 처리 후, 새 리포지토리에서 커밋 시 이메일 설정 
 - 
 - 
merge.conflictstyle기본값 변경 필요성- 
diff3스타일이 충돌 해결에 더 많은 정보 제공 
 - 
 - 추가 설정들
- 
core.commentChar,alias.newtask,alias.zip,git checkout -,format.pretty,delta설정 
 - 
 - 
branch.sort설정의 오해- 실제로는 가장 최근에 사용된 브랜치가 아닌 커밋 날짜로 정렬
 
 - 또 다른 개인 
.gitconfig설정 예시- 
alias.lg,alias.hist,alias.quick-push,alias.search,user,core,url설정 - 
quick-push별칭을 통한 간단한 워크플로우 정의 가능 
 - 
 
위 내용은 해커뉴스 댓글에서 사용자들이 공유한 개인적인 .gitconfig 설정들과 그들이 선호하는 Git 설정 팁들을 요약한 것임. 설정들은 Git 사용의 효율성을 높이고, 특정 작업을 자동화하며, 사용자 경험을 개선하는 데 초점을 맞추고 있음.