svn 及 git patch 文件

来源:互联网 发布:printthis.js用法 编辑:程序博客网 时间:2024/05/20 18:19

项目开发中经常会遇到A同事编写的代码需要B同事review,然后由C同事提交,patch文件是一种很好的代码传递方式。

1  svn patch文件操作:

1)      生成svn patch文件

svn status .  #查看当前目录下修改过的文件列表

svn diff . > xxx.patch  #由当前目录下修改过的文件差异,生成xxx.patch文件

svn diff file1 … fileN > xxx.patch  #选取file1 ~ fileN的差异,生成xxx.patch文件 

2)      应用patch文件

svn patch patchfile[patch]  #可以通过svn patch –help 查看说明

3)      从提交记录中生成patch文件

svn log . –v –r revNo  #查看revision revNo中修改的文件列表

svn log . –diff –r revNo > xxx.patch #查看diff信息,类似git log –p

4)      取消补丁

svn revert . –depth infinity (对当前目录修改的文件全部执行revert) 或svn revert file1 … fileN

对于用svn tortoise的童鞋可以用svn create patch及svn apply patch生成和应用patch文件,也很方便。

2  git patch 操作

1)      生成patch文件

git status .

git diff > xxx.patch  或 git diff file >xxx.patch  #由差异生成patch文件

git diff –cache > xxx.patch   #只生成stage的文件patch(即git add之后的,unstaged的不算)

2)      应用patch

git apply –check xxx.patch #查看能否patch成功,不应用patch

git app patch #应用patch

3)      从提交记录中生成patch文件

git format-patch –n 节点N [-mbranch] #n表示生成提交节点最近的n次提交,一般取n=1,可以生成当前提交节点的patch文件,[-m branch]表示与哪个分支比对

git am xxx.patch #合入patch并执行git commit

4)      取消补丁:

git reset –hard origin/master

         另外,使用git 合入补丁时常常要同步下git库代码,这时可以用gitstash 将修改入栈,然后使用git pull更新代码,更新完后再使用git apply patch 合入补丁,合入后可以用git pop 恢复之前的修改。

1 0