수색…


단순한 별칭

Git에는 별칭을 만드는 두 가지 방법이 있습니다.

  • ~/.gitconfig 파일과 함께 :
[alias]
    ci = commit
    st = status
    co = checkout
  • 커맨드 라인 :
 git config --global alias.ci "commit"
 git config --global alias.st "status"
 git config --global alias.co "checkout"

별칭을 만든 후 다음을 입력합니다.

  • git ci 대신 git commit ,
  • git st git status 대신 git st 사용하고,
  • git co git checkout 대신 git co .

정규 git 명령과 마찬가지로 별칭을 인수 옆에 사용할 수 있습니다. 예 :

 git ci -m "Commit message..."
 git co -b feature-42

기존 별칭 나열 / 검색

--get-regexp 사용하여 기존의 자식 별칭나열 할 수 있습니다.

$ git config --get-regexp '^alias\.'

별칭 검색

별칭검색 하려면 다음을 .gitconfig[alias] 아래에 추가하십시오.

aliases = !git config --list | grep ^alias\\. | cut -c 7- | grep -Ei --color \"$1\" "#"

그런 다음 할 수 있습니다 :

  • git aliases - 모든 별칭 표시
  • git aliases commit - "커밋"을 포함하는 별칭 만

고급 별칭

Git을 접두사로 사용하면 별명에 Git이 아닌 명령과 전체 sh 쉘 구문을 사용할 수 있습니다 ! .

~/.gitconfig 파일에서

[alias]
    temp = !git add -A && git commit -m "Temp"

이러한 접두사로 된 별칭에서 전체 쉘 구문을 사용할 수 있다는 사실은 쉘 함수를 사용하여 명령 줄 인수를 사용하는 것과 같은보다 복잡한 별칭을 만들 수 있음을 의미합니다.

[alias]
    ignore = "!f() { echo $1 >> .gitignore; }; f"

위의 별칭은 f 함수를 정의한 다음 별칭에 전달하는 인수로 실행합니다. git ignore .tmp/ .gitignore 파일에 .tmp/ 를 추가하면됩니다.

사실,이 패턴은 Git이 $1 , $2 등의 변수를 정의하므로 유용 할 수 있으므로 특별한 함수를 정의 할 필요조차 없습니다. (하지만 Git은 이러한 변수를 통해 액세스하더라도 인수를 추가하므로 마지막에 더미 명령을 추가 할 수 있습니다.)

별칭 앞에는 ! 붙습니다 ! 이 방법은 현재 디렉토리가 트리에서 더 깊다 할지라도 git checkout의 루트 디렉토리에서 실행됩니다. 이는 명시 적으로 cd 하지 않고도 루트에서 명령을 실행하는 유용한 방법이 될 수 있습니다.

[alias]
    ignore = "! echo $1 >> .gitignore"

일시적으로 추적 된 파일 무시

일시적으로 파일을 무시 된 것으로 표시하려면 (파일을 별칭에 매개 변수로 전달) - 다음을 입력하십시오.

unwatch = update-index --assume-unchanged

파일 추적을 다시 시작하려면 다음을 입력하십시오.

watch = update-index --no-assume-unchanged

일시적으로 무시 된 모든 파일을 나열하려면 다음을 입력하십시오.

unwatched = "!git ls-files -v | grep '^[[:lower:]]'"

보지 않은 목록을 지우려면 다음을 입력하십시오.

watchall = "!git unwatched | xargs -L 1 -I % sh -c 'git watch `echo % | cut -c 2-`'"

별칭 사용 예 :

git unwatch my_file.txt
git watch my_file.txt
git unwatched
git watchall

가지 그래프로 예쁜 로그보기

[alias]
  logp=log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short

  lg =  log --graph --date-order --first-parent \
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
  lgb = log --graph --date-order --branches --first-parent \                      
     --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'
 lga = log --graph --date-order --all \                                          
   --pretty=format:'%C(auto)%h%Creset %C(auto)%d%Creset %s %C(green)(%ad) %C(bold cyan)<%an>%Creset'

여기에 --pretty 형식으로 사용 된 옵션 및 자리 표시 자에 대한 설명 (전체 목록은 git help log 사용할 수 있습니다)

--graph - 커밋 트리 그리기

--date-order - 가능한 경우 커밋 타임 스탬프 순서 사용

--first-parent - 병합 노드의 첫 번째 부모 만 따르십시오.

--branches - 모든 로컬 분기를 표시합니다 (기본적으로 현재 분기 만 표시됨).

--all - 모든 로컬 및 리모트 브랜치를 보여준다.

% h - 커밋에 대한 해시 값 (약식)

% ad - 날짜 스탬프 (작성자)

% an - 작성자 username

% an - 커밋 사용자 이름

% C (자동) - [color] 섹션에 정의 된 색상을 사용합니다.

% Creset - 색상을 재설정합니다.

% d - - 장식 (지점 및 태그 이름)

% s - 메시지 커밋

% ad - 저자 날짜 (--date 지시어 다음에 올 것이다.) (그리고 커미터 날짜가 아님)

% - 작성자 이름 (커미터 이름에 대해 % cn 일 수 있음)

선형 기록을 유지하면서 코드 업데이트

때로는 코드의 선형 (비 분기) 기록을 유지해야합니다. 한동안 지사에서 일하는 경우 정규 git pull 을해야만하기 때문에 까다로울 수 있습니다. 그 이유는 업스트림과 병합을 기록하기 때문입니다.

[alias]
  up = pull --rebase

업스트림 소스를 업데이트 한 다음 푸시하지 않은 모든 작업을 다시 끌어 올리십시오.

쓰다:

git up

.gitignore 설정에 의해 무시되는 파일보기

[ alias ]

    ignored = ! git ls-files --others --ignored --exclude-standard --directory \
            && git ls-files --others -i --exclude-standard

파일 당 한 줄씩 표시하므로 grep (디렉토리 만 가능) :

$ git ignored | grep '/$'
.yardoc/
doc/

또는 개수 :

~$ git ignored | wc -l
199811                 # oops, my home directory is getting crowded

준비된 파일 무대화

일반적으로 git reset commit을 사용하여 커밋되도록 준비된 파일을 제거하기 위해 reset 에는 제공되는 인수에 따라 많은 기능이 있습니다. 완전히 unstage 모든 파일은 우리가 사용하는 새로운 별칭을 만들 자식 별칭을 사용할 수있다, 무대 reset 하지만 지금 우리가 할 수있는 올바른 인수를 제공하기 위해 기억 할 필요가 없습니다 reset .

git config --global alias.unstage "reset --"

이제 스테이지 파일을 무단 으로 만들려면 git unstage 입력하면됩니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow