2017-10-13 2 views
0

나는 세 가지가 있습니다 : master, featureXrevertFeatureX입니다.삭제 된 파일을 다시 추가하십시오.

  1. 마스터에서 featureX을 만들고 변경하십시오.
  2. featureX을 마스터에 병합합니다.
  3. 마스터에서 revertFeatureX을 만듭니다.
  4. 새 파일 및 변경 사항을 수동으로 featureX 삭제하십시오.
  5. revertFeatureX을 마스터에 병합합니다.
  6. featureX 몇 가지 새로운 변경 사항이 있습니다.

이제 내 문제는 : featureX을 다시 병합하려고하면 6 단계의 변경 사항 만 병합됩니다. 그러나 featureX에서 변경되지 않았습니다.

1 단계의 변경 사항을 어떻게 다시 가져올 수 있습니까?

+1

당신이 거기에 문제가있는 것처럼 보입니다! featureX에서'git cherry-pick'을 사용해 보았습니까? –

+0

'git merge'는 가장 최근의 커밋 이후 브랜치에서 동작 한 변경 사항을 적용합니다. 'featureX'를 한 번 병합했기 때문에, 병합 전에'featureX'에서 변경된 사항은 고려되지 않습니다; 그것들은 이미'master '브랜치에 존재한다. (그들 중 일부가 취소되거나 겹쳐 쓰여졌을지라도). – axiac

답변

1

감사 Stuart Buckingham을하고 개별적인 커밋보다, 당신은 관련이 git log 커밋 찾아 이전 파일을 체크 아웃 할 수 있습니다 (제목에서 알 수 있듯이)없는 하나의 파일 인 경우 힌트. 나는 이러한 방식으로 문제 해결 : 이

  • 체리 - 선택 마스터
  • 에서

    1. 새로운 지점 featureX_readd을 마지막으로 featureX_readd 병합 featureX_readd
    2. 병합 지점 featureX (내 질문의 1 단계의) 커밋 master -> 완료되었습니다.
    +1

    +1 이것은 파일을 처음부터 복사하고 추가하는 것보다 훨씬 나은 해결책이기 때문에 +1합니다. 이렇게하면 커밋 기록이 남습니다. 작동하도록 축하드립니다. –

    0

    는 다음에 대한 git checkout <COMMIT ID> <MISSING FILE>

    +0

    한 파일뿐 아니라 모든 파일을 복사하고 새 분기를 만들어 새 분기에 붙여 넣으라는 힌트를 얻었습니다. 더 쉬워? – user6537157

    +0

    어쩌면 더 쉬울 지 모르지만 처음 버전에서 git를 사용하는 목적을 무효화하는 모든 버전 기록을 잃어 버릴 것입니다. –

    관련 문제