2013-07-03 1 views
0

동료의 지점을 프로젝트 레노의 master 지점과 합병했습니다. 내가 fetched을 변경하고 merge을 마스터 브랜치에 넣었을 때 몇 가지 충돌이 발생하여이를 해결하기 위해 git mergetool을 실행했습니다.git 병합 중에 "변경 사항 무시"를 선택하면 파일이 삭제되는 이유는 무엇입니까?

merge으로 끝내고 나면 GitHub GUI 앱의 변경 사항을 살펴 보았습니다. 내 동료 지점에서 병합 된 모든 파일은 새 파일이 아니더라도 "새로 만들기"로 표시됩니다. 파일 중 하나를 마우스 오른쪽 버튼으로 클릭하고 "변경 사항 취소"를 클릭하면 merge을 커밋하면 저장소에서 파일이 삭제됩니다. 나는 논리적 인 설명이있을 것이라고 확신한다. "변경 사항 무시"를 선택하면 파일이 삭제되는 이유는 무엇입니까? 오랜 시간 동안 거기에 있어도 병합 중에 파일이 "새로 만들기"로 표시되는 이유는 무엇입니까?

+0

"변경 사항 무시"를 어디에서 클릭하고 있습니까? –

+0

@ LoïcFaure-Lacroix 파일을 마우스 오른쪽 버튼으로 클릭 한 후 GitHub GUI 응용 프로그램에서 "변경 사항 무시"를 클릭합니다. –

+0

버려진 변경 사항을 클릭 할 수 있으면 푸시 할 때 커밋에 추가되지 않은 변경 사항을 의미합니다. 예를 들어, 파일을 병합했지만 모두 커밋에 변경 사항을 추가하지 않았습니다. 당신이 푸시했고 변경 사항 (병합 된 파일)이 로컬로 유지되었습니다 –

답변

0

당신이 가진 문제인지는 모르겠지만 확실하지는 않습니다. 망할 놈은 파일은 추적하지 않지만 내용은 추적합니다. 예를 들어, 파일을 이동하는 경우. git status을 사용하면 파일이 삭제되었으며 새로 추적되지 않은 파일이 있음을 알 수 있습니다.

변경 사항을 커밋에 모두 추가하면 git은 내용을 확인하고 파일의 이름이 변경되었다고 간주합니다. 어느 것이 좋니. 파일을 복사하여 추가 할 수도 있으며 내용이 동일하기 때문에 파일을 사본으로 표시합니다. 각 파일은 내부적으로 동일한 Object을 가리 킵니다. 즉, 복사 또는 이동 된 파일은 기록을 상속받습니다.

이제 커밋 중에 커밋 된 파일을 삭제하고 병합 중에 다시 추가했다고 가정 해 보겠습니다. (이것은 버려진 변경 사항으로 인해 발생할 수 있습니다.) 힘내라, 파일이 삭제 된 다음 새로운 파일이 생성 된 것을 볼 수있다. 파일이 이전 커밋에서 존재하지 않았기 때문에 새로운 것으로 완전히 표시됩니다.

다른 이유로는 새 파일의 변경 사항이 100 %입니다. 나는 확실히 말할 수는 없지만 그것이 일어난다면. git이 파일이 새 파일로 대체되었다고 생각하면 놀랄 일은 아닙니다.

새 노트로 표시된 파일의 git blame을 수행하는 것이 좋습니다. 이렇게하면 이름이있는 파일을 변경할 수 있습니다. 각 줄마다 하나의 사람과 날짜가 있습니다. 이것은 파일이 실제로 새 것이고 github이 파일을 새 것으로 잘못 표시하지 않음을 의미 할 수 있습니다. 변경 사항이있는 경우 github에 문제가 있습니다.

편집

가 있다면 말, 내가 병합을 다시 생각이라고 할 수 없습니다. 병합 된 나무에 새로운 것이 없다면, 수정하는 것은 끔찍한 일이 아닙니다. 병합을 수행 할 때 모든 변경 사항이 변경 집합에 추가되었는지 확인하십시오. 병합하는 동안 충돌 한 파일은 준비 영역에 추가되지 않습니다. mergetool이 자동으로 병합 된 파일을 준비에 추가한다고 말할 수는 없습니다. 어떤 경우 든 git add {file}을이 모든 파일에서 수행하십시오. 파일이 이미 있으면 아무 것도 변경되지 않습니다. 일단 모든 것이 옳다는 것을 확신하면. 밀어. 커밋을 덮어 쓰지 않는 fastforward가 아닌 커밋을 푸시하려고한다는 오류가있을 수 있습니다. 작동하지 않으면 "git push -f"를 시도하십시오. 그리고 그것은 효과가있다.