Dotfiles - 별칭 포함 Git 구성

Setting up git aliases and core settings in your git config


GitHub에서 전체 Git config을 확인하십시오.
본고의 대부분 내용은git별명에 집중되고 마지막으로 핵심 설정도 있다.
git 별칭에 익숙하지 않으면 이것을 참고하십시오.

별칭 설정
다음은 형식 - TOML 형식을 사용하는 ~/.gitconfig 파일에 앨리어스를 추가합니다.
[alias]
    MY_ALIAS = "GIT_COMMAND"
    MY_ALIAS = "! MY SHELL COMMAND"

Git 별명
이것은 나의 Git config 파일을 바탕으로 한 예이다.
[alias]
    st = "status -s -b"
    c = "commit"

    # --all
    # --verbose
    br = "branch -a -v"

    co = "checkout"
    cb = "checkout -b"

    # Short hash, relative date and message.
    logd = "log --pretty='%C(yellow)%h %C(cyan)%ar %Creset%s'"

    # --graph:
    #     Draw a text-based graphical representation of the commit history on
    #     the left hand side of the output.
    # --decorate:
    #     Print out the ref names of any commits that are shown. Defaults to
    #     short optionm such that the name prefixes refs/heads/, refs/tags/ and
    #     refs/remotes/ will not be printed.
    lol = "log --graph --decorate --oneline"
구성 설명:
  • 별명 값에 공백을 사용하려면 더블 인덱스를 사용해야 합니다. 그렇지 않으면command not found 오류가 발생합니다.
  • 은 터미널을 다시 불러올 필요가 없습니다.git 명령을 실행할 때마다git 별명이 다시 계산됩니다.
  • VS 코드는 더 좋은Toml 확장이 있는데 이 문제를 처리하는 데 도움이 된다. 나는 이것이 VS 코드에서Gitconfig 확장과 파일 형식을 사용하는 것보다 낫다는 것을 발견했다.
  • 다음에, 나는git 별명의 사용법과 출력을 보여줄 것이다.

    git 별칭 보기
    이 시리즈의 앞부분에서 약속한 바와 같이, 다음에 사용할 수 있는 모든 별명을 열거합니다.
    $ git alias
    st = status -s -b
    c = commit
    br = branch -a -v
    co = checkout
    ...
    

    Git 상태
    git 상태의 요약을 보십시오.
    $ git st
    ## master...origin/master
     M configs/shell/.aliases
     M configs/shell/.commonrc
     M configs/shell/.gitignore
    
    이는 다음과 같습니다.
    $ git status
    On branch master
    Your branch is up to date with 'origin/master'.
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   configs/shell/.aliases
            modified:   configs/shell/.commonrc
            modified:   configs/shell/.gitignore
    
    no changes added to commit (use "git add" and/or "git commit -a")
    

    Git log oneline
    git 로그 출력의 항목마다 줄을 표시합니다.
    $ git lol
    * 9103ed0 (HEAD -> master, origin/master, origin/HEAD) Update .gitconfig
    * 8a40fdb docs: Add comment
    * f750060 feat: Update .gitconfig
    

    로컬 및 원격 커밋 및 태그 동기화--rebase 깃발로 당기고 밀어주세요.
    $ git sync
    Already up to date.
    Current branch master is up to date.
    Everything up-to-date
    
    제출이 새로 고침되지 않았기 때문에 여기에서 기본 주소를 다시 설정하는 것은 안전합니다.또한 로컬 제출이 없으면 pull --rebase은 일반적인 pull으로 충당하고 다시 제출하지 않습니다.
    모든 태그를 가져온 다음 모든 태그를 밀어넣으려면 다음과 같이 하십시오.
    $ git sync-tags
    Enumerating objects: 1, done.
    ...
     * [new tag]         v0.8.0 -> v0.8.0
    
    위의 두 별칭을 결합하여 제출 및 태그를 추출한 다음 제출 및 태그를 밀어넣으려면 다음과 같이 하십시오.
    $ git sync-all
    
    마지막 설정은 다음과 같습니다.
    [alias]
      sync-all = "! git pull --rebase && git push --progress && git push --tags"
    
    --progress 로고는 푸시를 조용하게 하지만 --quiet처럼 조용하지는 않다.
    최근에 커밋과 태그를 함께 밀어붙이는 방법을 발견했습니다.
    $ git push --follow-tags
    
    그러나 현재 제출 시에만 태그를 밀어넣기 때문에 오래된 제출을 표시하면 밀어넣지 않습니다.
    따라서 모든 라벨이 전송되는 것을 확보하기 위해 나는 이런 방법으로 돌아왔다.
    $ git push --progress && git push -tags
    

    git 태그 보기
    semver 정렬을 사용하여git 태그를 표시합니다. 먼저 더 높은 태그 번호를 표시합니다.
    $ git tags
    v0.7.0
    v0.6.0
    v0.5.0
    
    매개변수가 없는 git tag에도 태그가 나열됩니다.그러나 보통 오래된 태그를 먼저 표시하고 정렬이 이상하게 보일 때가 있다. 왜냐하면 텍스트에 따라 정렬하는 것이지 의미에 따라 정렬하는 것이 아니기 때문이다. (따라서 11.0.01.0.0이 나란히 나타날 수 있다.)
    따라서, 나의 별명은 가장 가까운 것이 첫 번째임을 확인하고,semvar을 사용하여 그것들을 정렬합니다.

    셸의 Git 별칭 호출
    명령 첫머리에 느낌표 !을 사용하면 git을 거치지 않고 셸 명령을 사용할 수 있다.
    즉, cdfind을 사용할 수 있습니다.그리고 && 또는 ||의 chain 셸 명령을 사용합니다.
    [alias]
        # Go to root of git repo.
        grt = "! cd $(git rev-parse --show-toplevel)"
    
        # Sync local and remote commits.
        sync = "! git pull --rebase && git push"
        # Sync local and remote tags.
        sync-tags = "! git fetch --tags && git push --tags"
        # Sync local and remote commits and tags.
        sync-all = "! git pull --rebase && git push --progress && git push --tags"
    

    셸 별명에 매개 변수 사용하기
    매개 변수를 인용할 수도 있으니 주의하십시오.Use는 $1$2 등을 별명의 위치 매개 변수로 사용할 수 있다.
    나의 사용 사례는 유한하지만, 여기에 이런 방법을 사용하는 것이 하나 있다.매개변수 수가 1과 같지 않으면 시작 부분의 검사에 메시지가 표시됩니다.
    [alias]
        clone-https = "! [ $# -ne 1 ] && echo 'Args: USERNAME/REPO_NAME' || git clone https://github.com/$1.git"
    
    사용 예:
    $ git clone-https
    Args: USERNAME/REPO_NAME
    
    $ git clone-https MichaelCurrin/dotfiles
    Cloning into 'MichaelCurrin/dotfiles'...
    
    슬래시를 사용하지 않고 두 개의 매개변수를 사용하여 $1/$2.git으로 대체할 수 있습니다.
    셸 함수를 만들어서 별명의 일부분으로 정의하고 호출할 수도 있지만 위에서 설명한 문법을 사용한 것을 발견했습니다.

    글로벌 무시 파일 구성
    Git 구성 섹션에서 언급할 마지막 섹션은 별명이 아니라 핵심 설정입니다.
    이것은 전역git를 사용하여 파일을 무시합니다. (만약 존재한다면)~을 확장하려면 큰따옴표를 사용해야 합니다.
    [core]
        editor = "nano"
        excludesfile = "~/.gitignore"
    
    너는 반드시 이 파일을 만들어야 한다. 나는 다음 문장에서 소개할 것이다.

    여러 git 구성
    참고로, 여러 개의git 설정이 있고, 작업 보고서 폴더로 설정되어 있는 것을 발견했습니다.@jma 을 참조하십시오.
    이것은 아주 듣기 좋다. 왜냐하면 나의 업무 항목은 서로 다른 전자메일을 사용하기 때문에, 나는 매번 재구매할 때마다 로컬에서 그것을 설정하는 것을 기억할 필요가 없다.

    나누다
    편리한git별명이 있으면 댓글로 공유해 주세요.

    다음
    계속해.

    좋은 웹페이지 즐겨찾기