Magit
≡ 목차 (Table of Contents)
It's Magit! A Git Porcelain inside Emacs
Magit은 Emacs용 Git 프론트엔드/클라이언트 확장이다. 개인적으로는 Emacs의 킬러 애플리케이션 중 하나로 꼽는다.
참고로 이 글은 순수 magit이 아닌 Doom Emacs나 Spacemacs용으로 커스터마이징 된 단축키를 위주로 정리한다.
magit-status
Magit을 시작한다. 정확하게 말해서 현재 상태를 표시하는 UI를 띄우는 함수다. 마치 git status
명령과 비슷하다. 개인적으로 magit 을 시작하는 가장 좋은 방법으로 사용한다.
인터랙티브 함수이므로 M-x
명령으로 실행시킬 수도 있다. Doom Emacs에서는 SPC g g
, Spacemacs에서는 SPC g s
단축키가 기본 바인딩 되어 있다.
아래의 단축키들은 모두 이 화면에서 시작된다.
Status 갱신
magit-status
화면의 내용을 갱신(refresh)하기 위해서는 g r
을 입력하면 된다.
스테이지(Stage)
수정된 파일을 선택하고 s
를 누르면 스테이지가 된다. 각 수정 내역에서 TAB
을 누르면 간단한 diff를 볼 수 있는데 여기서 선택 영역을 지정하고 s
를 누르면 선택 영역만 따로 스테이지 된다.
타이틀 부분을 선택하고 s
를 누르면 해당 분류의 파일들이 모두 스테이지 된다.
커밋(Commit)
c c
를 누르면 커밋 모드로 바뀐다. 스테이지 된 파일들의 간략한 변경점을 볼 수 있으며 커밋 메시지를 작성할 수 있다.
커밋 메시지를 작성한 이후 커밋을 진행하는데, Doom Emacs의 경우 :wq
로 vim 을 종료하듯이 하면 커밋이 진행된다. Spacemacs의 경우 ,c
와 같은 별도의 단축키가 배정되어 있으며 이 부분은 에디터 안에 주석으로 도움말이 적혀있으니 참고하자.
로그 보기(Log)
l l
을 이용하면 로그를 볼 수 있다.
각 커밋에서 RET
를 누르면 해당 커밋의 변경 내역을 볼 수도 있다.
원격에 푸시하기(Push)
p p
를 이용하면 원격에 현재 브랜치 이름으로 푸시(push) 된다.
원격에서 받아오기(Pull or Fetch)
F u
를 이용하면 origin 에서 현재 브랜치로 풀(pull)이 된다.
만약 pull이 아닌 fetch를 원한다면 f u
를 눌러보자. origin에서 모든 내용이 fetch 된다.
fetch 시 로컬과 origin 원격의 브랜치를 동기화 하고 싶다면 - 즉 원격에서 사라진 브랜치를 지우고 싶다면 - f
화면에서 -d
를 차례대로 입력해서 prune 옵션을 활성시킨 후 u
를 눌러보자.
브랜치(Branch)
b c
- 브랜치 생성. 출발점이 되는 브랜치를 먼저 입력 받고 그 이후에 생성할 브랜치 이름을 입력한다.
b b
- 브랜치 전환
b x
- 브랜치 삭제
변경 사항 되돌리기
magit-status
상에서 원하는 변경점을 선택한 후 x
를 누르면 해당 변경 사항을 취소하고 원래대로(HEAD) 돌린다. 수정한 내용을 그대로 잃어버리니 사용에 주의하자.
특정 커밋 시점으로 전환하기(switch commit)
magit-status
에서 l l
을 통해 원하는 커밋을 선택한 후 RET
를 누른다. 그러면 해당 커밋의 자세한 내용이 나타나는데 그 상태에서 b b
를 누르면 브랜치 전환 인터페이스가 나타나면서 제일 상단에 선택한 로그의 커밋 해시가 나타난다. 그러면 간단히 RET
를 누르면 원하는 시점으로 이동할 수 있다.
임시 저장(Stash) 및 복원
Git의 stash 기능을 이용해 현재 작업 중이던 사항을 임시로 보관해놓고 변화 내역을 날려버릴 수 있다. 물론 복구도 가능하다.
Z z
- 현재 브랜치의 모든 수정 중이던 사항을 Stash로 보관한다. 실행 시 메모를 남길 수 있다.
Z p
- 선택된 Stash의 수정 사항을 반영하고 Stash를 삭제한다. (pop)
Z a
- 선택된 Stash의 수정 사항을 반영(apply)한다. 원래의 Stash는 계속 남는다.
Z k
- 선택된 Stash를 날려버린다. (drop)
기타
magit-status
에서$
키를 누르면 실제로 사용되는 커맨드 및 응답 등의 로그를 볼 수 있다.