web-dev-qa-db-ja.com

特定のコミットまでマージする

私はgitのnewbranchブランチからmasterという名前の新しいブランチを作成しました。今私はいくつかの仕事をしましたそしてnewbranchmasterにマージしたいです。ただし、newbranchに追加の変更を加え、newbranchを最後から4番目のコミットまでmasterにマージしたいと思います。

cherry-pickを使用しましたが、正しいオプションを使用するためのメッセージが表示されます。

git checkout master    
git cherry-pick ^^^^HEAD newbranch

代わりにgit mergeを使用できますか?

git merge newbranch <commitid>
302
Dau

masterブランチに入っているだけで、必要なことは次のとおりです。

git merge <commit-id>

ここでcommit-idは、newbranchブランチで取得したいmasterからの最後のコミットのハッシュです。

git help <command>を実行すると、あらゆるgitコマンドの詳細を知ることができます。その場合それはgit help mergeです。そしてドキュメントはmergeコマンドの最後の引数は<commit>...であると言っています、それであなたはどんなコミットあるいは複数のコミットへの参照も渡すことができます。しかし、私は後者を自分でやったことはありません。

508
KL-7

分岐をきれいに保つために、これを行うことができます。

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

このようにして、newbranchはそれがmasterにマージされたところで終了し、あなたはnewbranch2に取り組み続けます。

7
tkruse

以下のコマンドを現在のブランチフォルダーで実行して、この<commit-id>から現在のブランチにマージします。--no-commitは自動的に新しいコミットを行いません

git merge --no-commit <commit-id>

git merge --continueは、マージによって競合が発生した後にのみ実行できます。

git merge --abort現在の競合解決プロセスを中止し、マージ前の状態の再構築を試みます。

0
ElasticCode