포스트(post)

alias로 add, commit, push 한번에 실행하기

git 명령어를 별칭으로 등록

프로그래밍을 하면서 필수로 사용하는 버전관리프로그램인 git에는 아래와 같은 형식으로 단축명령어를 등록하여 사용할 수 있습니다.

1
git config (--global) alias.별칭 '깃명령어'
  • alias는 별명/별칭 이라는 뜻입니다.
  • --global은 현재 깃디렉터리(local) 뿐만 아니라 모든 깃디렉터리(global)에서 공용으로 사용 할 별칭을 등록하여 사용하겠다는 의미입니다.
    • 경우에 따라 특정 로컬프로젝트에만 단축명을 등록해야 하는 경우가 있을수도 있겠지만, 대부분은 전역으로 사용하므로 --global옵션을 추가하여 사용합니다.
  • 깃 명령어에 공백이 없으면 '를 생략해도 되지만, 공백이 있거나 여러 줄이면 '로 감싸주어야 합니다.

위와 같이 등록하면 git의 특정 명령어를 별칭으로 사용할 수 있습니다. 예를 들어 gitcommit -m 명령어를 cm이라는 별칭으로 등록 해 보겠습니다.

1
git config --global alias.cm 'commit -m'

이제 다음과 같이 commit -m 대신 별칭으로 등록 된 cm을 사용할 수 있게 됩니다.

1
git cm "커밋메시지"

commit -m명령어에 필요한 커밋메시지를 인자로 주시면 정상적으로 실행됩니다.



여러개의 명령어들을 실행하는 별칭 등록

gitalias는 기본적으로 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

© IsaacGo. All rights reserved.