10 git 명령어, 미리 알았더라면 좋았을 거야 노트

10 git 명령어, 미리 알았더라면 좋았을 거야

이 글은 기본적인 add, commit, pull, push를 넘어 일상적인 개발에 필수적인 중간 수준의 Git 명령어들을 엄선하여 제시합니다. 먼저 git merge와 git rebase를 대조하며, merge는 역사적 분기를 보존하는 반면 rebase는 커밋을 재작성하여 더 깔끔하고 선형적인 히스토리를 만든다고 설명합니다. 저자는 개인 작업에는 rebase를 권장하지만, 히스토리 재작성 특성 때문에 공유된 히스토리에는 주의를 기울일 것을 조언합니다. merge와 rebase 모두에 대한 충돌 해결 전략과 이러한 작업을 중단하는 유용성에 대해 논의합니다.git commit --amend 명령어는 이전 커밋에 작고 잊혀진 변경 사항을 추가하여 커밋 히스토리의 미관을 개선하는 방법으로 소개됩니다. amend는 새로운 커밋을 생성하여 해시를 변경하므로, 원격 브랜치에 푸시할 때 주의해서 다루어야 함을 언급합니다. 이는 git push --force-with-lease로 이어지는데, 이는 재작성된 히스토리를 푸시할 때 --force보다 안전한 대안으로, 다른 사람의 작업을 실수로 덮어쓰는 것을 방지합니다."Git의 왕"이라 불리는 git rebase -i (interactive rebase)가 상세히 설명되며, 지저분한 커밋 히스토리를 깔끔하고 논리적인 시퀀스로 변환하는 강력함을 강조합니다. pick, reword, edit, squash, fixup, drop과 같은 다양한 하위 명령어가 설명되어 개발자가 커밋을 조작, 결합, 제거하여 우아한 히스토리를 만들 수 있음을 보여줍니다. 이 글은 커밋 히스토리의 깔끔함에 대한 다양한 의견을 인정하지만, 이 명령어의 가치를 강조합니다.다음으로 git stash는 프로덕션 버그 수정과 같이 컨텍스트를 전환해야 할 때 커밋되지 않은 변경 사항을 임시로 저장하는 데 중요한 명령어로 제시됩니다. -u 플래그를 사용하여 추적되지 않은 파일을 stash하는 방법과 더 나은 구성을 위해 stash에 이름을 지정하는 것의 중요성을 다룹니다. stash를 나열, 보기, 적용, 팝하는 명령어가 제공되어 임시 변경 사항을 관리하는 워크플로우를 개괄합니다.마지막으로 git cherry-pick은 전체 브랜치를 merge하거나 rebase하지 않고도 한 브랜치의 특정 커밋을 다른 브랜치에 선택적으로 적용하는 데 매우 유용한 명령어로 소개됩니다. 이는 다른 개발 라인에서 개별 수정 사항이나 기능을 통합하는 데 특히 유용합니다. 전반적으로 이 글은 기본적인 수준을 넘어 Git 기술을 향상시키기 위한 실용적인 가이드 역할을 하며, 일반적인 실제 개발 시나리오를 해결하는 명령어를 제공합니다.