3

これがすでに尋ねられている場合はお詫び申し上げます。私は Git に関する古い SO の投稿をかなり長い間調べましたが、このケースに本当に一致するものはまだ見つかりませんでした。

プロジェクトで Git を使用している 5 人の開発者のチームに所属しています。約1年間、実際の問題なく使用しています。Gitosis を共有サーバーにセットアップし、ほとんどの作業を master ブランチで行いますが、新機能などのために頻繁にサイド ブランチに分割しています。

今週、私たちのマスター ブランチで、私には理解できない奇妙な動作が見られました。実際にコミットが失われ、開発者が再修正し、既に行われた変更をやり直さなければならない動作です。初めてそれを見たとき、私はそれを人為的ミスだと思い込み、思ったように master ブランチにプッシュしていなかったと思いました。もう少し情報を集めることができた問題を 2 回目に見たときは、システムが混乱しているか、開発者の 1 人が誤って git に理解できないことをするように指示したようです。

これが私たちが見ているものです: git ログを見ると、すべてのコミットを見ることができます。それらは順番に並んでおり、コミットの差分はすべて正しいです。ただし、ファイルの現在のバージョンを見ると、最近のコミットのすべての変更が含まれているわけではありません。IE、ログにはコミットが表示されますが、ファイルにはそれらのコミットが含まれていません。Web インターフェイスでファイル履歴を見ると (GitWeb を使用していると思います)、GitWeb が最新のファイルが最新のファイルと同じではないことを認識していることは明らかです。つまり、最新のコミットの隣に、「diff to current」というリンクが追加されます。2 つまたは 3 つのコミットをさかのぼると、「現在との差分」リンクがないため、ファイルの現在のバージョンがログ/最新のコミットより数コミット遅れていることは明らかです。

1) どのように/何が原因でしょうか? 誤ったコマンドでこれを自分で行った場合、将来それを回避する方法を理解したいと思います。

2) どのように修理できますか? 私の推測では、最新のコミットを明示的に取得することはできますが、そうすることで、同様の方法で他のファイルの作業を失うことはないと誰が言えますか。この時点で何が失われたのか本当にわからないので、全体がかなり不安です.

アドバイスをありがとうございました。

4

1 に答える 1