alias로 add, commit, push 한번에 실행하기
git 명령어를 별칭으로 등록
프로그래밍을 하면서 필수로 사용하는 버전관리프로그램인 git
에는 아래와 같은 형식으로 단축명령어를 등록하여 사용할 수 있습니다.
1
git config (--global) alias.별칭 '깃명령어'
alias
는 별명/별칭 이라는 뜻입니다.--global
은 현재 깃디렉터리(local) 뿐만 아니라 모든 깃디렉터리(global)에서 공용으로 사용 할 별칭을 등록하여 사용하겠다는 의미입니다.
- 경우에 따라 특정 로컬프로젝트에만 단축명을 등록해야 하는 경우가 있을수도 있겠지만, 대부분은 전역으로 사용하므로
--global
옵션을 추가하여 사용합니다.- 깃 명령어에 공백이 없으면
'
를 생략해도 되지만, 공백이 있거나 여러 줄이면'
로 감싸주어야 합니다.
위와 같이 등록하면 git
의 특정 명령어를 별칭으로 사용할 수 있습니다. 예를 들어 git
의 commit -m
명령어를 cm
이라는 별칭으로 등록 해 보겠습니다.
1
git config --global alias.cm 'commit -m'
이제 다음과 같이 commit -m
대신 별칭으로 등록 된 cm
을 사용할 수 있게 됩니다.
1
git cm "커밋메시지"
commit -m
명령어에 필요한 커밋메시지를 인자로 주시면 정상적으로 실행됩니다.
여러개의 명령어들을 실행하는 별칭 등록
git
의 alias
는 기본적으로 git 명령어에 한해서 1개의 명령어만 등록 가능합니다. 하지만 !
과 &&
를 사용하면 여러개의 명령어를 실행할 수 있습니다.
실행문 가장 앞에 !
를 붙이면 git
은 git의 명령어가 아니라 터미널에서 실행하는 명령어를 실행 시킬 수 있게 해줍니다. 따라서 만약 !
를 붙이게 된다면, 위와 동일한 별칭을 아래와 같이 선언해야 합니다.
1
git config --global alias.cm '!git commit -m'
git 명령어가 아니라 터미널에서 실행시키는 것이므로, 앞에 git
을 붙여줘야 합니다.
터미널에서 원하는 내용을 실행시킬 수 있게 되었으니, 쉘 언어를 활용하면 여러 명령어를 동시에 실행 시킬 수 있습니다. bash
와 같은 쉘에서 여러 명령어를 순차적으로 실행시킬때는 각 명령어 사이에 &&
를 붙입니다.
이를 이용해서 이번에는 git add .
과 git commit -m
을 순차적으로 실행 시키는 ac
라는 별칭을 등록 해 보겠습니다.
1
git config --global alias.ac '!git add . && git commit -m'
주의 할 점은 모두 git
의 명령어라고 하더라도 !
를 붙이면 터미널에서 실행되므로, 각 명령어 앞에 프로그램인 git
을 적어주셔야 합니다.
이제 다음과 같이 ac
를 사용 할 수 있습니다.
1
git ac "커밋메시지"
마지막에 실행 된 commit -m
명령어에 필요한 커밋메시지를 인자로 주시면 정상적으로 실행됩니다.
중간에 입력값이 필요한 명령어가 포함 된 명령어들을 실행하는 별칭 등록
위와 같이 &&
를 사용하면 여러개의 함수를 동시에 실행할 수 있습니다. 이번에는 add .
,commit -m
,push
세 가지를 실행 해 줄 별칭을 만들어 보겠습니다.
여기서 한가지 문제가 있다면, &&
는 연속된 명령어들을 순차적으로 실행시켜주기 때문에, commit -m
이 먼저 실행이 된 후에야 push
가 실행이 됩니다. 하지만 만약 단순히 git add . && git commit -m && git push
를 실행한다면, 중간에 위치한 commit -m
에 커밋메시지를 전달 할 방법이 없습니다. 따라서 이 경우에는 쉘언어로 함수를 정의해서 별칭을 만들어 보겠습니다.
먼저 쉘에서의 함수 정의는 다음과 같이 할 수 있습니다.
1
함수명() { 함수내용 }
저는 함수명을 f
로 해서 위의 add .
,commit -m
,push
세 가지를 실행하는 함수를 정의 해 보겠습니다.
1
f() { git add . && git commit -m "$1" && git push;}
쉘에서 정의한 함수는 전달받은 인자를 순서대로 $1
, $2
, $3
.. 과 같이 사용할 수 있습니다. 이 함수는 전달받은 첫 번째 인자를 commit -m
에 전달 해 줍니다. 단 commit -m
에 전달되는 값은 문자열이 아니게 되므로, 다시 $1
를 '
나 "
로 감싸줘서 전달 된 인자들을 하나로 묶어줍니다.
이제 위 함수를 정의하고 실행시키는 별칭 acp
를 만들어 보겠습니다.
1
git config --global alias.acp '!f(){ git add . && git commit -m "$1" && git push; }; f'
- 이 별칭은 먼저 함수
f
를 정의 한 후,f
를 실행합니다.- 쉘에서는 함수호출시에
()
를 사용하지 않으며, 인자를 전달하고싶으면 함수명 뒤에 각 인자들을 공백으로 구분해서 전달합니다.- 함수 정의부와 함수 호출부를 한 줄에서 실행하기 위해
;
로 구분 했습니다.
이 별칭은 다음과 같이 사용할 수 있습니다.
1
git acp "커밋메시지"
- 위 명령어는 다음을 실행하는 것과 같습니다.
1 f(){ git add . && git commit -m "$1" && git push; }; f "커밋메시지"
f
함수를 정의하고f
함수 호출시에 첫 번째 인자로 커밋메시지를 전달합니다.- 그럼 그 커밋메시지는
f
함수의commit -m
에 전달되게 됩니다.
주의사항
- 함수 정의시 함수 내부의 문장끝에
;
가 있어야 합니다- 함수 정의와 호출이 한 줄에 이루어 지므로, 둘을
;
로 구분해야 합니다- git 명령어로 alias 정의시의 버그같은데, 내부 함수 정의시에
{
와 다음 내용 사이에 공백이 없으면 에러가 발생합니다.
git 설정파일 열기
alias
를 포함해서 git에 설정파일의 내용을 확인하거나 수정하고 싶으면 --list
옵션을 사용합니다.
1
git config (--global) --list
--global
를 붙이면 전역설정파일을, 생략하면 로컬설정파일을 열게됩니다.- 기본값으로
vim
에디터로 열립니다.- 수정 없이 종료하려면
:q
를 입력하고 엔터를 누릅니다.
- 수정 없이 종료하려면
git 설정파일 경로
위에서 등록한 별칭(alias
)들은 깃의 설정파일(config
)에 기록됩니다. git config
명령어를 사용하지 않고 해당 경로의 설정파일을 직접 수정하여 별칭을 등록 할 수도 있습니다.
전역 설정파일 경로
--global
옵션을 붙여 생성한 alias
들은 다음경로의 파일에 저장됩니다.
- Mac :
~/.gitconfig
- Windows :
C:\Users\__사용자폴더__\.gitconfig
로컬 설정파일 경로
./.git/config