1. 程式人生 > >Git 補丁生成與應用

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 與工作區”的差異。

參考