git 설정하기

  • Linux 계열에서의 사용 기준 (ubuntu 20.04, Raspberry Pi OS, centos 8)
    • git version 2.25.1
    • git version 2.20.1

gitconfig

  • commit을 위한 사용자 설정은 ~/.gitconfig를 수정 혹은 git config 명령어를 이용하는 방법이 있다.

  • gitconfig 파일을 열고 아래 내용 추가
    [user]
    name = 사용자명
    email = 메일주소
    
  • git config 명령어를 이용한 설정
    git config --global user.name "사용자명"
    git config --global user.email 메일주소
    
  • 설정 후 commit log에서 author를 확인할 수 있다.
* commit 
| Author: hyesukk <메일주소>
| Date:   Sat Sep 18 13:06:16 2021 +0900
|
|     [bj] #4673
|
* commit 
  Author: HS-K <71997247+hyesuk-k@users.noreply.github.com>
  Date:   Tue May 18 22:38:52 2021 +0900

      Initial commit

상세 내용

$ git config
사용법: git config [<옵션>]

설정 파일 위치
    --global              공통 설정 파일을 사용합니다
    --system              시스템 설정 파일을 사용합니다
    --local               저장소 설정 파일을 사용합니다
    --worktree            use per-worktree config file
    -f, --file <파일>     지정한 설정 파일을 사용합니다
    --blob <블롭-id>      지정한 블롭 오브젝트에서 설정을 읽습니다

동작
    --get                 값을 가져옵니다: <이름> [<-정규식>]
    --get-all             모든 값을 가져옵니다: <> [<-정규식>]
    --get-regexp          정규식에 대한 값을 가져옵니다: <이름-정규식> [<-정규식>]
    --get-urlmatch        <URL> 특정되는 값을 가져옵니다: <섹션>[.<변수>] <URL>
    --replace-all         해당하는 변수를 모두 제거합니다: <이름> <> [<-정규식>]
    --add                  변수를 추가합니다: <이름> <>
    --unset               변수를 제거합니다: <이름> [<-정규식>]
    --unset-all           해당하는 항목을 모두 제거합니다: <이름> [<-정규식>]
    --rename-section      섹션의 이름을 바꿉니다: <-이름> <-이름>
    --remove-section      섹션을 제거합니다: <이름>
    -l, --list            전체 목록을 표시합니다
    -e, --edit            편집기를 엽니다
    --get-color           설정한 색을 찾습니다: slot [<기본값>]
    --get-colorbool        설정을 찾습니다: slot [<표준출력이-TTY인지-여부>]

 종류
    -t, --type <>         값이 해당 종류로 주어집니다
    --bool                값이 "true" 또는 "false"입니다
    --int                 값이 십진수입니다
    --bool-or-int         값이 --bool 또는 --int입니다
    --path                값이 경로(파일 또는 디렉터리 이름)입니다
    --expiry-date         값이 만료 시각입니다

기타
    -z, --null            값을 NUL 바이트로 끝냅니다
    --name-only           변수 이름만 표시합니다
    --includes            찾아볼  include 지시어를 고려합니다
    --show-origin         설정의 출처를 표시합니다 (파일, 표준 입력, 블롭, 명령 )
    --default <>        --wget 옵션에서, 해당 항목이 없으면 기본값을 사용합니다

core

  • 지원하는 항목 확인
$ git config --global core.<xxxx>
...
  • core.editor
    • git 편집기 설정 (default는 환경 변수에 설정된 편집기를 활용, vi)
[core]
  editor = vim
  • core.whitespace
    • default on
      • blank-at-eol : 라인 끝에 공백이 있는지 찾음
      • blank-at-eof : 파일 끝에 추가한 빈 라인이 있는지 찾음
      • space-before-tab : 모든 라인에서 처음에 tab보다 공백이 먼저 나오는지 찾음
    • default off
      • indent-with-non-tab : tab이 아니라 공백으로 시작하는 라인이 있는가 (tabwidth 설정에 따라 달라짐)
      • cr-at-eol : 라인 끝에 CR 문자가 있어도 괜찮은지
      • tab-in-indent : 라인 시작에 포함된 tab 문자를 오류로 취급
  • git apply를 이용하여 Patch 시 설정 변경 가능

  • 해당 Patch가 공백문자 정책에 맞는지 확인
$ git apply --whitespace=warn <patch>
  • Patch 시, Git이 자동으로 공백 문자 정책에 맞춰 수정
    • 공백 문자 정책에 맞지 않는 커밋을 Upstream에 push하기 전에 옵션을 주고 rebase 실행 시 공백을 설정한대로 수정
$ git apply --whitespace=fix <patch>

commit

credential

  • git 저장소 주소가 ssl이 아닌 https 인 경우, git의 remote repo 접근 시 (clone, update, push, pull 등)

  • cache

    • credential cache 설정 시, default 는 15분
    • timeout 설정 시 단위는 초
15분 
git config --global credential.helper cache

일주일
git config --global credential.helper "cache --timeout=25200"

혹은 

vi ~/.gitconfig

[credential]
  helper = cache --timeout=25200

tools

  • gitKraken (git gui tool)
  • tig

기본 명령어

REFS