2016-11-11 3 views
0

私はmasterとdeveloperのブランチを持つgitリポジトリを持っています。
私のブランチはbranch1と呼ばれています。
私のレポにはmyfolderというフォルダがあります。私はbranch1にあったと私はgit double checkout、フォルダの内容がなくなった

git checkout master 
git checkout branch1 

myfolderをした、これが起こったか、(原文のまま)今空になって?

myfolderは、問題の原因と思われる.gitignoreに含まれていますが、その理由はわかりません。また、そのコンテンツを復元する方法はありますか?

+0

あなたは何をしたのですか?コンテンツを含むフォルダがありましたが、ブランチを切り替えるとコンテンツはなくなりましたか? – CodeWizard

+0

ありがとうございました。時刻0で私はbranch1にいます。私は最初に習得してから支店1にチェックアウトするので、私はどこに戻ってきますか。ただし、処理中にフォルダの内容が消去されます。 – Manfredo

答えて

0

状況のご説明や、あなたの観察に基づいて、私は次のように推測:

  1. master支店では、フォルダmyfolderは、リポジトリの一部です。
  2. branch1ブランチでは、フォルダはリポジトリの一部ではなく、.gitignoreルールを使用してGitから除外されています。

だから、branch1で始まりますが、そのフォルダは存在しますが、Gitでは無視されますので、Gitはその内容について知りません。今度は、masterブランチに切り替えます。そのブランチはそのフォルダの内容を追跡します。それに切り替えると、Gitは(非追跡)ローカルファイルの内容とmasterブランチの内容を比較します。どんな違いにも遭遇しないので、ブランチをチェックアウトするときに矛盾がないので、うまく動作します。

あなたはmasterブランチで終わり、myfolderというフォルダになります。今度はbranch1に戻ります。myfolderフォルダーは、ブランチの一部ですが、これはオフに切り替わりますが、branch1ブランチには存在しません。だからGitはそれを削除します。これで、そのフォルダなしでbranch1になります。

残念ながら、Gitは、コミットされていないコンテンツを失う可能性があることを検出すると、通常はチェックを行わずに内容を上書きするように見えます。これは、ルールを無視するためです。ですから、私は恐れています。前回のコミットされていない状態から正確な内容を復元することはできません。あなたはmasterにあるものだけを持っています。

+0

説明をいただきありがとうございます。間違いなく意味があります。私は今、gitに対してn回目に泣くつもりです。 – Manfredo

関連する問題