他のブランチをチェックアウトせずに現在のブランチを別のブランチにマージするには:
早送りマージ
これは本当に簡単です。定義により、早送りマージは、ブランチポインタがコミットツリーの前に移動することを意味します。だからあなたがする必要があるのは単にそれをシミュレートすることです:
git branch -f master dev
警告:これはmaster
、dev
ブランチまたは他のブランチにあるコミットをポイントすることを前提としています。そうしないと、作業を失うリスクがあります!git merge
早送りが不可能な場合にマージコミットを作成する(または不平を言う)とは異なり、このメソッドは暗黙的にブランチポインターを強制的に別のコミットにポイントします。
これは、あなたがリポジトリで作業している唯一の人である、および/またはあなたが何をしているのかを知っていると仮定しています。
ヒント: aを実行し、にgit fetch
新しいコミットがorigin/master
ある場合は、master
チェックアウトせずにブランチを移動できます。
git branch -f master origin/master
マージコミットによるマージ
これは常に可能であるとは限りません。マージコミットを作成するには、マージ操作を行う必要があります。マージ操作を行うには、現在のブランチにない他のブランチにコミットする必要があります。
あなたがコミット持っている場合はmaster
あるブランチではないにdev
ブランチを、次のことができます。
免責事項:これは単なる概念実証であり、チェックアウトせずに他のブランチへのマージが可能な場合があることを示しています。毎日使用する場合は、シェルリダイレクトを使用してエイリアスを作成するか、シェルスクリプトを作成する必要があります。次に、質問に示した短いプロセス用のシェルスクリプトを作成することもできます。
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
説明:
- 現在のブランチと同じコミットを指す一時的なブランチをチェックアウトします。
master
一時的なブランチにマージし、コミットメッセージエディターを起動します。マージコミットをブランチをにマージしたようにしたい場合は、次のように編集します。dev
master
Merge branch 'master' into temp
これに:
Merge branch 'dev'
ヒント:-m "Merge branch 'dev'"
代わりに-e
を使用すると、処理が速くなります。
master
マージコミットを指すようにブランチポインターを更新します。
dev
ブランチをチェックしてください。
- 一時的なブランチを強制的に削除します。
これはまだ作業ツリーに影響しますが、最小限です。ツリーを元の状態にロールバックmaster
して、開発の変更をもう一度導入することはありません。気にしない人もいれば、重要な人もいます。