我使用以下命令创建了一个测试存储库
mkdir test-repo
cd test-repo/
git init
我在目录中创建了一个文件并提交了更改
echo 0 > file.txt
git add file.txt
git commit -m '0'
我做了一个新的发展分支
git checkout -b A
文件现在在分支A中更改,在下一行中添加了“1
file.txt
0
1
承付分支A
git add file.txt
git commit -m '1'
在“A”中添加了一个空的新文件file1.txt。然后提交
git add file1.txt
git commit -m 'new file'
现在,reflog命令显示为
76633b7 (HEAD -> A) HEAD@{0}: commit: new file
070f015 HEAD@{1}: commit: 1
dfab60f (master) HEAD@{2}: checkout: moving from master to A
dfab60f (master) HEAD@{3}: commit (initial): 0
现在我想把分支A合并到master,只需要提交'76633b7'(最后一个)。我不想把'commit:1'(070f015)合并到master。我该怎么做?. git merge A会把所有修改提交到master。
4条答案
按热度按时间uqcuzwp81#
有两种情况。
1)你只想合并最后一次提交(76633 b7)到master. -在这种情况下,只需执行以下操作
2)你想从分支A在主除了倒数第二个提交的一切。-这是一个小技巧,你必须这样做的情况下
现在你的第二次提交在最上面,你想合并的所有东西都在第二次提交之下。
ii)现在你可以简单地使用你第一次提交的提交id来合并(现在是第二次)
rjee0c152#
您可以提供修订版本的id给cherry-pick(如前所述),但如果您要求cherry-pick *a分支 *,则只有最后一个修订版本会被cherry-pick,因此这也可以正常工作:
yizd12fk3#
对于这个问题没有直接的解决方案,你的提交
76633b7
依赖于提交070f015
,理论上可能取决于你在那里做了什么。您可以做什么:
现在B分支只包含你想合并到主分支的提交。
bbuxkriu4#
为了合并来自另一个分支的最新提交,你可以使用cherry pick,后面跟着你想要挑选最新提交的分支名称。
https://git-scm.com/docs/git-cherry-pick#_examples 在master分支的顶端应用由提交引入的更改,并使用此更改创建一个新的提交。
我尝试使用
git cherry-pick commitid
,但这样我得到错误:commit commitid is a merge but no -m option was given.
然而,通过使用cherry-pick分支名称,我能够成功地将最新提交合并到分支中。