在git的高级合并命令中有一个cherry-pick命令,该命令是将指定版本的全部信息(包括提交人、提交时间、提交说明)合并到当前分支
例如:dev分支有一个提交版本6981773,该版本修改了11.txt和22.txt
该版本现在想把该版本合并到baseline,使用命令 git cherry-pick 6981773。
可以看到本次合并是把11.txt和22.txt的修改全部合并到baseline分支。
但是我现在的需求是如果合并版本中存在22.txt的修改,22.txt的修改不允许合并到baseline分支。
怎么办?
1.还是使用cherry-pick命令。
git cherry-pick -n 6981773
注意本次命令中添加了'-n'参数。意思是不自动提交
2.查看本次合并版本中是否存在对22.txt的修改
git status -s
3.从第二条命令中得知本次合并中对22.txt进行了修改,我们要忽略22.txt的修改。
我们要在baseline分支的暂存区中将22.txt的修改reset掉。
git reset HEAD 22.txt
4.此时22.txt已经从暂存区中reset掉了
.
5.将22.txt的修改彻底从baseline分支丢弃
6.再来看暂存区操作文件
7.获取该版本在dev分支的提交信息
git log --pretty=format:提交者:%an,提交时间:%ad,提交说明:%s 6981773 -1
8.使用之前的提交信息,在baseline分支进行重新提交
git commit --author=wang******* --date="Wed Dec 18 16:23:10 2019 +0800" -m "update1122"
9.现在再次查询提交过来的版本信息
提交人、提交时间、提交说明都与原来一样,本次提交中22.txt的修改也已经被忽略掉