問題タブ [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 投票する
1 に答える
322 参照

git - ブランチを元に戻すと、git describe のタグ名が変更されます

ブランチを元に戻す方法を学びました。それはうまくいきます。問題は、マスターのコミットにタグを付け、git describeコマンドを使用して最新のタグに基づいて展開を作成することです。コミットを元に戻すと新しいコミットが作成されるため、git describeコマンドは次のようにコミット修正を含むタグを出力します。

前:

このコミットに「戻る」後:

これを克服する方法はありますか?または、別の方法で最新のタグを取得する必要がありますか?

0 投票する
3 に答える
1060 参照

git - 間違ったマージで履歴を修正する方法

Git に修正できない問題があります。同様のケースを検索しましたが、自分の状況に適した解決策を見つけることができませんでした。

基本的に、master と bugfix の 2 つのブランチがあります。バグ修正は、リリースを行った時点で master から派生します。バグ修正で何かを修正し、バグ修正リリースを行うたびに、それをマスターにマージする必要があります。Master には新しい機能が含まれています (もちろん、バグ修正にマージすることはできません)。誰かが誤って master をバグフィックスとマージしてしまったことがありました。

これに対する解決策は、ここで説明されているように、「git revert -m 1 M」(M はマージからの SHA) で行ったマージを元に戻すことでした。バグ修正ブランチには、失いたくない他の変更が既にあり、これはバグ修正ブランチでうまく機能したため、元に戻しました。

この問題は、バグ修正ブランチを master にマージする必要があるときに発生します。私が投稿したリンクで説明されているように、元に戻すとコードの変更は修正されますが、履歴は修正されません。これは、マスターにバグ修正をマージすると、元に戻すが有効になり、マスター (x1 と x2) から変更が削除されることを意味します。私にできることは、マスターにマージする前に、バグ修正で元に戻すことです。

これは機能しますが、マージを行うたびにこの「元に戻す」を行う必要があるため、最終的な解決策ではありません。数日間、これに対する恒久的な解決策を探していましたが、バグ修正ブランチの履歴からマスター コミット (x1 と x2) を消去するしかないようです。ただし、ここでは例として x1 と x2 を使用しています。実際にはもっと多くのコミットがあり、バグ修正ブランチの履歴を分析することは非常に難しく、エラーが発生しやすくなっています。Git がこれを行うのに役立つことは確かですが、方法がわかりません。

どんなアイデアでも非常に役に立ちます。

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

git - Git: 以前のマージを元に戻した後にフィーチャー ブランチをマージする際の競合を回避する方法

私たちのリポジトリでは、機能ブランチに基づいて機能を開発しています。最近、機能feature/myfeatureをに統合しましたmaster:

このマージの後、この機能に問題があり、統合がブロックされていることが判明するまで、さらに開発が行われたため、このマージを元に戻すことにしました。https://stackoverflow.com/a/6217372/1237653に従って、履歴を壊さずにマージを元に戻す唯一のオプションを選択しました。

その間、さらに多くの開発masterが行われ、作者は修正コミットを追加しました。ここで、機能を統合/マージするために 2 回目の実行を行いたいと考えています。残念ながら、最初の apply & revert が 2 回目の試行とまったく同じコード行に触れるため、今では多数の競合が発生しています。

これらの無意味な競合なしに、以前に元に戻した機能ブランチを再適用するにはどうすればよいですか?

運悪くやってみ-s recursive -Xrenormalizeた。リベースも同じ競合を引き起こします。

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

git - Git revert の失敗 - 回復?

だから私はgithubにマスターとリファクタリングの2つのブランチを持っていました。ローカルでリファクタリングをチェックして、町に行きました。ある時点で、git push origin master元のリファクタリングにプッシュする代わりに失敗して実行し、さらに、さらに有効な変更を master にコミットしてから 2 週間後まで問題に気づきませんでした。

/me フェイスパームス

ボークを解除しようとするために、マスターをローカルでチェックアウトし、git revert <some tag>追加したさまざまなファイルを削除してマスターを修正するなどの作業を行いました。ハッピーエンド!元のマスターにプッシュされ、すべてが順調でした。ローカルのリファクタリング ブランチで作業を続け、ときどきオリジン リファクタリングにプッシュしました。

今日、リファクタリングの最初のパスが完了し、変更をマスターにプッシュしたいと考えています。私git add、、。git commit_ git push origin refactorすべては順調です。次に、オリジンマスターにプッシュしようとします。失敗!驚くべきことではありませんが、悪ふざけのために手動でマージする必要がありますよね? それでgit pull origin master、私はローカルのリファクタリングブランチにいます...そして、すべてが壊れてしまいます。私の新しいファイルはすべて削除され、どこでも競合します。

何が起こっているのかいうと、元に戻すプッシュが適用されようとしていて、マスターの上にきれいに適用されるはずの完全に幸せな変更と競合していると思います。

それで、私はまだgit newbなので、私の跛行を救う方法について何か提案はありますか? 私の将来のワークフローでこのクラスのエラーを回避する方法について、一般的なガイダンス/教育を提供できればボーナスポイント. ありがとう!

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

git - Git は、元に戻したコミット後に作成されたファイルを削除しません

Rails プロジェクトがあり、次の手順を実行しました。

  1. git commit -m "Format gemfile"git pushすべてがきれいであることを確認します。このコミットの ID は b24d101 です

  2. git checkout -b newbranch

  3. 新しいブランチで、ファイルを削除し、他の 2 つのファイルに変更を加え、他のいくつかのファイルを生成しました。

  4. git status2 つのファイルが変更され、1 つのファイルが削除され、いくつかのファイルが追跡されていません。ここまでは順調ですね。

  5. 問題に気付いたので、 を介して master ブランチに戻り、 を介しgit checkout masterて newbranch を削除しましたgit branch -d newbranch

  6. git statusまだ追跡されていないファイルがいくつかあることを示しています。

  7. 前回のコミットに戻ることにしました。

  8. git reset --hard b24d101

  9. git status現在、ファイルが削除または変更されていないことが示されています(実際、手動チェックの後にこれを確認できます。ステップ3から削除されたファイルがあり、ステップ3からの2つのファイルの編集はなくなりました)。ただし、これらの追跡されていないファイルがまだいくつかあります。私はそれらをしたくありません。これらのファイルが作成されたので、git はこれらのファイルを削除することになっていませんか?

PSこれらのファイルを手動で「クリーニング」する必要がありますか?

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

git - マージ中の別の Git ブランチでの復帰コミットの影響を回避する

git フローでの作業。昨日、誤って開発をマスターにマージしてしまった Git に慣れていない同僚がいます。

開発には、次のリリースでリリースされるかなりの数の機能があり、マージ時に元に戻す必要があります。これにより、すべての変更を元に戻すコミットが作成されました。マスターを開発にマージすると、リバート コミットによって機能によって生成されたコードが削除されます。

新機能を維持しながら、開発をマスターのホットフィックスと同期できるようにするための最良の方法は何ですか?

- 編集 - 明確にするために、復帰は復帰でし。IE git revert -m 1 <sha>、コミットは既にリモート リポジトリにプッシュされているためです。

これを投稿して以来、マスターを分岐して復帰を元に戻すことで、可能な修正を考え出しましたが、衝突を最小限に抑える可能性がある他の可能性があるかどうか知りたいです。