새 웨어하우스를 만들고 텍스트 파일 하나만 넣고 각각 6개의 커밋을 수행합니다. 이때 git log --oneline은 다음과 같습니다
파일 내용은 다음과 같습니다
442452d 커밋을 삭제하고 e09949e 커밋을 유지하고 싶습니다. 방법은 다음과 같습니다.
git Reset --hard 260effc
그런 다음 git Cherry-pick e09949e
이때 아래와 같이 갈등이 발생했습니다
이해할 수 없는 것은 논리적으로 말하면 직접 패치해야 한다는 것입니다. e09949e의 제출물에는 '3'이 아닌 '4'만 포함되어야 합니다. 여전히 필요합니다. '3'을 수동으로 제거하면 체리픽이 무슨 소용이 있나요? 그냥 파일에 들어가서 삭제해도 되나요? 아니면 사용법에 문제가 있는 걸까요? 하나님께 인도를 구하십시오! ! !
그냥 git revert 442452d를 실행하면 안 되나요?
커밋은 상대적인 수정 사항을 기록하며 수정된 내용의 위쪽 및 아래쪽 줄과 관련됩니다. 이전 줄이 손실되면 충돌이 보고되며 수동으로 해결해야 합니다. 두 커밋이 더 이상 관련 기능에 있지 않으면 직접 되돌릴 수 있습니다.
또한 이러한 Reset --hard 방식과 Cherry-Pick 방법을 사용하는 것은 그리 좋지 않습니다. 다른 공동 작업자가 중간에 다른 커밋을 추가하여 후속 충돌 처리가 더 어려워질 수 있습니다.
cherry-pick의 더 나은 사용 시나리오는 한 지점에서 다른 지점의 별도 기능을 원하는 경우입니다.
e09949e
에는4
만 포함되어 있는데, 이는 이전 커밋442452d
과의 차이점입니다.그러나 이제
442452d
을 제거하고e09949e
의 상위 노드를442452d
에서260effc
으로 가리키려고 합니다. 실제로 충돌이 발생합니다.움직이는 사진 없이 설명이 이해가 되었는지 잘 모르겠습니다. 궁금한 점이 있으면 먼저 이 튜토리얼을 플레이해 보시기 바랍니다.