問題タブ [git-rerere]
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.
git - Bitbucket: プル リクエストに rerere を自動的に使用する
私は Bitbucket を初めて使用し、プル リクエストに rerere を使用する方法を見つけようとしています。
管理者として、誰かが実際にプル リクエストでブランチをマージしようとする前に、すべてのブランチをマージしたいと考えています。マージの競合の原因となるブランチを見つけた場合は、事前に解決し、rerere で解決策を保存できます。解決策を BitBucket サーバーにコピーできれば、理論的には競合を自動的に解決できます。
ただし、次の問題があります。
- BitBucket がマージを行う場所がわかりません
- やったとしても、rerere で自動コミットできる設定がありません。(コマンドラインから役立つこの回答を参照してください)
rerere を適用するために必要なコマンドを実行できるプル リクエストに何らかのフックを追加する方法があるかどうか疑問に思っています。
git - git rerere 手動解決のみ
git rerere
競合の解決策を喜んで保存し、同じ競合が再び発生したときにそれらを自動的に適用します。
ただし、自動マージしたくない別のコンテキストでマージの競合が発生することがあります。
git rerere
競合解決を記憶させる方法はありますが、git rerere
それらを適用するには明示的な呼び出しが必要ですか?
明確にするために、私はgit rerere clear
orを探しているgit rerere forget
のではなく、単に、明示的に指示されない限り、マージの競合を自動的に解決しません (適用する前に提案された解決策を表示できる場合はボーナスです! )
git - git rerere の解決を監査するにはどうすればよいですか?
バックグラウンド
現在、git rerere を有効にしてマージの競合を解決しています。git status
は、マージされていない 1 つのパスを示しています。ファイルを表示すると、競合を特定するマーカー<<<<<<< HEAD
または>>>>>>> <SHA>
マーカーはありません。これは、rerere がその作業を完了し、過去に行った方法に従って競合を解決したことを示しています。
rerere の決議が正しいことを確認したいと思います。
私が取り組んでいるマージ プロセスは、Linux カーネルに貢献する複数のリモートを含む非常に複雑です。昨日、競合を特定し、メンテナーに通知し、結果の (確実に壊れた) カーネルを破棄することを目的として、いくつかのリモートのテスト マージを行いました。そうしている間、私は次のリモートに移動するためだけにいくつかの不注意な競合解決を行い、git rerere forget <pathspec>
完了後に競合するすべてのパスを呼び出しました。これには、現在扱っているものも含まれます。rerere にこのパスを忘れるように言ったので、なぜこの実行で何かが解決されたのかわかりません。また、結果が正しいかどうかを気にしない昨日行った修正が適用されたのではないかと心配しています。
質問
解決策が適用された後、どの競合が解決されたかを確認する方法はありますか?
まだ完全に自動化されていない長いプロセスであるため、マージの再開は避けたいと思います。あと、昨日リレレにこの道を忘れろと言おうとしたのに、今日も解決策が適用されたので、git rerere forget <pathspec>
最初に失敗した理由を見つけないと同じ立場になってしまうと思います。
関連する質問リベースで行われたgit
rerere の解決を元に戻す <-- ソリューションにはマージの再起動が必要 <-- 議論のみ
git rerere forget <pathspec>
フォローアップ メモ/質問
パス指定なしで
入力しようとgit rerere forget
しましたが、これは推奨されていないことを認識していますが、正しく理解していれば、すべての解決策を忘れてしまうはずです。マージを再実行しましたが、ファイルに解像度が適用されました。また、rerere を完全に無効にして 3 回目のマージを実行したので、競合を確認できました。rerere は、昨日行った中途半端な解決策を実際に適用していました。forget
再利用したくない解決策が正しく破棄されないのはなぜですか?
git - rerere: 「自動解決」後に元の競合を表示する方法は?
マージ後、次のログを取得します:
この後、このマージの競合がどのように解決されるかを確認できます。
しかし、元のマージの競合を表示するにはどうすればよいですか?
man git rerere
そのようなコマンドはないようです
git - 競合しないファイルをカバーする Git rerere と解決策
以下の状況を経験しました。
とのマージ中に競合が発生しましたgit rerere enabled
。
競合するファイルは修正しましたが、競合していない他のファイルも調整する必要がありました。
触れたすべてのファイルが追加され、コミットされました。git rerere
決議を記録したと述べた。
その後git pull --rebase=preserve
、マージの競合が繰り返され、git rerere が助けになりました。
ただし、競合するファイルの解決の一部のみが適用され、他のファイルの変更は適用されませんでした。
rr-cache を一目見ただけで、他の変更が記録されていないことがわかります。
git rerere は、直接競合するファイルの変更のみを記録し、他には何も記録していませんか?
競合するファイルだけでなく、解決中のコミットで行われたすべての変更を記録するオプションはありますか?