master ブランチには、次のファイルとフォルダーがあります (簡略化)。
C:\Local\TickZoom\Project>ls
file.txt name.txt public
パブリック ブランチはベンダー リポジトリを追跡しており、サブツリーは上記のマスター ブランチのパブリック フォルダとしてマージされています。public には 3 つのフォルダーのみがあります (簡略化)。
C:\Local\TickZoom\Project>ls
platform providers www
パブリックからマスターに切り替えると、正しく動作します。
ただし、マスターからパブリックに切り替えると、奇妙なことが起こります。両方を組み合わせたすべてのファイルとフォルダーがあります。
C:\Local\TickZoom\Project>git checkout public
C:\Local\TickZoom\Project>ls
file.txt name.txt public
platform providers www
ただし、gitステータスを確認すると、何も変更されていません。
「git reset --hard」が公開を修正することを発見しました。
手がかり: これは、マスターに新しいコミットを行った後にのみ発生するようです。git はある種の自動マージを行いますか?
「git reset --hard」の後、master へのチェックアウトと public への戻りは、繰り返しても問題なく動作します。
最初は直ったと思っていたのですが、次の変更でまた発生しました。確認のためにもう一度試してみましょう...
今、私はそれを再現することはできません。しかし、それは2回起こりました。
もう 1 つの手がかりは、初めて git reset --hard を実行したときに、ファイルがプロセスによってロックされていると不平を言ったことです。
問題のあるプログラムが閉じられた後、git reset --hard が成功し、2 つのブランチ間でチェックアウトが機能しました。
ファイルがロックされてチェックアウトが混乱し、「黙って」失敗するのでしょうか? 成功を報告してワークスペースがごちゃごちゃになっているだけでなく、 git reset --hard と同じように失敗するのが問題です。
これを回避するために git checkout に設定するその他の知恵やオプションをいただければ幸いです。
ウェイン