GitHubリポジトリに問題があります。私はワークフローについて説明します:マージ後のコードが見つからない
開発者は、メインラインブランチからフィーチャー/バグ修正ブランチを作成します。彼らは、変更を要求して元に戻すことができます。彼らは、mainlineブランチからリベースして、動作しているときに最新のアップデートを取得します。リベースした後、彼らは機能ブランチを押します。
2つのプルリクエストは、最近GitHubウェブインターフェースを使用して自動的にマージされました。その後、リクエストのマージの約2日後に、これらのコミットの変更がコード内にないことが発見されました。歴史のなかには、これらの変更が元に戻ったり上書きされたことはありません。マージ自体はコミット履歴には現れず、個々のコミット自体も現れません。しかし、プル要求は正常にマージされました。欠落しているコミットの1つは、チェリーピックで利用できなくなりました。試してみると、致命的なオブジェクトメッセージが表示されます。
歴史の書き換えが起こったと思われます。どのようにしてこれを見つけ出すことができますか?ワークフローに根本的な問題がありますか?
この問題が発生した時点で、reflogを検査しましたか?何が起こっているかについて、そこにいくつかの手がかりがあるかもしれません。一般的には、強制押しは悪い考えです。マージ後にそれらが機能ブランチに強制的にプッシュされた場合、私はマスターブランチ上のコミットを失ってはいけないとは思うが、何が起こるかわからない。誰かが間違ってメインラインに押し込まれてしまった - 何か他の明白な方法が起こることはありません。 – MattJenko
最近Githubにメールを送ったのは、Githubのリポジトリで強制的にプッシュを禁止することができるかどうかを尋ねるために、いくつかのコミット、我々はそれらを回復するために援助を求めるためにGHに連絡することができます。通常、全ての孤立したコミットはGHのreflogとプルリクエストを受けた開発者のローカルリポジトリになければなりません。ガベージコレクションは自動または手動で収集されます。 –
類似のものについてはこちらを参照してください:http://stackoverflow.com/questions/5094524/github-prevent-colaborator-from-push-f GitHubはあまりそれを実装していないようです。将来的には、1)仲介レポを受け取り、物事を受け取り、様々なフックが設定され、Githubにすべて罰金が科せられます。2)中央レポにプッシュできる人数を制限します。週など)。私はこの答えが満足いくものではないかもしれないと知っています。 –