2014-10-29 3 views
2

두 개의 브랜치, masterworking이있는 자식 폴더가 있습니다.'치명적 : 참조가 나무가 아닙니다 : 마스터'에서 어떻게 복구 할 수 있습니까?

내가 설명하지 못할 이유

나는 git branch 명령을 실행할 때, 나는 3 가지를 얻을 :

  • desktop.ini
  • master
  • working

working 지사가 최신 (리셋 후), 내가 원하는 것을 가지고있다.

desktop.ini 브랜치가 존재하지 않아야합니다. 내가 달릴 때

git branch -d desktop.ini 

그것이 존재하지 않고, 삭제 될 수 없다라고 말한다. 또한 체크 아웃 할 수 없습니다. GOO 저장소에는 각 폴더에 desktop.ini 파일이 있습니다. 저장소는 Google 드라이브 폴더이므로 저장소가 저장됩니다.

그러나 주요 문제는 더 이상 master 분기에 액세스 할 수 없다는 것입니다. 내가 시도 할 때마다

git checkout master 

나는

fatal: reference is not a tree: master. 

내가 그것을 삭제하려고하면, 나는

error: couldn't look up commit object for refs/heads/master 

수동으로이 파일이 올바른 디렉토리에 존재 확인하고,이 데 얻을 돌아가 그 안에있는 머리.

또한 새로운 master 브랜치를 만들려고했지만 "master"라는 브랜치가 이미 존재한다고 들었습니다. 마지막으로, git log를 실행하는 가장 최근의 커밋 준 다음

error: could not read c7d68...blah blah 
fatal: failed to traverse parents of commit aed8af..... 

master 분기를 인공 호흡의 쉬운 방법이 있습니까?

업데이트 : 작업 분기에서 마스터 분기로 헤드를 복사 했으므로 마스터에 다시 액세스 할 수 있습니다. 그러나 모든 git status 반환

error: could not read c7d68..... 
error: could not read c7d68..... 
fatal: Failed to traverse parents of commit aed8...... 

내가이 문제를 해결하기 위해 행동해야합니까?

+0

'git fetch --unshallow'을 해 보았습니까? – Erwin

+0

'git show-branch'는 무엇을 보여줍니까? –

+0

@BobMazanec''git show-branch'는 "error : refs/heads/master가 유효한 객체를 가리 키지 않습니다"라는 결과를 나타냅니다. 동기화하는 Google 드라이브가 문제 일 수 있나요? 그렇다면 문제를 해결하기 위해 작업 분기 헤드의 내용을 마스터 헤드에 복사 할 수 있습니까? @pyerwin : 그쪽 명령은 무엇을합니까? 나는 Git의 전문가이며 GOOGLE은 많이 켜지지 않았다. – Mauvai

답변

1

오늘 아침에이 문제가 발생했습니다. 제 경우에는 Windows 호스트에서 Ubuntu VM을 실행하고 있습니다. Ubuntu VM은 개발에 사용되지만 실제로 작업중인 파일은 실제로 호스트 OS에서 공유되는 디렉토리에 있습니다. Windows는 할 일이 없으므로 .git 디렉토리와 모든 하위 디렉토리를 포함하여 공유 디렉토리의 모든 디렉토리에 desktop.ini 파일을 추가합니다. 힘내는 제 3자가 내용을 조작 할 것으로 기대하지 않는 곳에서이 파일들을보고있다. 그래서 "git branch"를 실행하면 질문자와 매우 유사한 목록을 얻게됩니다.

여기서 핵심은 분명히 실제 분기가 아니라는 것입니다. 그것들은 Git이 어떤 브랜치가 있는지 찾기 위해 디렉토리 내용의 간단한 열거를 할 수 있기를 기대하고있는 곳의 파일 일뿐입니다.이 새로운 desktop.ini 분기를 삭제하는 것과 같이보다 실질적인 것을하려고하면 실제 분기가 아니기 때문에 실패합니다.

Windows에서 .git 디렉토리 구조에 추가 된 모든 desktop.ini 파일을 삭제하면 매우 간단합니다. 내가 그랬을 때, 유령선이 사라졌고 모든 것이 잘 동작했다. (git-flow가 .git/refs/release 파일을 현재 배포판의 현재 릴리스로 보았 기 때문에 내 경우에는 git-flow가 망가져 버렸다.) Windows 호스트 파일 시스템에서이 파일을 계속 호스팅하면 이러한 문제가 다시 발생하기를 기대합니다 ...이 문제를 방지하기위한보다 영구적 인 방법이있을 수 있지만 아직 얻지 못했습니다.

+0

길고 오래 간 파일이 길어서 확인할 수 없지만 대답 해 주셔서 감사합니다. 마음에! – Mauvai

관련 문제