2010-07-02 4 views
32

내가 푸시 할 로컬 저장소의 일부 변경 사항을 확인했지만 git pull 할 때 내가 얻을 :git pull이 "병합되지 않은 작업 트리 파일 'blah'가 병합으로 덮어 쓰게됩니다. 그러나 트리가 깨끗합니다.

paul$ git pull 

error: Untracked working tree file 'documentation/Android/SwiftKey/buttons.xcf' would be overwritten by merge. Aborting

내 작업 트리에는 비 추적 파일을 포함하지 않는다 :

paul$ git status 
# On branch master 
# Your branch and 'origin/master' have diverged, 
# and have 2 and 26 different commit(s) each, respectively. 
# 
nothing to commit (working directory clean) 

내가 그것에 대해 불평 파일을 만지지 않는했습니다 것을 커밋합니다.

나는 git reset HEAD --hard을 제안한다는 답변을 읽었지만 내가 만든 커밋에 어떤 영향이 있을지 모르겠습니다.

답변

26

파일을 수정 한 커밋이 아니라 커밋중인 커밋입니다. 추적중인 원격 지점을 검사하여 발생한 상황을 확인합니다. 예를 들어 git log master..origin/master은 마지막에 꺼낸 이후로 발생/마스터에 발생한 모든 커밋을 표시합니다. 위 출력 결과에 따르면 26 가지가 있습니다. --name-status 옵션을 사용하면 파일을 추가 한 커밋이 표시됩니다.

문제가되는 파일의 이름을 바꾸고 끌어서 다시 이동해야합니다 (repo에서 복사본 덮어 쓰기). git diff filename은 다른 사람이 습득 한 내용과 사본이 어떻게 다른지 알려줍니다. 그런 다음 차이를 커밋하거나 git checkout filename으로 버릴 수 있습니다.

최근 커밋을 origin에 리베이스하기 위해서는 git pull --rebase을 사용해야합니다. git status인 경우 이 원점/마스터에서으로 분기되지 않고이 아니라면 밀어 넣을 수 있습니다.

+6

감사합니다. Neil - 답변을 받기 직전에 다른 사용자가 "SwiftKey"디렉토리의 이름을 "SwiftKey"로 바꿨다고 생각했습니다. OSX의 파일 시스템은 대소 문자를 구분하지 않기 때문에 내 문제를 일으키는 원인이되었습니다 :-( –

+3

기록을 위해, 내 변경 사항이 없어서 로컬 트리의 해당 부분을 제거하여 문제를 극복하고 git pull 다음에 체크 아웃 - 내가 이전에 삭제 한 트리 Eugh. –

+1

대소 문자를 구분하지 않으면 많은 문제의 원인이 될 수 있습니다 .Svn에서 같은 일을했는데 무슨 일이 일어나고 있는지 알아내는 것이 어려울 수 있습니다. Mac에서 한 번에 대소 문자를 구분하는 루트 볼륨을 사용해 보았지만 많은 응용 프로그램이 파손되었습니다. 특히 Adobe CS는 대소 문자를 구분하는 볼륨에 설치하는 것을 거부하고 회사의 응용 프로그램 수정을 거부합니다. –

관련 문제