meld またはその他の diff ツールを使用してすべてのファイルを手動でマージしたいのですが、Git でこれを行うにはどうすればよいですか?
実行git mergetool
すると、と表示されますno files need merging
。だから、私は衝突がある場合にのみそれを行うことができると思います.
7 に答える
もっと簡単な方法があります:
git merge --no-commit merge_branch
男が言うように:
マージを
--no-commit
実行するが、マージが失敗したふりをして自動コミットしないで、コミットする前にマージ結果を調べてさらに微調整する機会をユーザーに与えます。
同様の質問は、git を使用して自動マージを防ぐ方法ですか?
FractalSpace は、私が役に立つと思う答えを出しました:
$ git checkout master
$ git difftool -t kdiff3 local-branch HEAD
アイデアは、自動マージ ツールの代わりに difftools を使用して、必要なものを手動で選択し、新しいファイルを作成することです。
手動で (おそらく特定のクラスのファイルに対して) マージすることを主張する場合でも、マージ ドライバを定義できることに注意してください。「 Git - 選択したファイルでマージの競合と手動マージを強制する方法
」に具体的な例があります。
そうすれば、マージ ドライバ スクリプトで必要なマージ ツールを呼び出すことができます。
必要な変更を手動で持ち込んだ場所で手動差分を実行した後、私たちの戦略を選択します (TortoiseGit の選択としても存在します)。
から: https://git-scm.com/docs/merge-strategies
マージ メカニズム (git merge および git pull コマンド) により、バックエンドの「マージ戦略」を -s オプションで選択できます。一部の戦略は独自のオプションを取ることもできます。これは、git merge や git pull に -X 引数を与えることで渡すことができます。
私たちのもの
これにより任意の数のヘッドが解決されますが、マージの結果のツリーは常に現在のブランチ ヘッドのツリーになり、他のすべてのブランチからのすべての変更が効果的に無視されます。これは、サイドブランチの古い開発履歴に取って代わるために使用されることを意図しています。これは、「再帰的」マージ戦略に対する -Xours オプションとは異なることに注意してください。
ただし、後で Bitbucket が確認するのは謎です。コミットはマージとして認識されますが、実際にはブランチをマージできません (プル リクエストは解決されません)。おそらく Bitbucket の第一人者がこの問題を解決できる可能性があります。その可視性がないため、ログ/エラーメッセージ-git/TortoiseGitはまったく文句を言いません。