2012-11-09 2 views
0

이전에 다른 DVCS 시스템을 사용해 왔지만 git를 처음 사용했습니다. 그래서 나는 내가 의도 한대로 그것을 사용하는 방법에 대한 잘못된 가정을 가지고 있다고 생각합니다.Xcode git pull 후 워크 플로 혼란

나는 대부분 내 작업을 수행하는 마스터와 개발 지점이있는 RepoA가 있습니다. 얼마 지나지 않아 RepoA에서 RepoB를 복제하여 "BigFeatureA"작업을 시작했으며 개발 지점에서도이 작업을 수행했습니다. BigFeatureA로 끝나지 않았지만 RepoA에서 만들어진 모든 변경 사항을 가져오고 싶습니다. 클론을 수행 한 이후로 가장 최신 코드를 사용하여 BigFeatureA에서 계속 작업합니다. (RepoA의 현재, 개발 및 마스터 브랜치는 동일하지만 당연히 그렇지 않은 경우도 있습니다.) RepoB에서 작업하는 XCode를 사용하여 RepoA 개발 프로그램에서 Pull을 수행했습니다. 나는 갈등을 겪었고, 그것을 풀었다.

이제 RepoB에서 가져온 모든 변경 사항은 "커밋되지 않은 변경 사항"이며 파일은 "M 's"또는 수정되었습니다. 그래서 커밋 메시지 나 RepoA에서 나온 것 중 아무 것도 소스가 변경되지 않습니다. 이것은 내가 기대했던 것이 아닙니다. 이것은 git 워크 플로의 XCode 버전일까요? 아니면 git merge가 작동하는 것입니까?

마지막 워크 플로우는 BigFeatureA가 완료되었을 때 RepoB를 RepoA에 푸시하는 것이 었습니다. 그것을하는 것과 다른 방향으로가는 것 사이에는 차이가 있습니까? 즉, RepoA에 있어야하고 RepoB를 당기는 것입니까?

(자세한 내용은 RepoB에서 "BigFeatureA"브랜치를 만든 다음 RepoA에서 개발 브랜치를 가져온 다음 BigFeatureA 브랜치에서 개발 브랜치로 병합해야 함을 제안합니다. 지점 간 대 리포 간의 병합 차이가 있습니까?)

+0

repoA에 커밋하셨습니까? – Michael

+0

예. RepoB에 넘겨주고 싶었던 버그 픽스가 RepoB에있었습니다. 모두 커밋되었습니다. – morejanus

답변

0

아니요, 이것은 예상되는 동작이 아닙니다. 모든 변경 사항을 수정 된 파일로 남겨 두는 이유는 병합시 "포기"했기 때문입니다.

내가 알지 못했던 정보는 게시 당시에 관련성이있었습니다.> 원래 .gitignore 파일에 .DS_Store를 넣는 것에 대해 모르는 저장소를 만들었습니다. 나는 * .DS_Store를 오랫동안 가지고 있었지만 아마도 그렇게 한 후에 제대로 정리하지 않았을 것입니다. 저장소에 "많은".DS_Store 파일이 있고 .gitignore 파일에 넣은 것처럼 보입니다. "이전에했던 것"이 아니라 "앞으로부터"를 의미합니다.

위와 같이 Xcode는 .DS_Store 파일이 수정되는 것에 대해 불평하고 그 유형의 파일에서 충돌을 해결하는 방법을 알지 못하기 때문에 그냥 포기합니다. 파일이 이미 RepoA에서 삭제되었다는 사실을 처리하지 못했지만 RepoB에서도 삭제해야했습니다. 둘째, 파일 목록에서 .DS_Store라고 했는데도 주 폴더의 .DS_Store가 아니 었습니다. 하나 이상의 .DS_Store 파일이 파일 계층의 어딘가에있었습니다. 그래서 몇 번이나 최상위 레벨의 .DS_Store를 git 명령 행에서 삭제 했더라도 Xcode는 결코 행복하지 않았습니다. 그래서 나는 을 말할 수 없었다 어느 .DS_Store 파일에 대해 이야기하고 있었다. 프로젝트에서 같은 이름의 파일이 여러 개있는 것은 Xcode에서 좋지 않은 것처럼 보입니다.

당신의 계층 구조에있는 모든 .DS_Store가있는 곳에서 SO post을 따르고, 명령 행에서 git rm 명령을 실행 한 다음 git commit 명령을 사용하십시오. 그러면 Xcode 병합이 완료되고 수정 된 파일을 풀에서 가져올 수 없습니다.