질문 : Git의 다른 브랜치에서 변경 사항을 선택적으로 병합하거나 선택하려면 어떻게해야합니까?
두 개의 병렬 (현재 실험적인) 개발 분기가있는 새 프로젝트에서 Git을 사용하고 있습니다.
master
: 기존 코드베이스 가져 오기 및 일반적으로 확신하는 몇 가지 수정 사항exp1
: 실험 브랜치 # 1exp2
: 실험 분기 # 2
exp1
및 exp2
는 두 가지 매우 다른 아키텍처 접근 방식을 나타냅니다. 내가 더 나아갈 때까지 나는 어느 것이 (어느 쪽이든) 효과가 있는지 알 방법이 없습니다. 한 브랜치에서 진행할 때 가끔 다른 브랜치에서 유용 할 수있는 편집 내용이 있고 그 부분 만 병합하고 싶습니다.
하나의 개발 브랜치에서 다른 브랜치로 선택적 변경 사항을 병합하고 나머지는 남겨 두는 가장 좋은 방법은 무엇입니까?
내가 고려한 접근 방식 :
git merge --no-commit
다음에 브랜치간에 공통적으로 만들고 싶지 않은 많은 수의 편집을 수동으로 언 스테이징합니다.- 공용 파일을 임시 디렉토리로 수동 복사 한 다음
git checkout
을 통해 다른 분기로 이동 한 다음 임시 디렉토리에서 작업 트리로 더 수동으로 복사합니다. - 위의 변형. 지금은
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
'개발관련 > Git' 카테고리의 다른 글
Mercurial과 Git의 차이점 (0) | 2021.11.11 |
---|---|
Git은 기존 저장소를 새롭고 다른 원격 저장소 서버로 푸시하는 방법 (0) | 2021.11.11 |
Git에서 이전 버전의 파일을 보는 방법 (0) | 2021.11.11 |
git pull from master에서 개발 브랜치로 가져오는 방법 (0) | 2021.11.11 |
git cherry-pick "...38c74d is a merge but no -m option was given" (0) | 2021.11.10 |