Git を使って自動マージ(automerge)を防ぐには?
質問
Git に自動マージさせることなく、ローカルブランチを master ブランチにマージしようとしています。master にマージさせたいものを「手で選ぶ」ようにしたいのです。
Git の difftool コマンドを使うと、master ブランチに追加したいものを diff して選択することができます。しかし、マージを行うと、Git が自動マージを行うため、事前に選択したものが失われてしまいます。マージの前に変更を master にコミットすることもできますが、そうするのは不自然に思えます。
そして、Gitのmergetoolは、マージによるコンフリクトがある場合にのみ利用可能です。しかし、Gitが自動マージを行う場合、通常はコンフリクトが発生しないので、mergetoolコマンドを実行することができないのです。
更新しました。
私が達成しようとしていることは、悪い習慣であるか、あるいは単に不可能であると思い始めています。つまり、トピック ブランチをマージして、差分から必要なものだけをマージさせることです。そして、追加で、これを履歴に反映させることです。とにかく、私が投稿した質問は、Gitで実験しているときに表面化したものです。
どうすれば解決するの?
マージ処理にGitが関与しないようにし、マージされる各変更ファイルの各行を手作業で選ぼうとしているのでしょう。これは
git cherry-pick
. と同じではありません。
git merge --no-commit
なども役に立ちません。する必要があります。
$ git checkout master
$ git difftool -t kdiff3 local-branch HEAD
の中に
KDiff3
ウィンドウで、左側 (
A
) はあなたの
ローカル-ブランチ
で、右側(
B
) はあなたの
現在のブランチ (master)
.
選択する
Merge | Merge Current File
を選んでください(または同じタイトルのカラフルな菱形のアイコンを押してください)。
その後、各ファイルの diff と競合 (もしあれば) が表示されます。そして、左側か右側かを選択する機能があります (
A
または
B
など)、またはその両方、あるいは手動でマージされたファイルを微調整します。
もうひとつ、あなたのワークフローにはもっと大きな問題があるようです。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] 異なる2つのブランチのファイルを比較する方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[git push] 解決策: ! [リモート拒否] master -> master (受信前のフックは拒否されました)
-
git commit to GitHub エラー、プロンプト ! [リモート拒否] master -> master (pre-receive hook declined) エラー: 失敗しました。
-
解决[email protected]。パーミッションが拒否されました (publickey)。リモートリポジトリから読み取れませんでした
-
コミットメッセージが空だったため、コミットを中止する git commit
-
[解決済み] キーフィンガープリントが原因でHerokuにプッシュできない
-
[解決済み] Git は、省略形のコミット ID が 2 つの異なるコミットを参照する場合に警告を発しますか?
-
[解決済み] SourceTreeを使用して、ビットバケット上にレポを作成せずに、ローカルレポをビットバケットにプッシュするにはどうすればよいですか?
-
[解決済み] Gitでは、これらの言葉はどのような意味ですか?リポジトリ、フォーク、ブランチ、クローン、トラック?
-
[解決済み] Git のプッシュが "non-fast-forward" で拒否されました。
-
[解決済み] Git - 選択したファイルに対して強制的にマージの競合と手動マージを行う方法