이 튜토리얼의 구성과 각 섹션에서 다루는 내용을 안내합니다.
이 튜토리얼은 몇 개의 서로 다른 섹션으로 나뉘어 있습니다. 각 개념이 사용되기 전에 먼저 소개되도록 신경 썼지만, 스스로 몇 가지를 찾아보는 것이 괜찮다면 원한다면 건너뛰며 읽어도 됩니다.
이 튜토리얼은 처음부터 끝까지 읽도록 의도되었습니다. 원한다면 예제를 따라 해볼 수도 있습니다. 하지만 저는 당신의 아버지가 아니니, 하고 싶은 대로 해도 됩니다.
각 섹션이 무엇에 관한 내용인지 소개하면 다음과 같습니다:
이 섹션에서는 jj의 가장 핵심적인 개념들을 보여줍니다. 저장소, 변경 사항, 히스토리 보기, 그런 것들입니다. 이 내용은 단순하지만 동시에 매우 중요합니다! 나머지 모든 것은 이것 위에 쌓입니다.
건너뛰며 읽고 싶다면, 적어도 이 부분만큼은 먼저 읽는 것을 권합니다. 좋아요, 훑어보기만 해도 됩니다. 요점은, 이 내용을 아직 모른다면 뒤의 섹션을 이해하기가 더 어려워진다는 것입니다.
"Hello, world!"에서 만든 워크플로는 작동하긴 하지만, 기대만큼 편안하지는 않습니다. jj 애호가 대다수가 사용하는 기본적인 워크플로는 두 가지가 있으며, 그래서 이 둘을 모두 자세히 살펴봅니다.
핵심 워크플로를 익히고 나면, 다음 개념은 브랜치를 나누는 것과 브랜치를 병합하는 방법입니다. 그렇게 충분히 하다 보면 병합 충돌을 해결하는 방법도 배워야 하게 됩니다.
jj는 본래 "branchless" VCS인데, 이는 특히 git에서 넘어오면 꽤 이상하게 들립니다. 그게 어떤 느낌인지 궁금했다면 이 부분에서 보여드릴 것이고, git의 이름 있는 브랜치와는 어떻게 상호작용하는지 궁금하다면, 음, 조금 앞서가고 계신 겁니다! 그건 다음입니다!
당신의 코드를 git 사용자들과 공유하게 될 것이므로, jj에서 이름 있는 브랜치를 사용하는 방법을 이해해야 합니다. 그것을 다루고, 이어서 GitHub(혹은 사실 다른 어떤 원격 저장소든)로 코드를 업로드하는 방법과, 업스트림이 줄 수 있는 pull request 피드백에 대응하는 방법까지도 공유합니다.
이제 jj를 매우 탄탄하게 이해했으니, 아주 멋진 일을 하기 시작할 수 있습니다. 지금까지는 이해를 쉽게 하기 위해 jj를 git 모양의 워크플로에 맞춰 왔습니다. 이 섹션에서는 jj의 다양한 기본 연산이 가진 힘을, 실제로 당신이 jj 사용 방식에 도입하기로 결정할 수도 있는 몇 가지 실용적인 워크플로를 통해 보여드립니다.
추가로, 도구의 몇 가지 고급 기능인 workspaces와 colocated repositories도 다룹니다. 이것들을 사용하지 않을 수도 있지만, 알아두면 좋습니다.
어느 시점에는 아마 어떤 종류의 실수를 하게 될 것입니다. 의도하지 않았는데 두 개의 커밋을 합쳐버릴 수도 있습니다. 병합 충돌을 해결하려고 했지만, 결과가 마음에 들지 않을 수도 있습니다.
git reflog를 써본 적이 있다면, 이 장이 무엇에 관한 것인지 정확히 알 것입니다. 하지만 그렇지 않더라도, 사람들이 "git에서는 작업을 절대 잃어버릴 수 없다"고 말하는 경우가 있죠. 실제로는 분명히 그럴 수 있는데도요? 이 섹션에서는 왜 jj에서는 그렇게 되는 것이 훨씬 더 어려운지 보여드립니다.
마지막으로, jj는 매우 많은 부분을 사용자화할 수 있습니다. 어떤 명령에서든 원하는 출력을 정확히 보여주게 해 주는 매우 강력한 템플릿 시스템을 포함해, jj의 여러 부분을 어떻게 사용자화할 수 있는지 이야기합니다.