2012-07-25 4 views
1

우리 Git 저장소에는 --no-ff과 병합되었지만 병합되지 않아야 할 지점에서 몇 가지 병합이 있습니다. 이러한 합병은 오래 전에 만들어졌습니다.No-FF에서 오래전부터 합병했습니다.

인수를 사용하여 이전 병합을 실행하는 것처럼 커밋을 강제/삽입하는 방법이 있습니까?

프로젝트의 수퍼 유저 중 하나는 GitHub의 네트워크보기를 즐기며 빨리 감기가 발생할 때 모두 한 줄로 병합되는 개별 분기를 볼 수 있기를 원했습니다.

답변

2

새로운 주/마스터 지점을 가진 (또는 이전을 덮어 쓰기 -하지만 기억, 출판 역사를 BAD되어 재 작성) 괜찮다면, 당신은 단순히 병합, 를 경우 다시 만들 수 있습니다

git checkout -b new_master $commit_before_merge 
0 :

  1. 체크 아웃 잊어 첫 가/inexistent/ 병합을 놓친 : 당신은 아직도 그들이있을 때 /되었습니다해야 기억

  2. 이전 커밋을 병합합니다. 올바른 병합 메시지 (원래 분기 이름 포함)를 원할 경우 이전 분기를 임시로 다시 만들거나 수동으로 메시지를 편집 할 수 있습니다.

    git merge $head_commit_of_old_branch 
    
  3. 그런 다음을 통해 새로운 "mergy"지점에 원본 마스터 지점에서 커밋을 복사 cherry-pick 또는 rebase를 사용해야합니다. 당신이 역사를 가진 행복 할 때까지

    git cherry-pick $commit_before_merge..$commit_before_next_merge 
    
  4. 2 단계를 반복로 돌아 가기 (범위를 커밋과 벚꽃 선택은 망할 놈의 최신 버전이 필요합니다).

NB. 먼저 로컬 클론에서 백업 및 테스트를 수행하십시오.

+0

이것은 긴 밤이 될 것입니다. 감사! – Qix

+1

@ Di-0xide : 더 효율적인 버전이 있는지 모르겠지만 더 나은 방법을 모릅니다. – knittl