git에서 명령의 별칭을 어떻게 지정합니까?


619

누군가가 얻은 스크린 캐스트를 보았습니다

git st
git ci

일하다. 내가 할 때 다른 의미가 있는지 묻는 오류가 발생합니다.
git newb이기 때문에이 작업을 수행하기 위해 무엇을 해야하는지 알아야합니까?



git alias의 고급 사용법에 대한 추가 질문도 여기에 있습니다. stackoverflow.com/questions/46528736/…
NeilG

답변:


977

기본적으로 라인을 추가하면됩니다. ~/.gitconfig

[alias]
    st = status
    ci = commit -v

또는 git config alias 명령을 사용할 수 있습니다 :

$ git config --global alias.st status 

유닉스에서, 별칭에 공백이 있다면 작은 따옴표를 사용하십시오 :

$ git config --global alias.ci 'commit -v'

창에서 별명에 공백 또는 명령 행 인수가있는 경우 큰 따옴표를 사용하십시오.

c:\dev> git config --global alias.ci "commit -v"

alias 명령은 함수를 매개 변수로 승인합니다. 별칭을 살펴보십시오 .


86
현재 저장소 대신 git config --global별명을 배치하는 데 사용 하는 것이 좋습니다 . ~/.gitconfig.git/config
Cascabel

27
내가 설정 선호 ststatus -s(짧은 상태)
하센

20
정말 대단합니다. 나는 이것을 찾고 있었다. 공백이있는 명령이 있다면 다음 '과 같이 사용해야합니다.git config --global alias.sr 'svn rebase'
Amir Raminfar

1
@HellishHeat이 별칭은 git에 대해 git에 의해 생성됩니다. 다른 명령 행 시스템에 대한 별명을 원하면 해당 시스템에서이를 수행하는 방법을 찾아야합니다. (유닉스 계열 시스템을 사용하고있는 것으로 보이며 Unices에서 별칭을 만드는 것이 매우 간단하다는 것을 알고 있습니다. 구문은 다르지만 Google 검색을 시도해보십시오.)
Michael Dorst

17
Windows 명령 행에서 Git을 사용하는 "경우 공백이있는 명령을 추가 할 때 작은 따옴표 대신 큰 따옴표를 사용해야 합니다 (예git config --global alias.ci "commit -v"
ABVincita

179

다른 사람들이 말했듯이 git 별칭을 추가하는 적절한 방법은 .gitconfig편집 ~/.gitconfig또는 git config --global alias.<alias> <git-command>명령 을 사용하여 전역 파일에 있습니다

아래는 내 ~/.gitconfig파일 의 별칭 섹션 사본입니다 .

[alias]
    st = status
    ci = commit
    co = checkout
    br = branch
    unstage = reset HEAD --
    last = log -1 HEAD

또한 bash를 사용하는 경우 git-completion.bash홈 디렉토리 에 복사 하여에서 bash를 완성하여 bash 완료를 설정하는 것이 좋습니다 ~/.bashrc. ( Pro Git 온라인 서적 에서이 내용을 알게되었다고 생각합니다 .) Mac OS X에서는 다음 명령을 사용하여이 작업을 수행했습니다.

# Copy git-completion.bash to home directory
cp usr/local/git/contrib/completion/git-completion.bash ~/

# Add the following lines to ~/.bashrc
if [ -x /usr/local/git/bin/git ]; then
    source ~/.git-completion.bash
fi

참고 : bash 완료는 표준 git 명령뿐만 아니라 git 별칭에도 적용됩니다.

마지막으로 키 입력을 줄이려면 다음을 ~/.bash_aliases소스 파일에 추가했습니다 ~/.bashrc.

alias gst='git status'
alias gl='git pull'
alias gp='git push'
alias gd='git diff | mate'
alias gau='git add --update'
alias gc='git commit -v'
alias gca='git commit -v -a'
alias gb='git branch'
alias gba='git branch -a'
alias gco='git checkout'
alias gcob='git checkout -b'
alias gcot='git checkout -t'
alias gcotb='git checkout --track -b'
alias glog='git log'
alias glogp='git log --pretty=format:"%h %s" --graph'

2
리눅스의 경우, git-completion.bash를 얻기 위해 이것을했습니다 : blogs.oracle.com/linuxnstuff/entry/…
Duncan Lock

10
당신이 zsh을 사용하는 경우, 우수한 오 - 내 - zsh을 스위트는 모든 "표준"자식 별명을 가진 플러그인을 포함 - github.com/robbyrussell/oh-my-zsh/blob/master/plugins/git/... - bash에 대한 , github.com/revans/bash-it를
jobwat

멍청한 질문 : "소스에서"제공되는 것은 무엇을 의미 ~/.bashrc합니까?
ahnbizcad

1
~/.bashrc: 실제로 키 입력을 줄입니다. 정확히 무엇을 찾고있었습니다.
parasrish

이 답변은 왜 내 대답에 .gitconfig include를 사용하도록 제안하는지에 대한 완벽한 예입니다! stackoverflow.com/a/59896430/117471
Bruno Bronosky

65

가장 유용한 gitconfig는 다음과 같습니다. 우리는 항상 git에서 20 % 기능을 사용합니다. "g ll"을 시도해 볼 수 있습니다.

[user]
    name = my name
    email = me@example.com
[core]  
    editor = vi 
[alias]
    aa = add --all
    bv = branch -vv
    ba = branch -ra
    bd = branch -d
    ca = commit --amend
    cb = checkout -b
    cm = commit -a --amend -C HEAD
    ci = commit -a -v
    co = checkout
    di = diff
    ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
    ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
    ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative
    mm = merge --no-ff
    st = status --short --branch
    tg = tag -a 
    pu = push --tags
    un = reset --hard HEAD  
    uh = reset --hard HEAD^
   [color]  
    diff = auto  
    status = auto  
    branch = auto 
   [branch]  
    autosetuprebase = always

이것을 어떻게 설정합니까? 이것을 어디에 두어야합니까?
ahnbizcad

3
@ahnbizcad ~ / .gitconfig에 위치 git config --global을 지정하면 현재 저장소의 .git / config로 이동
shmup

19

git config alias명령 이 필요합니다 . Git 리포지토리에서 다음을 실행하십시오.

git config alias.ci commit

글로벌 별칭의 경우 :

git config --global alias.ci commit

11

이것은 나를 위해 일했다 :

bco = "!f(){ git branch ${1} && git checkout ${1}; };f"

의 위에:

$ git --version

git version 1.7.7.5 (Apple Git-26)

1
git config --global alias.bco 'checkout -b'도 가능합니다. 그런 다음 할 수 있습니다 : git bco new-branch. :)
Russell

4
나는 좋아한다 git cob. 개 암 나무 열매에 옥수수처럼 여름을 생각 나게합니다. 실제로 우리가 충분히 생각하지 않는 위대한 단어입니다 ... 속입니다
Мати Тернер

4
내가 아닌 다른 사람이로 시작하는 git alias 명령을 처음 본 경우 !, Since version 1.5.0, Git supports aliases executing non-git commands, by prefixing the value with "!"( ref )
Sam

9

다음에 대한 별칭이 생성 st됩니다 status.

git config --add alias.st status


--add가 필요하고 작은 따옴표가 아닌 큰 따옴표를 사용해야합니다
Aligned

git st를 사용할 수있는 이유 git s는 다음과 s같습니다. P
Abdullah

7

다음은 시간을 절약하기 위해 사용하는 4 개의 git 단축키 또는 별명입니다.

명령 행을 열고 아래 4 개의 명령을 입력 한 후 바로 가기를 사용하십시오.

git config --global alias.co checkout  
git config --global alias.ci commit    
git config --global alias.st status    
git config --global alias.br branch  

이제 테스트하십시오!

$ git co              # use git co instead of git checkout
$ git ci              # use git ci instead of git commit
$ git st              # use git st instead of git status
$ git br              # use git br instead of git branch

6

git alias에서 쉘 명령실행 하려는 사람들의 경우 :

$ git pof

터미널 에서 현재 브랜치를 내 원점 repo로 푸시 합니다.

[alias]
    pof = !git push origin -f $(git branch | grep \\* | cut -d ' ' -f2)

어디

$(git branch | grep \\* | cut -d ' ' -f2)

명령은 현재 분기를 반환합니다.

따라서 지점 이름을 수동으로 입력하기위한 바로 가기입니다.

git push origin -f <current-branch>

1
git push -f origin HEAD현재 브랜치를 원격 상대방에게 "간단하게" 밀어 붙이지 않는 이유는 무엇 입니까? 또한 강제로 밀어 넣는 지름길? 바로 가기의 혜택을 누릴 수있을 정도로 자주 힘을 가해 야하는 경우 설정이나 작업 과정의 다른 부분이 빠지지 않습니까?
RomainValeri

Bash는 별칭을 생성하고 ( !git마지막 git 명령으로 대체 ) 구성 파일을 수동으로 편집하여 트릭을 수행했습니다.
H. de Jonge

5

git 명령과 비 git 명령을 모두 별칭으로 지정할 수 있습니다. 버전 1.5에서 추가 된 것 같습니다. git config --help내 Mac의 버전 2.5.4 페이지 의 스 니펫 은 다음과 같습니다.

별명 확장 앞에 느낌표가 있으면 쉘 명령으로 취급됩니다.

예를 들어, 전역 .gitconfig파일에서 다음을 가질 수 있습니다.

[alias]
    st = status
    hi = !echo 'hello'

그런 다음 실행하십시오.

$ git hi
hello
$ git st
On branch master

...

5

홈 디렉토리의 ~ / .gitconfig에 다음 줄을 추가하십시오.

[alias]
# one-line log
l = log --pretty=format:"%C(yellow)%h\\ %ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
ld = log --pretty=format:"%C(yellow)%h\\ %C(green)%ad%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=short --graph
ls = log --pretty=format:"%C(green)%h\\ %C(yellow)[%ad]%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --date=relative

a = add
ap = add -p
c = commit --verbose
ca = commit -a --verbose
cm = commit -m
cam = commit -a -m
m = commit --amend --verbose

d = diff
ds = diff --stat
dc = diff --cached

s = status -s
co = checkout
cob = checkout -b
# list branches sorted by last modified
b = "!git for-each-ref --sort='-authordate' --format='%(authordate)%09%(objectname:short)%09%(refname)' refs/heads | sed -e 's-refs/heads/--'"

# list aliases
la = "!git config -l | grep alias | cut -c 7-"

일단 완료되면 예를 들어 git a대신 할 수 있습니다 git add. 별명 표제 아래의 다른 명령에도 동일하게 적용됩니다.


4
$ 자식 업데이트
git : 'update'는 git 명령이 아닙니다. 'git --help'를 참조하십시오.

이것을 의미 했습니까?
    업데이트 심판

$ git config --global alias.update 'pull -v'

$ 자식 업데이트
git : //git.kernel.org/pub/scm/git/git에서
 = [최신] html-> origin / html
 = [최신] maint-> origin / maint
 = [최신] man-> origin / man
 = [최신] 마스터-> 출발지 / 마스터
 = [최신] 다음-> 출발지 / 다음
 = [최신] pu-> origin / pu
 = [최신] 할일-> 출발지 / 할일
이미 최신 상태입니다.

4

dog로그 그래프를 표시하기위한 별명 을 작성했습니다 .

git config --global alias.dog "log --all --decorate --oneline --graph"

다음과 같이 사용하십시오.

git dog

3

'!'를 사용하면 명령을 연결할 수도 있습니다. 쉘을 생성하는 연산자 :

aa = !git add -A && git status

이렇게하면 모든 파일이 추가되고와 함께 상태 보고서가 제공됩니다 $ git aa.

별칭을 확인하는 편리한 방법을 위해이 별칭을 추가하십시오.

alias = config --get-regexp ^alias\\.

그런 다음, $ git alias현재 별명과 그 별명을 빠르게 알려줍니다.


3

git의 설정을 사용하여 커스텀 git aliases를 설정할 수 있습니다. 구문은 다음과 같습니다.

git config --global alias.<aliasName> "<git command>"

예를 들어, 병합 충돌이있는 파일 목록을 표시하기 위해 별명이 필요하면 다음을 실행하십시오.

git config --global alias.conflicts "diff --name-only --diff-filter=U"

이제 "충돌"만 사용하여 위 명령을 사용할 수 있습니다.

git conflicts
# same as running: git diff --name-only --diff-filter=U

3

나를 위해 ( 터미널과 함께 mac을 사용하고 있습니다 ) .bash_profile에 추가 하고 다른 탭을 열어 변경 사항을로드 할 때만 작동했습니다 .

alias gst="git status"
alias gd="git diff"
alias gl="git log"
alias gco="git commit"
alias gck="git checkout"
alias gl="git pull"
alias gpom="git pull origin master"
alias gp="git push"
alias gb="git branch"

2

다른 답변에서 언급 한 표준 git 구성 방식보다 더 짧은 별칭을 얻기 위해 대부분의 명령이 2 단어 대신 2 문자가되도록 npm 패키지 mingit ( npm install -g mingit)을 만들었습니다 . 예제는 다음과 같습니다.

g a .                   // git add .
g b other-branch        // git branch other-branch
g c "made some changes" // git commit -m "made some changes"
g co master             // git checkout master
g d                     // git diff
g f                     // git fetch
g i                     // git init 
g m hotfix              // git merge hotfix
g pll                   // git pull
g psh                   // git push
g s                     // git status

다른 명령도 비슷합니다. 이것은 또한 bash 완료를 유지합니다. 패키지는 도트 파일에 bash 기능을 추가하고 osx, linux 및 windows에서 작동합니다. 또한 다른 별명과 달리 별명은 git-> g및 두 번째 매개 변수입니다.


1
github 프로젝트를 작성해 주셔서 감사합니다.
biniam

2

~/.gitconfig옵션에 대한 대안을 원 하고 조금 더 파고들 수있는 또 다른 옵션은 전역 노드 패키지에 래핑하여 완전히 사용자 정의 git 명령을 작성하는 것입니다.

package.json에서 루트 명령 (예 :)을 정의한 gt다음 특정 명령을 필터링하여 올바른 git 명령을 실행합니다. 예를 들어, git checkout my-branch수 있었다 gt co mybranch.

npm의 "christian-git"패키지는 다음 방법을 사용합니다. https://github.com/alexmacarthur/christian-git


1

여기에 별칭 이 있습니다. 여기에 큰 대답이 있지만 Windows와 Linux가 다르기 때문에 이것을 추가했습니다.



1

여러 개의 별칭 파일을 .gitconfig

별칭에 .gitconfig 포함 을 사용하는 것이 좋습니다 . 별칭 생성을 시작하면 많은 별칭이 생길 수 있습니다. 다른 사람들과 공유하고 싶을 수도 있습니다. 전용 파일에 저장하면 쉽게 공유 할 수 있습니다. 팀은 git repo를 사용하여 공유 별칭을 보유 할 수도 있습니다. 물론 공유하고 싶지 않은 일부 별칭은 개인 별칭 파일에 보관하십시오.

[include]
    path=src/dotfiles/.gitaliases

[include]
    path=src/team-utils/gitaliases

[include]
    path=.gitaliases.private

-1

윈도우의 또 다른 가능성은 바로 가기가있는 .bat 파일로 디렉토리를 채우는 것입니다. 파일 이름이 사용되는 바로 가기입니다. 디렉토리를 PATH 환경 변수에 추가하기 만하면 cmd 창에 모든 단축키를 사용할 수 있습니다.

예를 들어 (gc.bat) :

git commit -m %1

그런 다음 콘솔에서 다음 명령을 실행할 수 있습니다.

gc "changed stuff"

내가 이것을 대답으로 추가하는 이유는 이것을 사용할 때 git ...명령에만 국한되지 않기 때문 입니다.


1
시스템에 따라 .profile 또는 .bashrc 또는 .bash_profile에 쉘 별명을 추가하여 동일한 작업을 수행 할 수 있습니다. 그런 다음 모든 별명은 단일 파일에 있습니다. 또한 이것이 작업을 수행하는 표준 메커니즘입니다. "명령 별칭"섹션 은 git 명령에 사용되는 일반적으로 정의 된 쉘 별칭을 보여줍니다 . 이것에 대한 더 나은 리소스와 자습서가 있습니다. 이것은 내가 연 링크 일뿐입니다.
SherylHohman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.