브랜치 A에는 두 가지 '이야기'가 있습니다. 하나는 내가 마스터하기를 원했지만 하나는 그렇지 않았습니다.Git merge - 추적하지 않은 파일을 커밋하지 않고 커밋하지 말 것
이러한 변경 사항이 기능 지점에 없기 때문에 필자는 두 가지를 어떻게 든 분리해야했습니다. 내가 사용
git merge --no-commit --no-ff A
마스터에있는 동안. 이로 인해 예상대로 조정할 수있는 준비 영역이 생겼습니다. 원하지 않는 커밋과 관련된 파일은
git reset file
입니다. 이 방법이 올바르지 않습니까? 결과는 예상치 못한 결과였습니다. 파일은 추가되지 않았지만 (원하는 경우) 기록이 남았습니다. 힘내는 그들을 제거 된 파일로 추적했다! 이제 마스터에서 A로 다시 병합 할 때 커밋되지 않은 작업을 삭제하려고 시도합니다. 그것의 아주 이상한 주인은이 파일의 어떤 것을 결코 가지고 있지 않았다. 이것은 매우 불편합니다. 누구나 이러한 변경 사항을 '동기화'할 수있는 방법을 제안 할 수 있습니까? 또는 앞으로 나아갈 더 나은 접근법, 왜 그렇게하지 않을 것입니까?
좋은 방법이지만 체리 피킹의 오버 헤드를 피하기를 바랬습니다. 그래서 파일로 처리하는 것을 사용했습니다. 이것은 버그입니까, 아니면 이런 식으로 작동하지 않아야합니까? 분기에 추가되지 않은 파일에 대한 로그 항목을 커밋했습니다. 왜 그랬을까요? – marked
@marked 두 개의 기록을 병합합니다. 그리고 그것은 모든 커밋이 병합 된 역사에 나타나는 것을 의미합니다. 따라서 병합 된 분기에 추가 된 파일에 대한 기록 항목이 있고 병합 중에 삭제 된 것입니다. 앞으로 아주 힘들게 들릴 것 같네요, 당신이 한 일을 정확하게 묘사하지 않습니까? 체리 피킹은 당신이 역사에서 무엇을 골라야 할지를 선택적으로 선택한다는 것을 의미합니다. – kan
선택 병합과 분기 분할의 실질적인 차이점은 스토리 1 변경 만 병합을 수행하면 스토리 2 변경 사항을 나중에 병합 할 수 없으므로 * remerge * 할 수 없기 때문입니다. 그러나 분할 된 브랜치는 어떤 순서로든 병합 될 수 있습니다. – kan