Dau*_*Dau 331 git git-merge git-cherry-pick
我创建了一个名为新的分支newbranch从masterGit的分支.现在我做了一些工作,想要合并newbranch到master; 但是,我已经做了一些额外的更改newbranch,我想合并newbranch到最后一次提交到第四次master.
我用过cherry-pick但它显示了使用正确选项的消息:
git checkout master
git cherry-pick ^^^^HEAD newbranch
Run Code Online (Sandbox Code Playgroud)
我可以用git merge代替它吗?
git merge newbranch <commitid>
Run Code Online (Sandbox Code Playgroud)
KL-*_*L-7 538
当然,在master分支机构所有你需要做的是:
git merge <commit-id>
Run Code Online (Sandbox Code Playgroud)
哪里commit-id是newbranch您希望在master分支中获得的最后一次提交的哈希值.
您可以通过执行操作找到有关任何git命令的更多信息git help <command>.就是那种情况git help merge.并且docs说merge命令的最后一个参数是<commit>...,所以你可以将引用传递给任何提交甚至多次提交.虽然,我自己从未做过后者.
Kir*_*han 13
我发现这是一种非常可靠的合并提交的方法。“源”和“目标”分支永远不会被修改(“目标”分支上的合并除外)。
假设您想要将分支合并src到分支dst,但仅限于特定的提交 IDcommitId
git checkout src
git branch temp commitId # create temporary branch at commitId
git switch dst
git merge temp # merge temp branch to dst branch
git branch -d temp # remove temp branch as we dont need it anymore.
Run Code Online (Sandbox Code Playgroud)
tkr*_*use 10
要保持分支干净,可以执行以下操作:
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
Run Code Online (Sandbox Code Playgroud)
这样,newbranch将在合并到master的地方结束,然后您继续进行newbranch2的工作。
在当前分支文件夹中运行以下命令以从此分支合并<commit-id>到当前分支,--no-commit不要自动进行新提交
git merge --no-commit <commit-id>
Run Code Online (Sandbox Code Playgroud)
git merge --continue只能在合并导致冲突后运行。
git merge --abort中止当前的冲突解决过程,并尝试重建合并前的状态。