問題タブ [git-revert]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
25850 参照

git - Git で一連のプッシュされたマージとコミットを元に戻す (履歴を書き換えずに)

環境

チームメイトの 1 人が、誤っていくつかのコミットをメインの開発ブランチにプッシュしました。私たちは、同じ場所に配置された小さなチームです。当社のリモート リポジトリは、内部サーバーでホストされています。

以下はコミット ログの先頭です (これらのコミットはすべて既にプッシュされています)。

da8b496は、ブランチに保持したかった最後のコミットであるため、develop最後の 5 つのコミットを元に戻す必要がありました。8c29252「機能ブランチ」での作業を継続するために、から新しいブランチを作成しました。

この回答Linusからのこの投稿に導かれて、私は多くのことを試しました。しかし、私が最終的に行ったことが「正しい方法」であるかどうかはわかりません。私が見つけた情報は複雑でした。この特定の問題に対する「最善の解決策」を見つけることができませんでした。

質問

私が選択したアプローチ (以下の詳細を参照) は、履歴を損なうことなく、これら 5 つのコミットを元に戻す良い方法でしたか? 同じことを達成するためのより簡単な、または「より正しい」方法はありますか?

とりわけ、da8b496( git checkout -b new-develop da8b496) から新しいブランチを作成し、現在のブランチを放棄することを検討しましたdevelopが、それは適切ではないと感じました。


やったこと(詳細)

最初に、コミットa78b993および用の新しいブランチを作成しました8c29252。これらのコミットには保持したい作業が含まれており、最終的にはメインの開発ブランチにマージし直すためです。

次に、開発ブランチで問題のあるコミットを元に戻し始めました。

最初にこれを試しましたが、うまくいきませんでした (コミットの一部がマージされているためと思われます):

だから…代わりに、各コミットを手動で元に戻しました。一つずつ:

すべての元に戻した後にログをコミットします。

元に戻した後のグラフ:

私には正しいようです。最後に、保持したくないバックアップ ファイルをいくつか削除します。

現在のステータスはクリーンです:

そして、すべてをリモートにプッシュします。

0 投票する
1 に答える
60 参照

git - 失敗したマージで 2 つの git ブランチをフォークする方法

現在、私のgitリポジトリには次のような状況があります。

ブランチ「branch-1」は、しばらく前にマスターからフォークされました (コミット 5 を参照)。

コミット 0 で、それをマスターにマージしたかったのですが、コミット 1 と 3 の間にマスターで発生したすべての変更が上書きされました。効果的な作成

私の同僚はこの状態で作業を続けることができなかったので、マージ コミットを元に戻しました。したがって、HEAD を 1 と同じに設定しました。使用するコマンドは「git revert -m 2 0」です。

しかし今、私は自分の変更を再びマージしたいと思っています。今度は成功することを願っています。次のようなものを作成する必要があります。

これは、失敗したマージ 0 を回避し、マージ前のクリーンな状態 (元に戻すことで達成したクリーンな状態) に戻る新しいコミット -1 になります。

ただし、2 を HEAD にマージしようとしても機能しません。これは、すでに 0 でマージされているためだと思います。

0 投票する
6 に答える
3228 参照

git - マージ中に元に戻された変更を無視する

以下に説明する私のコミットツリー:

一部の変更はmasterで元に戻されました。ブランチからの変更をマスターにマージして、元に戻したコミットを元に戻す必要があります。

ワンステップウェイは存在しますか?それとも、ブランチをマージする前にマスターするチェリーピック(B)は 1 つだけですか?

PS 最終マスターは次のようになります: (ABCDE) - 順序は重要ではありません

0 投票する
1 に答える
3528 参照

git - git revert いくつかの特定のコミット

問題: ブランチには、望ましくないコミットが混在する良好なコミットがあります。

試みられた解決策:

これが行うと思ったのは、指定されたすべてのコミットを適用し、競合を整理できるようにすることです。

私が今それが起こると思うこと:

  • git はコミット ハッシュ 5 を適用し、その過程で大きな競合が発生します。
  • マージを試み、コードを編集して、より多くの競合の準備を整えます (次のポイントを参照)。
  • git は commit ハッシュ 8 を適用しますが、これはマージで行われた編集と競合します
  • マージを試みます...などなど

質問: 競合の可能性を提示する前に、git にすべての復帰を連続して適用させるにはどうすればよいですか?

0 投票する
2 に答える
67460 参照

git - git から特定のコミットを元に戻す

多くのコミットと多くのファイルを含む git ツリーがあります。ここで、ファイルのみに触れる特定のコミットを元に戻したいと思います。説明する:

ここで、変更を a . IOW は、ファイル内のコミットのみを元に戻します (異なるファイル内の他の中間コミット (数千になる場合があります) を元に戻すことはありません)。これはどのように可能ですか?

0 投票する
1 に答える
62 参照

git - Git リバート後にブランチをマージする方法

これまでの話 - プロジェクト リポジトリには、とりわけ 2 つのブランチがあります -updatemaster. にマージしようとしupdateましたmaster。しかし、ほとんどすぐmasterに (マージ前の) 元の形式に戻りました。revert

つまり、2 つのブランチがあります。個別のコンテンツがあります。mergeブランチを一緒にマスターして更新するにはどうすればよいですか? ブランチマスターは結合された結果を保持していますか?この問題で私を助けてもらえますか?

0 投票する
1 に答える
761 参照

git - 元に戻されたコミットを含むマスターをブランチにマージする方法

初期状態のマスターブランチがあります:

次に、いくつかの変更を行いました。

これは実際には機能ブランチに属しているため、次のように分岐しました。

マスターの変更を元に戻しました(これが最善の方法であるかどうかはわかりませんが、その時点で必要なことを行いました):

次に、機能ブランチにいくつかの変更を加えました。

そして今、マスターをそれにマージする際に問題があります。私が望むのは、 master の将来のすべての変更を TEST ブランチにマージし、機能ブランチの変更を保持できるようにすることです。

コードは既にリモートにプッシュされています。