Git 补丁生成与应用

git format-patch 用法参考

git format-patch [(-o|--output-directory) <dir> | --stdout]
           [ <since> | <revision range> ]

There are two ways to specify which commits to operate on.

A single commit, since, specifies that the commits leading to the tip of the current branch that are not in the history that leads to the since to be output.

Generic revision range expression (see “SPECIFYING REVISIONS” section in gitrevisions(7)) means the commits in the specified range.

The first rule takes precedence in the case of a single commmit. To apply the second rule, i.e., format everything since the beginning of history up until commmit, use the –root option: git format-patch –root commmit. If you want to format only commmit itself, you can do this with git format-patch -1 commmit.

git format-patch 与 git diff 的功能比较

功能比较

使用 git format-patch 创建的补丁还将包含有关 commit(committer,date,commit message,…)的一些元信息,并将包含二进制数据的差异。 所有内容都将被格式化为一个邮件,以便它可以很容易地发送。 接收它的人可以使用 git am 重新创建相应的提交,所有元数据将保持不变。 它也可以应用于 git apply ,因为它是一个简单的 diff 的超级集。

git diff 填充的补丁将是一个简单的 diff 与上下文(think diff -u )。 它也可以应用于 git apply 但不会重新创建元数据(因为它们不存在)。

总而言之, git format-patch 对传输 commit 是有用的,而 git diff 对于在两个树之间获得差异很有用。

操作对象比较

git format-patch 用于生成不同 commit 的之间的差异。
git diff 除了生成不同 commit 的之间的差异,还可以生成:“commit 与 index”、“index 与工作区”及 “commit 与工作区”的差异。

参考

What is the difference between ‘git format-patch’ and ‘git diff’?

git-format-patch

git-am

git-diff

git-apply

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值