赞
踩
git format-patch [commitid] -n
n 表示从指定id对应的commit开始算起n个提交。
eg:
git format-patch xxxx -2
git format-patch [commitid] -1
eg:
git format-patch commitid -1
git format-patch [commitid1] [commitid2]
git diff [commitid1] [commitid2] > 文件名称.diff
$ git checkout -b dev
Switched to a new branch 'dev'
$ git branch
* dev
master
git log
查看提交的历史记录日志。$ git reset --hard 3c5fef11eb9389f3575f8a11dda2deb3b79aa126
HEAD is now at 3c5fef11eb9389f3575f8a11dda2deb3b79aa126 add test.sh
此时执行git log
发现之前的提交历史已经没有了
$ git merge master --squash
Updating 3c5fef1..9fdd76e
Fast-forward
Squash commit -- not updating HEAD
first.c | 7 +++++++
1 file changed, 7 insertions(+)
--squash选项的含义是
:本地文件内容与不使用该选项的合并结果相同,但是不保留待合并分支上的历史信息,也不提交、不移动HEAD,因此需要一条额外的commit命令。其效果相当于将another分支上的多个commit合并成一个,放在当前分支上,原来的commit历史则没有拿过来。
判断是否使用–squash选项最根本的标准是,待合并分支上的历史是否有意义。
$ git commit -m "add a program--printf hello world"
[dev 50dc073] add a program--printf hello world
1 file changed, 7 insertions(+)
此时dev 分支文件与 master 分支一样。
可以用 git format-patch
制作补丁
$ git format-patch HEAD^
0001-add-a-program-printf-hello-world.patch
git apply --check 【path/to/xxx.patch】
git apply --check 【path/to/xxx.diff】
git apply 【path/to/xxx.patch】
git apply 【path/to/xxx.diff】
或者
git am 【path/to/xxx.patch】
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。