Git にリポジトリがあります。ブランチを作成し、マスターとブランチの両方にいくつか変更を加えました。
その後、数十回のコミットを経て、ブランチの状態がマスターよりもはるかに良いことに気づいたので、ブランチをマスターに「して」、マスターの変更を無視したいと思います。
マスターに変更を保存したくないので、マージできません。どうすればいいですか?
追加情報: この場合、「古い」マスターはすでにpush
GitHub などの別のリポジトリに移動されています。これにより状況はどのように変わりますか?
ベストアンサー1
他の 2 つの回答の問題は、新しいマスターが古いマスターを祖先に持っていないため、プッシュすると他のすべてが混乱してしまうことです。これを実行するには、次の操作を行います。
git checkout better_branch # This is the branch whose commits you want to keep
git merge --strategy=ours master # keep the content of this branch, but record a merge
git checkout master # You want to **lose** all changes on this branch
git merge better_branch # fast-forward master up to the merge
の古いバージョンではgit
、履歴をもう少し明確にしたい場合は、マージコミット メッセージに何らかの情報を追加して、何をしたかを明確にすることをお勧めします。2 行目を次のように変更します。
git merge --strategy=ours --no-commit master
git commit # add information to the template merge message
新しいバージョンの git では、git
は自動的に git メッセージ エディターを開きます。(または を使用することもできますgit mere --strategy=ours master -m "Keeping better_branch"
)