Git에서 Cherry-Pick을 사용한 다중 커밋

Abdul Jabbar 2023년1월30일
  1. Git의 Git mergeGit Cherry-Pick 명령의 차이점
  2. Git의 Cherry-picking 버그 수정 커밋
  3. Git에서 여러 Cherry-picking 커밋
  4. Rebase 명령을 사용하여 Git의 특정 분기에서 원하는 변경 사항 선택
Git에서 Cherry-Pick을 사용한 다중 커밋

분기 작업을 완료한 후 일반적으로 기존 파일에 병합할 필요가 없습니다.

우리는 종종 특정 브랜치에서 모든 커밋을 처리하기보다 다른 브랜치에서 몇 가지 특정 커밋을 가져와야 합니다. 이것이 Git에서 git-cherry pick 명령을 사용하는 이유입니다.

Git의 Git mergeGit Cherry-Pick 명령의 차이점

git mergegit cherry-pick 명령과 같습니다. Git cherry-pick 명령은 다른 분기에서 원하는 분기로 변경 사항을 동화하는 데 사용됩니다.

merge 명령을 사용하는 동안 일반적으로 다른 분기에서 수행된 모든 변경 사항을 원하는 것으로 동화할 수 있습니다.

그러나 다른 한편으로, 때때로 우리는 원하는 브랜치에서 약간의 변경만 필요합니다. 그리고 이를 위해 Git cherry-pick 명령이 가장 안전한 옵션입니다.

Git의 Cherry-picking 버그 수정 커밋

Cherry-picking은 일반적으로 버그 수정을 이전 버전의 소프트웨어로 업데이트하는 것으로 설명할 수 있습니다. 즉, 특정 분기의 수백 가지 버그 수정에서 일부 명시적인 버그 수정 커밋만 가져오는 것을 의미합니다.

그런 다음 어떤 이유로든 나중에 해당 특정 버그 수정 커밋을 사용하세요. 이 명령문이나 명령은 팀이 프로덕션 또는 라이브 웹 또는 데스크탑 애플리케이션에서 몇 가지 중요한 버그를 수정하려는 경우에 주로 사용됩니다.

팀은 이 명령을 사용하여 릴리스를 준비하고 프로덕션 또는 라이브 환경에 배포합니다.

Git에서 여러 Cherry-picking 커밋

어떤 경우에는 다른 브랜치에서 동시에 여러 커밋에 cherry-pick를 적용하고 싶습니다. 그런 다음 먼저 두 커밋을 모두 식별하고 이에 대해 다음 명령을 사용해야 합니다.

그 후, 다음 명령에서 아래와 같이 A 및 B 분기 사이에 점 표기법을 사용하여 여러 커밋에서 cherry-picking을 수행할 수 있습니다.

$ git cherry-pick A..B

이 명령을 적용한 후 commit Acherry-pick에 동화되지 않습니다.

commit A도 동화하기 위해 다음 구문을 사용할 수 있습니다.

$ git cherry-pick A^..B
메모
커밋은 완벽한 순서로 이루어져야 합니다. Commit Acommit B보다 오래된 것이어야 합니다. 이 순서가 완벽하지 않으면 사용된 명령은 실패하고 위에서 설명한 조건에 따라 사용해야 합니다.

Rebase 명령을 사용하여 Git의 특정 분기에서 원하는 변경 사항 선택

Git의 rebase 명령을 사용하여 특정 분기에서 원하는 변경 사항이나 커밋을 선택하는 또 다른 방법이 있습니다. 이 방법에서 onto 옵션을 사용하여 명령을 rebase할 수 있습니다.

두 가지 유형의 경우 git rebase --onto를 사용할 수 있습니다.

  • 첫 번째 조건은 저장소에서 상위 분기를 교체하려는 분기가 있다는 것입니다.
  • 둘째, 저장소의 현재 분기에서 일부 커밋을 즉시 제거하고 싶습니다.

우리 branchD에서 끝나는 분기이고 이것이 C-Y를 이동하려는 원하는 분기라고 가정해 보겠습니다.

git reset --hard Y

git rebase --onto A B

특정 지점에서 시작하거나 원하는 커밋으로 커밋하는 데 도움이 됩니다. 우리는 리베이스할 대상과 특정 브랜치 커밋에서 리베이스할 위치를 완벽하게 관리할 수 있습니다.

작가: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

관련 문장 - Git Commit