2017-10-21 2 views
0

Visual Studio Premium 2013 업데이트 5를 사용하여 여러 프로젝트로 구성된 솔루션을 관리하고 있습니다. Visual Studio Online에 대한 저의 마지막 커밋은 10 월 18 일 저녁이었습니다. 내 컴퓨터가 19 일 아침에 재부팅되어 많은 Microsoft 업데이트가 설치되었습니다. 나는 19 일에 약간의 개발 작업을 수행했다. 변경 사항을 적용하려고 할 때 솔루션 탐색기에서 솔루션을 마우스 오른쪽 단추로 클릭했을 때 커밋 옵션을 사용할 수 없다는 사실을 알게되었습니다.Visual Studio 2013에서 더 이상 Visual Studio Online에서 Git을 사용하여 변경 내용을 추적하지 않습니다.

커밋을 수행 할 수없는 이유를 조사한 결과, 다음과 같은 동작이 나타났습니다. 파일을 열고 변경 한 다음 빨간색 체크가 파일 이름 옆에 나타나면 포함 된 변경 사항 아래에 파일이 나타납니다. 파일을 저장하면 빨간색 체크가 사라지고 파일이 Included Changes에서 사라집니다. Git이 추적하는 변경 사항이 없으므로 Visual Studio Online에 커밋 할 내용이 없습니다. 또한 팀 탐색기 - 연결 관리 - 로컬 Git 저장소 섹션에서 프로젝트의 Git repo (/ Portal)가 누락 된 것으로 나타났습니다.

Visual Studio 2015 Ultimate Update 3을 사용하여 다른 솔루션을 열었고 연결 관리에서 내 힘내 저장소 (/ Portal)를 발견했습니다. 나는 Git Status를 할 수 있었고 다음과 같은 문제점을 발견했다. 아래 이미지를 참조하십시오.

Command Prompt

내 망할 놈의 repo (/ 포털) 실종 된 이후, 나는 앞서 갔다는 2013 년 비주얼 스튜디오는 새로운 망할 놈의 repo (/ 포털 2)을 생성 비주얼 스튜디오를 사용하여 솔루션을 다시 복제 된 그리고 지금 내 표시 원래 repo (/ Portal)도 있습니다. 최근 변경 사항이 포함 된 변경 사항에서 누락되어 여전히 올바르게 작동하지 않습니다.

이 단계에서 손상된 파일이 문제인지 또는 몇 달 전에 다운로드되었지만 19 일 또는 20 일에 설치된 것으로 보이는 업데이트 5가 문제인지 여부는 확실하지 않습니다.

UPDATE 1 :

자식으로 fsck를 실행하도록 요청했다. 결과는 다음과 같습니다.

Command Prompt showing git fsck results

UPDATE 2 : code_fodder 주석에

을 바탕으로, 내가 나서서 새로운 REPO (/ 포털 2)를 사용하여 코드 변경을 테스트했다. 그것은 예상대로 작동합니다. 파일을 변경했는데 파일을 저장 한 후에도 빨간색 체크가 계속 표시됩니다. 나는 또한 Git Status를 실행했고보고 된 문제는 없었다.

UPDATE 3 :

마지막 문 (원점 주 -u 자식 푸시는) 다음과 같은 오류가 발생합니다.

Command Prompt showing git push -u origin share

공유 지점뿐만 아니라 망할 놈의 UI에서 누락되었습니다.

Git UI image showing only the Master branch

어떤 도움

이 많이 감사합니다.

+0

'git fsck'를 실행 해 보셨습니까? –

+0

방금 ​​실행했습니다. 업데이트 1을 참조하십시오. 감사합니다! –

+0

필자는 항상 시각적 인 스튜디오 통합이 약간의 용의자라고 생각했습니다. 커맨드 라인에서 다시 복제 할 수 있습니까? "git clone '을 입력 한 다음 git status를 시도하십시오 ... –

답변

1

개체가 손상된 후에 파일을 변경하지 않은 경우 로컬 repo (/ Portal)를 복구 할 수 있습니다.아래 상세 단계 :

#In the directory for Portal 
rm -rf .git 
git init 
git remote add origin <repo URL> -f 
git reset origin/share 
git add . 
git commit -m 'recovery the last commit before the repo corrupt' 
git push -u origin share 

이제 마지막으로 변경 복구 및 원격 share 지점에 푸시되었습니다.

참고 : 로컬 master 분기를 실제로 추적합니다. origin/share 분기입니다. 일을 더 쉽게하려면 로컬 mastershare으로 바꿔 git branch -m share으로 바꿀 수 있습니다. 그리고 원격 master 지점의 기록을 확인하려면 git checkout master을 사용할 수 있습니다.

그리고 복구는 원격 커밋과 관련없이 가장 최근 커밋의 맨 위에 있습니다. 아래 그래프와 같이 설명하십시오 :

변경 내용을 커밋하려고 시도 할 때 로컬 저장소가 손상되기 전에 커밋을 A으로 가정하십시오. B. 그 후에도 리모컨 리로드에 새로운 변경 사항이 있습니다. C. 다음과 같이 원격의 repo에 커밋 역사 : 위의 명령을 실행 한 후

...---A---C share 

, 회복은 B' 최신의 상단에 C을 커밋합니다 커밋합니다. 따라서 커밋 내역은 다음과 같습니다 :

...---A---C---B' share 
+0

그건 "깨진"자식 repo 주위 해결하는 영리한 방법입니다 +1 :) –

관련 문제