0

これは1回限りのシナリオであるため、これが重複しているかどうかはわかりません。

「ベータ」ブランチがあり、新しい「リファクタリング」ブランチを開始しました。

  1. 「リファクタリング」ブランチで一連のコードを実行しました。
  2. 最新の変更をベータ版からリファクタリングに取り込みました ( git checkout refactor && git pull origin beta)
  3. 変更の準備が整ったので、ベータ版をチェックアウトし、変更をリファクタリングからベータ版に取り込みました。( git checkout beta && git pull origin refactor)
  4. 私のベータ ブランチが最新ではないことに気付いたので、git pull最新のものをベータにプルする必要がありました。
  5. ベータ ブランチが最新の状態git pull origin refactorになったので、最新のブランチがそこにあることを確認するために別のブランチを実行しました (リファクタリングがベータにマージされているという自動コミット メッセージを受け取りました)。
  6. コードをプッシュしました:(

だから今、私は間違っていた2つのことを認識しています:

  1. ステップ 3 では、最初に git pull を実行して、ベータ版の最新の変更セットを取得する必要がありました。
  2. git merge refactorまた、ステップ 3 で、代わりに電話するべきだったことに気付きましたgit pull origin refactor(なぜこれを行ったのかは聞かないでください。今日は月曜日で、すばらしいリファクタリング コードをベータ版にしてテストを開始したかっただけです)。これらのことを両方行っていれば、後の手順は必要なかったことに気づきました。

私の質問は次のとおりです: 技術的には、すべてのコードがそこにあり、問題ないように見えますが、github のネットワーク グラフは非常にファンキーに見えます。代わりに、ベータ版にはリファクタリング ブランチからの私の個々のコミットがすべて含まれています。ばかげたマージをロールバックして、よりクリーンな方法で実行できる簡単な方法はありますか?

を試してみgit checkout beta && git reset --hard beta@{"1 hour ago"}ましたが、問題は、最初に git pull を実行する必要があったときに、マージを発行する前に最新バージョンであったはずのベータ版ではなく、古いローカル バージョンのベータ版になってしまうことです。1 時間前にリモートベータ ブランチgit reset --hard origin/beta@{"1 hour ago"}にリセットしてから? これらの変更をプッシュして、リモート コミットが上書きされたことを確認できますか?git merge refactor

事前に助けてくれてありがとう!リファクタリングが非常に重要なため、「git reset」を使用して何かを行うことをためらっています。また、ベータ版には、私が行っていない保留中の変更がたくさんあるため、リセットを台無しにしてコードを失うことの方が心配です。プルされたリファクタリング ブランチから手動でコミットを元に戻さなければならないことを心配しているよりも.

4

1 に答える 1