Git补丁(git patch)的创建与运用 | 您所在的位置:网站首页 › mugen4gb补丁有什么用 › Git补丁(git patch)的创建与运用 |
译者:ginny宁嫣 原文链接 26 October, 2009 怎样创建和运用git patch使用Git创建一个补丁文件(git patch)是很容易的,你需要知道它是分几次做完的。 本文将阐述怎样为你的仓库最近提交的文件创建一个补丁,也会介绍可以怎样在其他仓库中运用这个补丁。 准备工作你可以遵循一些常用的git实践以便更容易地创建补丁。这些不是一定要做的事情,但是能让你的生活更简单。 如果你需要修复了一个bug或者需要创建新的内容,请在分支中进行操作。 如果你想为我的imdb创建一个补丁,首先你需要克隆我的仓库,然后为你将要提交的内容新建一个分支。在这个例子中,我们要为empty poster这个项目做一个虚拟的bug修复工作。 git clone git://github.com/ariejan/imdb.git cd imdb git checkout -b fix_empty_poster现在在新的 fix_empty_poster分支中你可以写测试,更新代码或者做任何你想要修复的工作。 如果你对你的修改满意的话,你就可以提交你的补丁了。例子仅供参考:我假定你已经在fix_empty_poster分支上做了一些工作,但是还没有被合并到主支上。 创建patch好了,现在我已经做了一些工作,看一些fix_empty_poster分支的git log文件: git log --pretty=oneline -3 * ce30d1f - (fix_empty_poster) Added poster URL as part of cli output (7 minutes ago) * 5998b80 - Added specs to test empty poster URL behaviour (12 minutes ago) * aecb8cb - (REL-0.5.0, origin/master, origin/HEAD, master) Prepare release 0.5.0 (4 months ago)在GitX中就像下面那样: 现在可以开始创建一个补丁了!我们需要把两个最新的提交放在一个文件中,发送并使用。因为我们之前已经创建了一个分支,所以我们就不用担心提交到哪里问题了。 `git format-patch master --stdout > fix_empty_poster.patch`上面的方式将创建一个名为fix_empty_poster.patch的新文件,新文件里面有当前分支(fix_empty_poster)的所有的修改,主支中没有这些修改。一般情况下,git会为每一个提交创建一个独立的分支,这不是我们需要的,我们需要的是一个独立的补丁文件。 现在你已经为你所做的修复工作生成了一个补丁,你需要把补丁发送给维护项目的人。 应用补丁谁会应用你刚刚发送的补丁呢? 首先,你可以简单地使用git apply查看补丁中的变化。 `git apply --stat fix_empty_poster.patch`需要注意的是这条命令并没有运用补丁,只是告诉你这个补丁会做什么。在用你最喜欢的编辑器查看之后,你会看到到底做了哪些实际上的改变。 查看之后你突然对使用这个补丁之后会发生什么产生了兴趣。Git允许你在真正运用之前对补丁进行测试。 `git apply --check fix_empty_poster.patch`如果没有发生任何错误,这个补丁就可以使用了。当然,你也可能看见运用补丁之后发生了很多问题。我使用git am 而不是git apply,因为git am允许你停止使用已经运用的补丁,可供以后参考。 git am --signoff < fix_empty_poster.patch Applying: Added specs to test empty poster URL behaviour Applying: Added poster URL as part of cli output好了,补丁已经可以使用了,你的主支也已经更新了。当然你可以再次进行测试来确保没有问题发生。 在你的git日志中,你会发现提交信息中包含了一个“Signed-off-by”的标记,这个标记会被 Github和其他人读取,他们会了解到你在代码中提交了哪些有用的内容。 以上就是所有的内容! |
CopyRight 2018-2019 实验室设备网 版权所有 |