동기화와 여러 저장소

저장소

미션 컨트롤은 "열린 저장소 중 어느 쪽이 나를 필요로 하지?"에 답해요. 아는 건 활성 작업 공간의 탭뿐이에요. 저장소는 다른 질문에 답해요. 그 저장소는 어디에 있고, 어디라도 열려 있기는 한가요? Gitcito가 본 적 있는 모든 것을 다뤄요. 모든 작업 공간, 모든 탭, 그리고 가리킨 폴더를 검색해서 찾은 것.

저장소 페이지: 열린 것, 즐겨찾기, 최근, 작업 공간용 색 섹션. 각 행에 이름,
소유자, 브랜치, 작업 상태

섹션

저장소는 둘 이상의 섹션에 나올 수 있어요. 일부러예요. 각 섹션은 자기 질문에 대한 완전한 답이지, 한 목록의 조각이 아니에요.

섹션 들어 있는 것
열린 저장소 지금 활성 작업 공간의 모든 탭
즐겨찾기 별이 달린 저장소. 모든 작업 공간을 가로질러
최근 연 모든 것, 새것이 먼저. 런처의 8개 목록과 달리 상한 없음
저장된 작업 공간마다 하나 그 작업 공간의 탭. 먼저 바꾸지 않고도 뛰어들 수 있어요
모든 저장소 레지스트리가 아는 모든 저장소. 열려 있지 않아도

목록 위 도구 모음은 한 줄이에요. 모두 접기와 모두 펼치기, 그다음 나머지 너비를 차지하는 검색칸, 그다음 WIP 요약 스위치.

검색은 모든 섹션의 행을 한 번에 걸러 내고, 아무것도 맞지 않는 섹션은 숨겨요. 빈 제목 기둥 아래에 결과가 묻히지 않게요. 저장소 이름, 별칭, 소유자, 경로의 어느 부분이든 맞아요. 어디에도 맞지 않으면 하얘지는 대신 그렇게 말해요.

칸이 비어 있으면 내용이 없어도 모든 섹션을 보여 줘요. "즐겨찾기 0"은 그 섹션이 있고 비어 있다는 뜻이고, 알아 둘 가치가 있어요. 그게 소음이 되는 건 이미 찾고 있을 때뿐이에요.

섹션 색

섹션은 처음부터 색이 입혀져 와요. 각 머리글은 표준 팔레트에서 자기 틴트를 받고, 새 작업 공간도 나타나는 순간에 포함돼요. 목적은 장식이 아니라 방향을 잡는 거예요. 프로젝트마다 작업 공간 섹션이 있고 그 위에 내장이 다섯이면, 긴 목록은 내가 어디 있는지 말하지 않게 되고, 틴트가 있으면 읽기 전에 머리글을 알아봐요.

바꾸려면 머리글의 **⋮**를 쓰세요. **색 바꾸기…**는 그룹 탭과 폴더와 같은 색 고르기를 열어요. 미리 고른 열 개에 자유 hex 값. 색 초기화는 섹션을 덮어쓴 뒤에 나타나고, 할당된 기본값으로 돌려요.

알아 두면 좋은 세 가지예요.

  • 할당은 안정적이고, 무작위가 아니에요. 같은 섹션은 켤 때마다 같은 색을 받고, 작업 공간을 더해도 위쪽 섹션은 다시 칠하지 않아요. 저장되는 건 여러분이 바꾼 색뿐이에요.
  • 색은 이 페이지에만 해당해요. 여기서 작업 공간 섹션에 색을 입혀도 Gitcito 다른 곳의 그 작업 공간에는 아무 말도 하지 않아요. 탭 색은 별도 설정이에요.
  • 색은 최대 강도가 아니라 면의 낮은 비율로 섞여 내려가요. 포화된 선택도 밝은 테마와 어두운 테마에서 읽히는 배경으로 남아요. 아주 연한 색은 거의 중성으로 보여요.

섹션이 열 개를 넘으면 팔레트가 반복되니, 두 머리글이 같은 틴트를 나눌 수 있어요.

저장소가 알려지는 조건

여기에 행이 있는 건 Gitcito가 언젠가 열었거나, 검색 폴더 아래에서 찾았을 때예요. 디스크 어딘가에 있다고 해서 색인되지 않아요. Gitcito에게 말한 적 없는 곳은 대상이 아니에요.

이 페이지를 열면 지금 탭에 열린 것도 색인해요. 시작할 때 복원된 저장소가 다시 열지 않아도 행을 얻는 이유예요. 열린 탭만 다루고, 각 세션의 첫 방문에서 일어나요. 한 번이 아니에요. Forget한 저장소는 다시 열지 않는 한 잊힌 채로 남아요.

검색 폴더는 설정에서 정해요.

  • 깊이는 루트 아래로 몇 단계 내려가는지예요 (기본 3, 상한 10).
  • 검색은 저장소에서 멈춰요. 안에 들어 있는 체크아웃이나 서브모듈은 자기 행으로 색인되지 않아요.
  • 점으로 시작하는 디렉터리에는 들어가지 않고, node_modules와 비슷한 의존성 폴더는 건너뛰어요.
  • 읽는 건 폴더 이름뿐이에요. .git 디렉터리를 찾는 것이 여기서 저장소로 만드는 조건이에요. 이름, 소유자, 브랜치는 .git 안 파일(HEAD, config)에서 와요. git을 실행하지는 않아요.

행

행은 열로 놓여요. 별, 이름(이름을 바꿨으면 별칭을 존중), 소유자(origin 원격 URL에서), 브랜치 칩, WIP 요약, 동작. 열은 페이지 전체가 공유하고, 섹션마다 크기를 잡지 않아요. 마지막 섹션의 이름이 첫 번째 아래에 맞춰지고, 목록은 더미가 아니라 표처럼 읽혀요.

끝 동작은 호버로 드러나지 않고 가만히 보여요. 탭에서 열기, 그리고 오른쪽 클릭과 같은 저장소 컨텍스트 메뉴를 여는 ⋮. Gitcito 어디서나 쓰는 메뉴에, 이 페이지 전용 항목 둘이 더해져 있어요.

동작 하는 일
별 / 별 해제 즐겨찾기에 넣거나 빼요
Locate… 옮기거나 이름 바꾼 폴더를 다시 가리켜요. 별칭, 프로필, 별은 따라가요. 대상에 이미 설정이 있으면 대상이 이겨요
Forget 이 목록에서 항목을 빼요. 디스크의 폴더는 건드리지 않아요

폴더가 없어진 저장소는 없음으로 나와요. 평소 행 동작 대신 줄 안의 **Locate…**와 Forget이에요.

별은 즐겨찾기 스위치이지, 일괄 선택 체크가 아니에요. 여기서 일괄 작업은 선택이 아니라 섹션 단위예요. 아래를 보세요.

폴더 트리를 작업 공간으로

코드 폴더는 원하는 묶음을 이미 담고 있어요. ~/Code에 client-a, client-b, personal이 있으면 그게 오가는 맥락이고, 작업 공간이 바로 그거예요. 자기 탭 띠를 가져요.

**검색 폴더 추가…**는 그걸 만들어 주겠다고 해요. 검색이 색인한 뒤, 고른 것의 바로 안에 있는 폴더와 각각이 가진 저장소 수가 대화 상자에 나와요. 원하는 것에 체크하세요. 각각이 저장소당 탭 하나인 작업 공간이 돼요.

행 의미
폴더 이름과 개수 기본으로 체크. 작업 공간이 돼요
"새 {n}개, …에 합침" 이 폴더용 작업 공간이 이미 있어요. 새 저장소만 더해져요
"이미 작업 공간에 있음" 할 일 없음. 숨기지 않고 회색
루트 자신의 이름 고른 폴더에 그냥 놓인 저장소. 하위 폴더가 아님. 기본은 해제

저장소는 얼마나 깊든 루트 바로 아래 첫 폴더에 들어가요. ~/Code/client-a/nested/app는 client-a로 가요. 저장소가 없는 폴더는 나오지 않아요.

확인할 때까지는 아무것도 만들어지지 않아요. 취소해도 검색의 색인은 그대로예요. 저장소는 어느 쪽이든 알려져요. 이 버튼이 전부터 하던 일이에요.

나중에 다시 검색하기

반복해도 안전해요. 두 번째 검색은 더하기만 하고, 절대 지우지 않아요.

  • 새 저장소는 맞는 작업 공간에 붙어요.
  • 손으로 옮기거나, 이름을 바꾸거나, 뺀 저장소는 둔 그대로예요.
  • 이름을 바꾼 작업 공간도 알아봐요. Gitcito가 나온 폴더를 기억해서, 복제를 만들지 않고 합쳐요.
  • 디스크에서 지운 저장소는 탭을 남기고 없음으로 나와요.

만들어진 작업 공간은 평범한 것이에요. 이름 바꾸기, 순서 바꾸기, 다시 칠하기, 삭제는 다른 것과 같아요. 특별한 채로 남는 것은 없어요.

열린 것을 모두 닫기

열린 저장소 머리글에는 닫기 버튼이 있어요. 하나가 열려 있으면 저장소 닫기, 여러 개면 모든 탭 닫기. 아무것도 열려 있지 않으면 꺼져 있어요.

저장소를 담은 탭을 닫고 페이지 탭은 그대로 둬요. 서 있는 저장소 페이지가 스스로 닫히지 않게요. 디스크는 건드리지 않아요. 커밋도, 스태시도, 폐기도 하지 않아요. 탭은 보기일 뿐이에요.

여러 개를 닫을 때는 먼저 묻고 개수를 말해요. 하나만 닫을 때는 안 물어요. 싼 실수이고, 닫힌 탭을 다시 여는 평소 단축키로 되돌려요. 닫힌 탭은 하나 닫기와 같은 깊이 10 스택에 들어가고, 띠에 있던 순서로 돌아와요. 한 번에 열이 넘으면 전부 되돌릴 수는 없어요.

섹션 전체 fetch와 pull

각 섹션 머리글에는 fetch 버튼과 갈라진 pull 버튼이 있어요. 그 섹션의 모든 저장소에 동작하고, 폴더가 없는 것은 건너뛰어요. 저장소가 열려 있을 필요는 없어요. 이 세션에서 한 번도 열지 않은 저장소 섹션도 같아요.

둘 다 차례로 돌고, 병렬이 아니에요. 마흔 개 섹션이 git 프로세스 마흔 개를 한 번에 띄우지 않게요. 상태 표시줄은 지금 어느 저장소를 다루는지, 몇 번째인지 보여 주고, 묶음은 저장소마다가 아니라 하나의 토스트로 끝나요. 일부가 실패하면 성공과 실패 개수를 말해요. 첫 실패에서 멈추지 않아요.

pull 옆 화살표는 pull이 무엇을 뜻할지 골라요.

모드 하는 일
Pull (가능하면 fast-forward) Git 기본. 되면 fast-forward, 안 되면 merge
Pull (fast-forward만) 머지 커밋을 만드는 대신 거절해요
Pull (rebase) 로컬 커밋을 업스트림 위에 다시 올려요

이 선택은 섹션마다가 아니라 전역 하나예요. 여러분이 어떻게 pull하는지를 말하고, 한 섹션의 화살표에서 바꾸면 어디서나 바뀌어요. 여러 저장소 pull은 모두 이를 따라요. 여기 섹션 버튼, 그룹 탭의 fetch/pull, 미션 컨트롤의 일괄 pull. 도구 모음에서 하나의 저장소를 pull하는 것은 건드리지 않아요. 그 메뉴는 이미 어떤 종류의 pull인지 물어요.

동작 막대

폴더 열기…, 복제…, 검색 폴더 추가…. Gitcito 레지스트리에 저장소를 넣는 세 가지 길이에요. 이미 있는 것을 찾는 바로 그 페이지에서요.

WIP 요약

선택 체크예요. 켜면 펼친 각 행이 진짜 git status를 돌리고, 커밋하지 않은 작업과 동기 상태를 보여 줘요. 끄면 행의 비용은 .git 안 파일을 읽는 것뿐이에요.

선택인 이유는 분명해요. 요약은 저장소당 git 프로세스 다섯 개쯤이고, 여덟 개씩 묶어서 큰 레지스트리가 UI를 멈추지 않게 해요. 켜는 것은 "지금 보이는 것을 전부 본다"는 결정이지, 상시 비용이 아니에요.

한계

  • 이 페이지의 것은 타이머로 새로 고쳐지지 않아요. 지금 상태를 보려면 페이지를 다시 열거나, WIP 요약을 껐다 켜세요.
  • WIP 요약은 펼친 섹션만 다뤄요. 접힌 섹션은 체크 여부와 상관없이 상태를 보여 주지 않아요.
  • 저장소가 알려지는 것은 열었거나, 그것을 담은 폴더를 검색했을 때뿐이에요. 여기서 파일 시스템을 찾을 방법은 없어요.
  • 작업 공간 만들기는 한 번에 되돌릴 수 없어요. 대화 상자를 취소하면 아무것도 만들어지지 않아요. 확인한 뒤 후회한 계획은 작업 공간을 손으로 지워서 풀어요.
  • 깊이는 한 단계뿐이에요. 첫 단계 아래 폴더는 작업 공간 탭 띠로 납작해져요. client-a/nested/app는 client-a의 탭이 되고, 안의 폴더는 아니에요.
  • 설정의 "지금 검색"은 이걸 내놓지 않아요. 설정된 모든 루트를 한 번에 다시 검색해요. 폴더마다 대화 상자는 의미가 없고, 색인만 해요.
  • 모두 닫기는 탭을 하나씩, 최대 열 개까지 다시 열어요. 한 번에 열이 넘는 저장소를 닫으면 가장 오래된 것은 스택에서 되돌릴 수 없어요. 그래도 모두 최근에 남아 있어요.
  • pull은 뒤처진 것으로 거르지 않아요. 섹션의 모든 저장소에 pull해요. 어느 쪽이 뒤처졌는지 알려면 먼저 fetch가 필요하니까요. 최신 저장소에 pull하는 것은 no-op이에요. 드는 것은 시간이지 안전이 아니에요.
  • 섹션 fetch나 pull은 실행 취소 스택에서 되돌릴 수 없어요. fetch는 이미 가진 것을 바꾸지 않아요. merge나 rebase를 하는 pull은 여기가 아니라 그 저장소 자신의 기록에서, 저장소마다 되돌려요.
  • 섹션 색은 겉모습뿐이에요. 어디서도 거르거나, 정렬하거나, 묶거나, 동기화하지 않아요. 작업 공간 섹션에 올린 색은 그 작업 공간의 색이 아니에요.
  • Forget은 목록에서 항목을 빼요. 디스크에서는 빼지 않아요. 폴더가 아직 있으면 같은 루트를 검색하거나 다시 열면 바로 돌아와요.

함께 보기: 미션 컨트롤 · 작업 공간, 탭, 그룹

GitHub에서 이 번역 개선하기