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


373

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

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

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

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

git merge newbranch <commitid>

回答:


593

確かに、masterブランチにいる必要があるのは次のとおりです。

git merge <commit-id>

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

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


30
単一のコミットだけでなく、それ以前のすべてのコミットcommit-id
Dau

53
はい、それはからすべてのコミットをマージしますnewbranchその歴史から分岐した時間以降masterまでcommit-idmaster支店。git merge <commit-id>で終わる名前のないブランチをcommit-id現在のブランチにマージすると考えることができます。
KL-7

2
コミットIDを使用して、マスター以外の2つのローカルブランチ間でマージできますか?
2017年

1
@sktは、使用する前にマージしたいローカルブランチにいることができますgit merge。つまりはあなただけで行う分岐B1に分岐B2から18a6facコミットマージしたいと言うgit checkout b1; git merge 18a6fac
XioRcaL

1
これは私が枝の午前なら、私はにマージしたいとコミットABとCと他のいくつかの分岐がね、と私はそれが唯一のCではなく、AとBで行われた変更を取得し、Cにマージし、動作するようには思えません
ggb667

12

ブランチをクリーンに保つには、次のようにします。

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はマスターにマージされたところで終了し、newbranch2での作業を続けます。


1

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

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

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

git merge --abort 現在の競合解決プロセスを中止し、マージ前の状態を再構築してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.