⚡ 편리한 Git 별칭을 사용하여 일상적인 작업 가속화

10424 단어 gitaliasclibeginners
이 글은 https://betterdev.blog/handy-git-aliases/에 처음 발표되었습니다. - 더 많은 내용을 보십시오.
Git는 기본적으로 우리가 사용할 수 있는 명령입니다.그것들은 파라미터가 있는 다른 명령에 대한 호출일 수도 있고, 심지어는 셸 스크립트일 수도 있다.가능성은 무한하다.
너는 구글로 네가 매번 잊어버리는 이 aliases 명령을 검색해 본 적이 있니?항상 여러 명령을 하나하나 실행하는데, 매번 같은 조합으로 실행하여 최종 효과를 얻는가?아니면 인터넷에서 아주 좋은 Git 명령을 보았는데 현실에서 사용할 수 없는 로고가 너무 많아요?Git 별칭은 솔루션입니다.
여기서 일상적인 업무에서 사용하는 Git 별명을 보여 드리겠습니다.해명이 있다.

지트 첫 번째 Git 별칭 정의


별칭은 ~/.gitconfig 파일에 저장된 의 일부입니다.이 파일을 편집하거나 명령을 실행하여 직접 추가하거나 수정할 수 있습니다.git status 명령에 대한 별칭을 만듭니다. 간단한 줄임말일 뿐입니다.
git config --global alias.s status
또는 파일git s을 열고 (없는 경우 생성) 이 구성 행을 수동으로 추가할 수 있습니다.
[alias]
    s = status
이 두 가지 상황에서 우리는 ~/.gitconfig 명령에 s 라는 새로운 별명을 추가했다.그때부터 이 두 가지 요구는 평등했다.
git status
git s
status 파일에서 ~/.gitconfig 블록에 더 많은 별명을 추가할 수 있습니다. 반복할 필요가 없습니다.우리는 단지 아래에 몇 줄을 덧붙일 뿐이다.

Git 구성 모두에게 유용한 Git 별명


Git 명령의 간편한 바로 가기


[alias]
    s   = status
    c   = commit
    go  = checkout
    gob = checkout -b
    d   = diff
    dc  = diff --cached
처음엔 멍청해 보였을지도 몰라.읊다, 읊조리다
그러나 이 짧은 명령 버전을 사용하기 시작하면 되돌아가는 것이 낙담스럽다는 것을 알게 될 것이다.이 버전들은 일반 버전보다 두 배 짧다(시작 [alias] 명령 호출 포함).이것은 네가 그것들을 집행하는 속도가 두 배 빠르다는 것을 의미한다.git statusgit 명령에 대해 우리는 보통 하루에 여러 번 집행하는데 이것은 중대한 변화이다.명령을 입력하는 데 더 이상 시간이 걸리지 않고 분석 결과를 입력하십시오.이것도 1초 적게 일하는 걱정거리다.

브랜치 간에 이동하는 데 사용되는 별칭 git status 은 Git 2.23 에 새 대체 옵션이 있습니다.그것은 git commit 으로 지점을 교체하는 데 전문적으로 쓰인다.하지만 나는 여전히 나의 단편 소설을 좋아한다.

아름답고 의미 있는 Git 역사 일지


[pretty]
    better-oneline = "format:%C(auto)%h%d %s %Cblue[%cn]"

[alias]
    tree    = log --pretty=better-oneline --all --graph
    ls      = log --pretty=better-oneline
    ll      = log --pretty=better-oneline --numstat

    details = "!f() { git ll "$1"^.."$1"; }; f"
그것들에 대해 우리는 먼저 새로운 git go 형식을 설명해야 한다. 그러면 우리는 모든 세 개의 이름에서 그것을 사용할 수 있다.
이전 3개의 별칭 (5-7 줄) 은 Git 기록을 더 좋은 형식으로 표시하는 데 사용됩니다.git switch는 GitHub나 GitLab에 표시된 분기도와 유사하기 때문에 내가 가장 좋아하는 것이고 가장 자주 사용하는 것이다.a 에서 대체할 수 없습니다.git loggit tree 를 파일 목록에 사용되는 셸 git ls 명령의 등가물로 볼 수 있습니다.첫 번째 버전은 제출 역사를 제출할 때마다 좋은 형식으로 표시합니다.두 번째는 수정된 파일이 따로 표시됩니다. 모든 파일에는 추가되고 삭제된 줄이 많습니다.
우리가 정의한 사용자 정의 형식은 모든 세 명령의 출력을 매우 좋게 하고 의미가 크다.우리는 이 제출을 가리키는 짧은 제출 해시, 메시지, 작성자, 지점 이름을 얻었다.
마지막 git ll (9 줄) 은 ls 과 같은 통계 정보를 표시하지만 단일 제출에 사용됩니다.우리는 마지막 제출에서 수정된 파일을 표시하기 위해 제출 인용을 매개 변수로 제공합니다. 예를 들어 git details.
마지막 별칭의 문법은 이전의 모든 별칭과 다르다.느낌표 git ll 로 시작하여 Git 명령을 셸 명령이 아닌 셸 명령으로 실행합니다.이러한 명령은 항상 루트 저장소 디렉토리에서 실행됩니다.또한 위치 매개 변수를 사용하여 함수에 봉하여 안전을 확보해야 합니다. 설명 branch-based workflow 을 참조하십시오.
here

모든 요소의 복수를 나열합니다.


[alias]
    branches = branch -a
    tags     = tag
이 두 별명은 특히 초보자에게 매우 유용하다.그것들은 단어의 복수 형식만 있으면 모든 지점과 표시를 쉽게 열거할 수 있다.또한 명령의 불일치성을 복구합니다. 보시다시피 정상적인 형식에서는 모든 지점과 모든 표시를 표시하는 방식이 다릅니다.

빠른 파일 추가 및 제출


[alias]
    a   = !cd ${GIT_PREFIX:-.} && git add . && git s
    aa  = !git add -A && git s

    ac  = !cd ${GIT_PREFIX:-.} && git add . && git c
    aac = !git add -A && git c
이 명령들은 제출 속도를 높일 수 있지만 조심스럽게 사용해야 한다.git details HEAD는 현재 디렉터리와 하위 디렉터리에 있는 파일을 에 추가하여 제출할 준비를 합니다.또한 즉시 ! 표시되므로 호출된 저장소의 상태를 볼 수 있습니다.이 명령이 랜덤 파일을 자동으로 추가했는지 확인하십시오.git 매우 유사한 일을 할 것입니다. 그러나 저장소에 수정된 모든 파일을 추가할 것입니다. 어떤 디렉터리에서 호출하든지 간에.이 두 명령을 "add"와 "add all"로 기록할 수 있습니다.
다른 두 개의 별명은 이전 별명의 확장 버전이다.그들은 또 변경 사항을 제출할 것이다.그것들을 사용하는 것은 매우 유용하고 시간을 절약하지만, 우리는 우리가 원하는 것만 약속할 수 있도록 확보해야 한다.
index/staging area

Git 작업공간 및 색인 지우기


[alias]
    unstage  = reset HEAD
    cleanout = !git clean -df && git checkout -- .
첫 번째 별명git a은 우리가 이전에 정의한 것git status과 상반된다.이것은 색인/임시 저장 영역에서 모든 파일을 삭제하는 바로 가기입니다.파일에서 변경 사항을 취소하지 않습니다.그들은 단지 업무 구역으로 돌아갈 뿐이다.
다음 별명의 동작은 다르다.이것은 작업공간에 있는 파일에 작용합니다(사용하지 않음 git aa.unstage 작업공간에서 파일의 모든 변경 사항을 취소하고 새로 제출되지 않은 모든 파일을 삭제합니다.실제로 우리는 지난번에 제출한 깨끗한 저장소 상태를 얻을 것이다.git aagit add 모두 약속하지 않은 변경을 초래할 수 있습니다.

제출 및 병합 취소


[alias]
    uncommit = reset --soft HEAD~1
    unmerge  = reset --hard ORIG_HEAD
당신은 지점을 제출하거나 합병하는 것이 너무 빠르다는 것을 몇 번이나 깨달았습니까?다음은 복구하기 쉬운 명령입니다.그들은 완전히 이름의 뜻에 따라 한다.git cleanout 마지막 커밋이 삭제됩니다.제출한 모든 변경 사항은 색인으로 돌아가 내용을 잃어버리지 않습니다.그것들을 변경하고 다시 제출할 수 있습니다.우리가 더 큰 수정을 하거나 제출하기 전에 더 오래 기다려야 할 때, 이것은 discard 이 아니라 사용하는 데 도움이 된다.
또 다른 별명은 분기 합병에 대해 유사한 작업을 수행합니다.지금 cleanoutgit uncommit 을 실행하면 병합 전에 저장소 상태로 돌아갑니다.명령 후의 색인에서 파일을 찾을 수 없습니다. 만약 우리가 합병 충돌 해결을 실행한다면, 파일을 잃어버릴 것입니다.중요한 것은 우리가 합병 후 즉시 안전하게 실행할 수 밖에 없다는 것을 알아야 한다는 것이다. 왜냐하면 합병 기간에 만든 특수 지침 git commit --amend 을 사용하기 때문이다.다른 Git 명령에 의해 변경될 수 있으므로 다른 상황에서 호출하면 다른 커밋 및 컨텐트가 손실될 수 있습니다.
두 명령 모두 커밋을 삭제하여 Git 기록을 다시 작성합니다.좋은 방법은 원격 저장소로 전송된 제출에 대해 이런 조작을 하지 않는 것이다.사실 원격 저장소에 대한 특별한 권한이 없으면 이러한 변경을 추진할 수 없습니다.따라서 오류를 발견한 후에만 git mergegit unmerge 을 사용하는 것이 좋습니다. 이렇게 해야만 오류가 컴퓨터를 떠나기 전에 복구할 수 있습니다.

Git 병합 세부 정보 표시


[alias]
    merge-span  = "!f() { echo $(git log -1 $2 --merges --pretty=format:%P | cut -d' ' -f1)$1$(git log -1 $2 --merges --pretty=format:%P | cut -d' ' -f2); }; f"
    merge-log   = "!git ls `git merge-span .. $1`"
    merge-diff  = "!git diff `git merge-span ... $1`"
Git 분할 합병은 특히 초보자들에게 많은 두통을 일으킬 수 있다.이것은 적어도 주어진 합병 도입 내용을 이해하고 회고할 수 있는 방법이다.unmerge는 보조 함수일 뿐이지만ORIG_HEADuncommit는 합병을 통해 추가된 제출 목록과 도입된 모든 변경 사항을 보여 줍니다.선택한 병합을 보기 위해 병합을 제출할 수 있습니다. 그렇지 않으면 현재 지점에서 마지막으로 찾은 병합이 표시됩니다.

총결산


가장 흔히 볼 수 있는 작업에 별명을 사용하고 사용하면 일상적인 작업을 가속화하고 간소화하여 버전 제어 시스템을 최대한 활용할 수 있습니다.
더 많은 별명을 추가하는 것을 막을 수 있는 것은 없습니다.너는 가장 흔히 볼 수 있는 동작에 따라 스스로 그것들을 만들 수 있다.다른 사람들이 만든 기존의 별명도 많다.나는 또 그들에게서 별명을 얻었고 다른 사람들로부터 영감을 얻었다.다음과 같습니다.
  • https://github.com/GitAlias/gitalias
  • https://gist.github.com/robmiller/6018582
  • 만약 당신이 좋아하는 별명이 있다면, 댓글로 공유하세요.

    좋은 웹페이지 즐겨찾기