개발관련/Git

Git의 다른 브랜치에서 변경 사항을 선택적으로 병합하거나 선택하는 방법

Rateye 2021. 11. 11. 10:46
728x90
반응형
질문 : Git의 다른 브랜치에서 변경 사항을 선택적으로 병합하거나 선택하려면 어떻게해야합니까?

두 개의 병렬 (현재 실험적인) 개발 분기가있는 새 프로젝트에서 Git을 사용하고 있습니다.

  • master : 기존 코드베이스 가져 오기 및 일반적으로 확신하는 몇 가지 수정 사항
  • exp1 : 실험 브랜치 # 1
  • exp2 : 실험 분기 # 2

exp1exp2 는 두 가지 매우 다른 아키텍처 접근 방식을 나타냅니다. 내가 더 나아갈 때까지 나는 어느 것이 (어느 쪽이든) 효과가 있는지 알 방법이 없습니다. 한 브랜치에서 진행할 때 가끔 다른 브랜치에서 유용 할 수있는 편집 내용이 있고 그 부분 만 병합하고 싶습니다.

하나의 개발 브랜치에서 다른 브랜치로 선택적 변경 사항을 병합하고 나머지는 남겨 두는 가장 좋은 방법은 무엇입니까?

내가 고려한 접근 방식 :

  1. git merge --no-commit 다음에 브랜치간에 공통적으로 만들고 싶지 않은 많은 수의 편집을 수동으로 언 스테이징합니다.
  2. 공용 파일을 임시 디렉토리로 수동 복사 한 다음 git checkout 을 통해 다른 분기로 이동 한 다음 임시 디렉토리에서 작업 트리로 더 수동으로 복사합니다.
  3. 위의 변형. 지금은 exp 브랜치를 버리고 실험을 위해 두 개의 추가 로컬 저장소를 사용하십시오. 이것은 파일의 수동 복사를 훨씬 더 간단하게 만듭니다.

 

 

이 세 가지 접근 방식은 모두 지루하고 오류가 발생하기 쉽습니다. 더 나은 접근 방식이 있기를 바랍니다. git-merge 더 선택적으로 만드는 필터 경로 매개 변수와 유사합니다.

답변

cherry-pick 명령을 사용하여 한 분기에서 개별 커밋을 가져옵니다.

원하는 변경 사항이 개별 커밋에없는 경우 여기에 표시된 방법을 사용 하여 커밋을 개별 커밋으로 분할합니다 . 대략적으로 말하면 git rebase -i 를 사용하여 편집 할 원래 커밋을 가져온 다음 git reset HEAD^ 를 사용하여 변경 사항을 선택적으로 되 돌린 다음 git commit 을 사용하여 해당 비트를 기록에서 새 커밋으로 커밋합니다.

여기 Red Hat Magazine에 또 다른 좋은 방법이 있습니다 git add --patch 또는 git add --interactive 를 사용하여 개별 파일에 대해 다른 변경 사항을 분할하려는 경우 덩어리의 일부만 추가 할 수 있습니다 (검색 해당 페이지에서 "분할").

변경 사항을 분할 한 후 이제 원하는 항목 만 선택할 수 있습니다.

출처 : https://stackoverflow.com/questions/449541/how-can-i-selectively-merge-or-pick-changes-from-another-branch-in-git
728x90
반응형