Skip to content

Git

Git 플러그인은 Git 저장소의 상태를 파일 패널 안에 그대로 보여 줍니다. 별도의 앱도, 터미널도 필요 없습니다. 열 두 개와 Git 하위 메뉴, 스테이징과 커밋을 위한 고정 패널, 그리고 히스토리·블레임·브랜치·충돌·리베이스 창을 더합니다. Mac에 이미 설치된 git을 사용합니다. 플러그인이므로 환경설정 ▸ 플러그인…에서 끄거나 제거할 수 있습니다.

무엇이 추가되는가

  • 파일 목록의 두 열 — Git 상태와 브랜치. 각 파일에는 아이콘과 짧은 상태 낱말(수정됨, 추가됨, 삭제됨, 추적 안 함, 이름 바뀜, 복사됨, 충돌, 무시됨, 유형 바뀜)이 표시되며, 변경이 이미 인덱스에 있으면 (스테이징됨)이 붙습니다. 브랜치 열은 그 파일의 저장소가 올라가 있는 브랜치를 보여 줍니다. 열은 환경설정 ▸ 열…에서 켭니다( 보기 모드와 정렬 참고).
  • Git 메뉴 — 명령 ▸ Git 아래, 그리고 파일의 오른쪽 클릭 메뉴에 있습니다.

현재 브랜치와 저장소의 변경된 파일을 보여 주는 Git 상태 창 (그림: Git 상태는 브랜치와 작업 트리의 모든 변경을 알려 줍니다.)

패널: 스테이징, 커밋, 동기화

명령 ▸ Git ▸ 패널은 작업 트리를 스테이징됨, 변경됨, 추적 안 함으로 묶어 보여 주는 뷰를 고정합니다. 파일을 고르고 스테이징, 스테이징 해제, 버리기…를 쓰고, 메시지를 입력한 뒤 커밋을 누르십시오. 수정 커밋을 쓰면 변경이 이전 커밋에 접혀 들어갑니다. 풀과 푸시도 커밋이 어차피 일어나는 그 자리에 나란히 있으며, 둘 다 진행 상황을 보여 주고 취소할 수 있습니다.

커밋되는 것은 인덱스이지 git commit -a가 아닙니다. 스테이징한 것이 커밋됩니다.

히스토리, 블레임, 그리고 웹

  • 히스토리…는 커밋을 레인 그래프와 함께, 각 커밋을 가리키는 레퍼런스(● main, ↗ origin/main, ⚑ v1.0), 그리고 각 커밋이 건드린 파일과 함께 나열합니다. Return이나 두 번 클릭하면 그 파일의 판본이 비교 창에서 부모와 마주 놓입니다. 커밋 되돌리기와 체리픽도 거기 있으며, 작업 트리가 깨끗하지 않으면 둘 다 미리 거절합니다.
  • 파일 히스토리…는 파일 하나를 위한 같은 창입니다.
  • 블레임(목록)…은 모든 줄을 그 커밋, 작성자, 날짜와 함께 보여 줍니다. 편집기에서 블레임은 같은 정보를 줄 번호 옆, 편집기의 여백에 넣습니다. 줄 위에 포인터를 두면 커밋 메시지가 나오고, 클릭하면 그 커밋이 부모와 마주 놓입니다.
  • 웹에서 열기는 파일, 커밋, 브랜치를 GitHub, GitLab, Bitbucket, Azure DevOps에서 엽니다. 주소는 리모트의 URL에서 만들며 계정도 토큰도 필요 없습니다. 링크 구성을 모르는 호스트라면 짐작하는 대신 저장소 페이지를 제안합니다.

브랜치, 스태시, 태그

브랜치, 스태시 및 태그…는 셋을 모두 나열합니다. 브랜치를 전환·생성·병합·삭제하고, 스태시를 푸시·팝·폐기하며, 태그를 만들고 지우고 푸시하거나 그리로 전환할 수 있습니다. 태그는 브랜치가 아니므로 HEAD가 분리된다고 미리 알립니다. 페치, 풀, 푸시가 같은 창에 있으며 실행 중에 취소할 수 있습니다.

태그 푸시를 따로 둔 것은 의도입니다. git push는 태그를 함께 가져가지 않습니다.

충돌

충돌 해결…은 커서 아래 파일의 충돌 구역을 나열하고 각 구역마다 우리 것, 그들 것, 양쪽, 또는 열어 둠 가운데 하나를 고르게 합니다. 그다음 파일 쓰기 또는 쓰고 스테이징입니다. 한 구역이라도 열려 있으면 스테이징을 거절하며(Git은 <<<<<<< 표시도 군말 없이 커밋합니다), 표시를 읽을 수 없는 파일은 짐작하는 대신 건드리지 않습니다. 양쪽을 손으로 엮어야 하는 구역이라면 편집기에서 열기가 버튼 하나 거리에 있습니다.

리베이스

리베이스…는 업스트림보다 앞선 커밋 — 아직 아무도 가지지 않은 커밋 — 을 나열하고, 브랜치를 다시 쓰기 전에 스쿼시하거나 픽스업으로 붙이거나 버리거나 순서를 바꾸거나 메시지를 고치게 해 줍니다. 리베이스가 충돌에서 멈추면 같은 창이 계속 / 커밋 건너뛰기 / 리베이스 중단으로 바뀌므로, 절반쯤 끝난 리베이스를 터미널에서 마무리할 필요가 없습니다.

파일 무시와 자격 증명

  • 이 파일 무시…, 이 파일 유형 무시…, 이 폴더 무시…는 알맞은 패턴을 .gitignore에 적습니다. 있어야 할 자리에 고정되므로 이 build 폴더를 무시한다고 해서 build라는 이름의 모든 폴더가 무시되지는 않습니다.
  • 자격 증명…은 이 저장소가 어떻게 인증하는지 알려 줍니다. SSH인지 HTTPS인지, 자격 증명 도우미가 설정되어 있는지, SSH 에이전트가 실행 중이며 키를 쥐고 있는지. 도움이 되는 경우 동작 하나만 제안합니다. Git이 자격 증명을 macOS 키체인에 두게 하는 것입니다. 플러그인은 암호문을 묻지도, 보여 주지도, 저장하지도 않습니다.

참고

  • 플러그인은 /usr/bin/git의 시스템 Git을 사용합니다. Git이 없으면 명령은 Git을 쓸 수 없다고 알립니다. (Xcode Command Line Tools를 설치하면 함께 들어옵니다.)
  • 저장소 상태는 폴더마다 한 번 읽어 캐시하므로 큰 저장소를 넘겨 보아도 빠릅니다. 캐시는 트리를 바꾸는 명령 뒤에 새로 고쳐지며, 앱 바깥에서 이루어진 커밋도 따라갑니다.
  • 연결된 워크트리와 서브모듈을 지원합니다. 서브모듈 안의 파일은 상위 저장소가 아니라 서브모듈의 상태와 브랜치를 보여 줍니다.
  • 모든 목록에는 컨텍스트 메뉴가 있고, Return은 주 동작을 실행하며 Cmd+R은 창을 다시 불러옵니다.