2012-11-19 3 views
2

우리는 개발 지사와 여러 가지 지형지 물을 가지고 있습니다. 이제 우리는 지형지 물을 만든 extern 개발자가 있고 저장소 ()로 끌어 오기 요청을했습니다.Git Merge가 기본 분기의 새 파일을 삭제합니다.

이제 지점을 병합하려고하면 extern 개발자가 자신의 feature-branch를 만든 이후로 개발 지점에서 변경 한 내용이 모두 삭제된다는 문제가 있습니다. 끌어 오기 요청에서이를 볼 수 있습니다 (예 : 파일 라이브러리/massiveart/generic/fields/Imagemap/data/helpers/Imagemap.php에 있습니다.

내가 아는 한 자식은 다른 브랜치의 모든 커밋을 원하는 것으로 병합합니다. 그래서 나는이 파일들이 삭제되지 않아야한다고 생각했다. extern 개발자의 커밋에서 삭제되지 않았기 때문이다. (그의 저장소에서이 파일들은 존재하지도 않는다.) 그래서 내 질문에 자식이 파일을 삭제하려고하고이 문제를 해결하는 방법입니다.

는 또한 자신의 기능이 지점에 우리의 개발자 지점에서 변경 사항을 당겨 그에게 말했다, 그러나 결과는

+0

예, 병합은 양쪽에서 변경 사항의 수퍼 세트를 만들어야합니다. 기능 분기의 기록에 파일이 존재하지 않으면 병합에서 삭제되지 않아야합니다. 다른 방법으로 병합 : 병합 결과가 방향에 의존해서는 안되며, 유일한 차이점은 병합 된 버전으로 업데이트되는 지점뿐입니다. – Medo42

+0

내 가정이 옳았습니다. 하지만 풀 요청에 대한 링크에서 파일이 삭제된다는 것을 알 수 있습니다 ... 아니면 뭔가 놓쳤습니까? 그런데 로컬 저장소에서 변경 사항을 가져 오면 결과는 동일합니다 ... –

답변

2

당신이 언급 특정 파일이 때문에의 실종 ... 만족되지 않은에서 잘못 병합 커밋 75326832600d0034138ec7bc15000d4cfcd50d3d. 올바른 병합은 파일을 추가했을 것입니다 (병합 된 버전은 병합 된 분기의 모든 변경 사항의 상위 집합이기 때문에)하지만이 버전은 분기에있는 파일을 삭제하는 것과 같습니다.

+0

메시지 "커밋 요약 미리보기 설명 문자 수가 156"인 커밋에 대해 이야기하고 있습니까? 잘못 병합 된 부분은 어디에서 확인할 수 있습니까? –

+0

이전 병합 지점에서 기본 분기에 아직 파일이 없으며 새 병합 시점에 기본 분기가 있으므로이 지점 사이에 분명히 추가되었습니다. 기능 분기에서 파일이 추가 된 적이 없습니다. 한쪽에 추가되었고 다른쪽에는 수정되지 않았기 때문에 (병합되지 않은 버전) 병합 된 버전에는 포함되어야하지만 그렇지 않습니다. – Medo42

+0

죄송합니다. 요점을 모르겠다 ... 내가 말하고자하는 커밋과 끌어 오기 요청 사이에 파일이 추가되었다는 것을 의미합니다. 나는 이것이 사실임을 확신하지만, 그것은 파일이 feature-branch에 결코 존재하지 않았다는 것을 의미합니다. 따라서 병합 중에는 삭제하면 안됩니다. 그렇지 않습니까? 병합 된 버전에 포함시켜야한다고 말하는 이유는 무엇입니까? –

관련 문제