부분 병합된 브랜치로 테스트
이전 단계에서는 git branch --merged 및 git log main ^branch가 완전히 병합된 브랜치에서 어떻게 작동하는지 살펴보았습니다. 이제 일부 커밋은 다른 브랜치에 통합되었지만 모든 커밋이 통합되지는 않은, 즉 부분적으로 병합된 브랜치에서 어떤 일이 발생하는지 살펴보겠습니다.
먼저, my-time-machine 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
partial-feature라는 새 브랜치를 만들고 해당 브랜치로 전환해 보겠습니다.
git branch partial-feature
git checkout partial-feature
이제 이 새 브랜치에서 두 개의 커밋을 만들겠습니다.
echo "Adding part 1 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 1"
echo "Adding part 2 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 2"
커밋 후 다음과 유사한 출력을 볼 수 있습니다.
[partial-feature a1b2c3d] Add part 1
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
[partial-feature e1f2g3h] Add part 2
1 file changed, 1 insertion(+)
이제 master 브랜치로 다시 전환하고 partial-feature에서 첫 번째 커밋만 병합해 보겠습니다. git cherry-pick을 사용하여 이 작업을 수행할 수 있습니다. 먼저 "Add part 1" 커밋의 커밋 해시가 필요합니다. git log partial-feature를 실행하고 첫 번째 커밋의 해시를 복사하여 찾을 수 있습니다.
git checkout master
## <commit_hash>를 "Add part 1" 커밋의 실제 해시로 바꿉니다.
git cherry-pick <commit_hash>
체리 픽이 성공했음을 나타내는 출력을 볼 수 있습니다.
[master i1j2k3l] Add part 1
Date: Mon Aug 7 10:05:00 2023 +0000
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
이제 git branch --merged master를 다시 사용해 보겠습니다.
git branch --merged master
master와 feature-branch가 나열되지만 partial-feature는 나열되지 않습니다. 이는 partial-feature에 아직 master에 병합되지 않은 "Add part 2" 커밋이 있기 때문입니다. git branch --merged는 모든 커밋이 대상 브랜치에 있는 브랜치만 나열합니다.
마지막으로 git log master ^partial-feature를 사용해 보겠습니다.
git log master ^partial-feature
이 명령은 master에는 있지만 partial-feature에는 없는 커밋을 표시합니다. master의 초기 커밋, "Add new feature" 커밋 (이제 master 에 있음), "Add part 1" 커밋 (체리 픽한 커밋) 을 표시해야 합니다. "Add part 2" 커밋은 partial-feature에만 있으므로 표시되지 않아야 합니다.
이는 git branch --merged 및 git log main ^branch가 일부 커밋만 통합된 경우에도 브랜치의 병합 상태를 이해하는 데 어떻게 도움이 되는지 보여줍니다.