2017-10-21 21 views
0

私はVisual Studio Premium 2013 Update 5を使用していくつかのプロジェクトからなるソリューションを管理しています。 Visual Studio Onlineへの私の最後のコミットは10月18日の夜でした。私のコンピュータは19日の朝に再起動し、Microsoftの更新プログラムをインストールしました。私は19日にマイナーな開発作業を行った。変更をコミットするとき、ソリューションエクスプローラでソリューションを右クリックしたときに、コミットオプションが利用できなかったことに気付きました。Visual Studio 2013はVisual Studio OnlineでGitを使用して変更を追跡していません

私がコミットできない理由を調査したところ、次のような動作に気付きました。ファイルを開いて変更を加え、ファイル名の横に赤いチェックが表示され、ファイルが[変更を含む]に表示されます。ファイルを保存すると、赤いチェックが消え、[Included Changes]からファイルが消えます。 Gitによって追跡される変更はないので、Visual Studio Onlineにコミットするものは何もありません。私はまた、プロジェクトのGitリポジトリ(/ Portal)がチームエクスプローラ - 接続の管理 - ローカルGitリポジトリセクションにないことにも気付きました。

は、私は、Visual Studioの2015アルティメットアップデート3を使用して、別のソリューションを開いて、私は接続の管理の下で、私のGitのレポ(/ポータル)を気づきました。私はGit Statusを実行することができ、次の問題を発見しました。下の画像を参照してください。

Command Prompt

は私のGitのレポ(/ポータル)欠けていたので、私は先に行ってきました2013年のVisual Studioは、新しいGitのレポ(/ポータル2)を作成したのVisual Studioを使用して再度ソリューションをクローン化し、それが今の私を示してい元のリポジトリ(/ Portal)も同様です。私の最近の変更はまだ「Included Changes」から抜けているので、まだ正しく動作していません。この段階で

は、私は、破損したファイルはヶ月前にダウンロードされた問題や場合アップデート5、ですが、19日または20日に設置されているような問題であるかはわかりません。

更新1:

git fsckを実行するように求められました。ここに結果があります。

Command Prompt showing git fsck results

UPDATE 2:code_fodderのコメントに基づいて

、私は先に行って、新しいレポ(/ポータル2)を使用してコードの変更を行うテストしました。それは期待どおりに動作します。私はファイルを変更しましたが、ファイルを保存した後も赤いチェックが表示されました。私もGitのステータスを実行し、報告された問題はありませんでした。

UPDATE 3:

最後のステートメント(起点シェア-u gitのプッシュ)は、次のエラーを生成します。

Command Prompt showing git push -u origin share

シェア支店は、同様にGitのUIから欠落しています。

Git UI image showing only the Master branch

すべてのヘルプははるかに高く評価されます。

+0

'git fsck'を実行しようとしましたか? –

+0

私はちょうどそれを実行しました。アップデート1をご覧ください。ありがとう! –

+0

私は常にビジュアルスタジオの統合が少し疑わしいと感じました。コマンドラインで再クローンできますか? "git clone 'を実行し、git statusを試してみてください... –

答えて

1

オブジェクトが壊れた後、あなたがどのファイルを変更しなかった場合、次のことができ、回復ローカルレポ(/ポータル)バック。今

#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ブランチ。簡単にするために、ローカルmasterからshareへの名前をgit branch -m shareに変更することができます。また、リモートmasterブランチの履歴を確認するには、git checkout masterを使用できます。

リカバリは最新のコミットの一番上でコミットします(リモートリポジトリで問題はありません)。以下のグラフを参照してください。

コミットはコミットとして変更をコミットしようとしたときにローカルリポジトリが破損する前に最後にコミットされたものとします。B。 その後、リモートのリポジトリに新しい変更があったとしてもC。以下のようにリモートレポにコミットの歴史は:あなたが上記のコマンドを実行した後

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

、回復B'は、最新の上にCをコミットしますコミット。したがって、コミット履歴は次のようになります:

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

これは、 "壊れた" git repo +1を回避する巧妙な方法です:) –

関連する問題