【问题标题】:How do I simply create a patch from my latest git commit?如何从我最新的 git 提交中简单地创建一个补丁?
【发布时间】:2012-03-12 20:47:12
【问题描述】:

我正在寻找用于根据上次提交创建补丁的命令。

我的工作流程有时如下所示:

vi some.txt
git add some.txt
git commit -m "some change"

现在我只想写:

git create-patch-from-last-commit-to-file SOME-PATCH0001.patch

我应该放什么而不是create-patch-from-last-commit-to-file

【问题讨论】:

标签: git patch


【解决方案1】:

一般来说,

git format-patch -n HEAD^

(查看许多选项的帮助),虽然它实际上是用于邮寄它们。 对于一个单一的提交只是

git show HEAD > some-patch0001.patch

会给你一个可用的补丁。

【讨论】:

  • 小心“git show HEAD > some-patch0001.patch”,如果在彩色终端中调用它,它也会将颜色转义序列复制到文件中。
  • 您也可以使用git diff > change.patch。您也可以包含修订范围,它允许您为未提交的更改创建补丁。然而,最大的区别在于它不会包含二进制文件中的差异。更多详细信息,请参阅What is the difference between 'git format-patch' and 'git diff'? 的答案。
  • @hrach 不在 Linux 上它没有
  • 不,因为这不是第一行所说的。 git format-patch -1git format-patch -n HEAD^ 应该可以工作。
  • 谢谢,我不明白它实际上是字母'n',我以为它是一个占位符(格式补丁有'-n'和'-'选项)。
【解决方案2】:

取自@Useless 的答案,您也可以使用不带参数的一般形式进行最后一次提交,并将其放入文件中:

git format-patch HEAD^ --stdout > patchfile.patch

或者,当插入符号必须加倍转义时,对 Windows 用户来说更干净:

git format-patch HEAD~1 --stdout > patchfile.patch

【讨论】:

  • 为我工作 - 谢谢。如果你碰巧使用 Windows 和 Git,你就不得不逃避胡萝卜(我知道令人发指):“git format-patch HEAD^^ --stdout > patchfile.patch”
  • 为了避免 Windows 必须转义插入符号的问题(这使它看起来像一个不同的有效 git 命令),您可以使用 git format-patch HEAD~1 的替代方法。我认为这最终在 Windows 上不会那么混乱。
【解决方案3】:

另一种方式,如果有该特定提交的提交 ID, 你可以使用,

git format-patch -1 {commit-id}

【讨论】:

    【解决方案4】:

    你需要 -p 选项来 git log:

    git log -1 -p --pretty='%b'
    

    【讨论】:

    • 如果您不关心文件开头的电子邮件发件人/日期/主题行,请使用此选项。
    【解决方案5】:
    git format-patch -1
    

    为我做这项工作。

    【讨论】:

      【解决方案6】:

      例如,如果您在 Github 上的分支“branch_name”中推送代码。此分支上的每个提交都将具有单独的 url。点击最新提交。

      1. 在此网址末尾添加 .patch 。所以修改后的 url 看起来像: https://github.com/xyz/lmn-ms/tree/branch_name.patch
      2. 然后复制并粘贴将在步骤 1 中单独出现的整个内容 本地文件并以 .patch 扩展名保存。
      3. 补丁可以使用了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-28
        • 2012-09-05
        • 1970-01-01
        • 2011-07-06
        • 2019-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多