16장. 고급 조작
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
이 장에서는 Git 리포지토리를 조작하기 위한 몇 가지 고급 명령어에 대해 설명합니다. 이러한 명령은 파일 조작부터 커밋 검색, 특정 요구 사항에 대한 리포지토리 분석 및 변경 지원까지 다양합니다. 이미 알고 있듯이 Git 리포지토리를 조작하면 특히 리포지토리의 Git 커밋 기록을 변경하는 작업을 실행할 때 결과가 발생합니다. 항상 그렇듯이 이러한 명령을 실행할 때는 주의해서 진행하세요.
인터랙티브 덩어리 스테이징
하지만 대화형 덩어리 스테이징은 개발을 간결하고 이해하기 쉬운 커밋으로 단순화하고 정리하는 데 사용되는 매우 강력한 도구입니다. 패치를 분할하거나 단일 개념의 패치를 만들어 달라는 요청을 받은 적이 있다면 이 섹션이 도움이 될 가능성이 높습니다!
슈퍼 코더가 아니고 간결한 패치로 생각하고 개발하는 사람이 아니라면, 여러분의 일상적인 개발 프로세스는 저희를 포함한 다른 개발자들과 비슷하게 약간 흩어져 있고, 지나치게 확장되어 있으며, 여러 가지 아이디어가 서로 얽혀 있을 가능성이 높습니다. 한 가지 코딩 아이디어가 다른 아이디어로 이어지고, 곧 원래의 버그를 수정하고, 또 다른 버그를 우연히 발견하고(그래도 수정했습니다!), 그 와중에 쉽고 새로운 기능을 추가하게 되죠. 아, 그리고 두 개의 오타도 수정하셨군요.
그리고 저희처럼 중요한 코드에 대한 변경 사항을 업스트림에 승인 요청하기 전에 다른 사람이 검토하는 것을 선호하는 경우, 서로 관련이 없는 다양한 변경 사항을 모두 포함하면 하나의 패치를 논리적으로 표현하기 어려울 가능성이 높습니다. 실제로 일부 오픈 소스 프로젝트에서는 제출된 패치에 별도의 독립된 수정 사항이 포함되어야 한다고 주장합니다. 즉, 패치가 한 번에 여러 가지 용도로 사용되어서는 안 됩니다. 대신, 각 아이디어는 독립적으로 존재해야 하며, 작업을 수행할 수 있을 정도로 충분히 큰, 잘 정의된 간단한 패치로 제공되어야 합니다. 두 개 이상의 아이디어를 업스트림해야 하는 경우 두 개 이상의 패치가 순차적으로 필요할 수 있습니다. 이러한 종류의 패치와 패치 시퀀스는 매우 견고한 검토, 빠른 처리, 메인스트림 업스트림 개발로 쉽게 수용된다는 것이 일반적인 통념입니다.
그렇다면 이렇게 완벽한 패치 시퀀스는 어떻게 만들어질까요? 간단한 패치를 용이하게 하는 개발 스타일을 위해 노력하지만 항상 성공하는 것은 아닙니다. 그럼에도 불구하고 Git은 좋은 패치를 구성하는 데 도움이 되는 몇 가지 도구를 제공합니다. 이러한 도구 중 하나를 사용하면 패치의 일부, 즉 "덩어리"를 대화형으로 선택하여 커밋하고 나머지는 나중에 패치에서 커밋하도록 남겨둘 수 있습니다. 궁극적으로는 원래 작업과 합쳐지는 작은 커밋의 새로운 시퀀스를 만들고 싶을 것입니다.
패치에서 어떤 개념적 조각이 함께 속해 있고 어떤 조각이 그렇지 않은지 결정하는 것은 Git이 할 수 없는 일입니다. 논리적으로 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access