인기있는 Git 설정 옵션.link

[원본 링크]

https://news.hada.io/topic?id=13405
https://jvns.ca/blog/2024/02/16/popular-git-config-options/

  1. pull.ff only 또는 pull.rebase true
    두 설정 모두 git pull을 실행할 때 브랜치가 상위 브랜치와 다를 경우 실수로 병합 커밋을 생성하는 것을 방지하기 위함.
    pull.rebase true는 매번 git pull --rebase를 실행하는 것과 동일.
    pull.ff only는 매번 git pull --ff-only를 실행하는 것과 동일.
    두 설정을 동시에 사용하는 것은 의미가 없으며, --ff-only가 --rebase를 덮어쓰기 때문.

  2. merge.conflictstyle zdiff3
    병합 충돌을 더 읽기 쉽게 만드는 설정.
    diff3는 기본 설정에서 병합 충돌을 보여주는 방식을 변경하여 원본 코드를 중간에 표시.
    zdiff3는 diff3의 개선된 버전으로 더 나은 것으로 여겨짐.

  3. rebase.autosquash true
    오래된 커밋을 수정하기 쉽게 만드는 기능.
    git commit --fixup OLD_COMMIT_ID를 사용하여 커밋하면 git rebase --autosquash main을 실행할 때 자동으로 fixup! 커밋을 대상과 결합.

  4. rebase.autostash true
    git rebase 전후로 자동으로 git stash와 git stash pop을 실행.

  5. push.default simple, push.default current
    현재 브랜치를 같은 이름의 원격 브랜치로 자동으로 푸시하도록 설정.
    push.default simple은 기본 설정으로, 브랜치가 이미 원격 브랜치를 추적하고 있을 때만 작동.
    push.default current는 항상 로컬 브랜치를 동일한 이름의 원격 브랜치로 푸시.

  6. init.defaultBranch main
    새로운 저장소를 생성할 때 master 대신 main 브랜치를 생성.

  7. commit.verbose true
    커밋 메시지를 작성하는 텍스트 편집기에 전체 커밋 차이를 추가하여 작업 내용을 기억하는 데 도움.

  8. rerere.enabled true
    git rebase 중에 병합 충돌을 어떻게 해결했는지 기억하고 자동으로 충돌을 해결.

  9. help.autocorrect 10
    git의 자동 수정 기능은 오타를 확인하지만 수정된 명령어를 자동으로 실행하지 않음.
    자동으로 실행하도록 설정하려면 help.autocorrect를 1, 10, immediate, 또는 prompt로 설정.

  10. core.pager delta
    git diff, git log, git show 등의 출력을 표시하는 데 사용되는 "pager".
    delta는 구문 강조 기능이 있는 고급 diff 보기 도구로 설정.

  11. diff.algorithm histogram
    기본 diff 알고리즘은 함수의 순서가 변경될 때 종종 문제를 일으킴.
    diff.algorithm histogram은 이를 더 명확하게 표시.

  12. core.excludesfile: 전역 .gitignore
    모든 저장소에 적용되는 전역 gitignore 파일 설정.

13 includeIf: 개인 및 업무용 별도의 git 설정
개인 및 업무용 저장소에 대해 다른 이메일 주소를 구성하는 데 사용.

  1. url."git@github.com:".insteadOf 'https://github.com/'
    https://github.com을 git@github.com:으로 자동으로 대체.

  2. fsckobjects: 데이터 손상 방지
    데이터 손상을 적극적으로 감지하여 팀을 몇 번 구한 설정.

  3. submodule 관련 설정
    status.submoduleSummary true
    diff.submodule log
    submodule.recurse true

  4. 그 외의 설정들
    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

  5. 설정 방법
    일반적으로 git config --global NAME VALUE를 사용하여 설정.
    옵션을 삭제하려면 ~/.gitconfig를 수동으로 편집.

  6. 이 글을 쓴 후 변경한 설정
    diff.algorithm histogram
    branch.sort -committerdate
    merge.conflictstyle zdiff3