인기 있는 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 사용의 효율성을 높이고, 특정 작업을 자동화하며, 사용자 경험을 개선하는 데 초점을 맞추고 있음.