我刚刚开始将 Git 与 Mercurial 一起使用来熟悉 Git。

我广泛使用 Mercurial 中的 mq 扩展来管理本地补丁,并且我正在寻找 Git 等效项。

我应该只使用 Git 分支吗?或者是否有更好的方法来管理本地补丁,以便轻松应用和删除补丁?

谢谢,

有帮助吗?

解决方案

查看“补丁管理接口层”部分 接口、前端和工具 Git Wiki 上的页面。列出了两个补丁管理接口,大致相当于Mercurials 'mq' 扩大:

  • 圣胃肠病 (Stacked Git),两者中较旧的,用 Python 编写,使用两个快照来表示补丁
  • 有罪 (以前称为“gq”),以一系列 bash 脚本编写,系列文件和补丁(每个文件一个)存储为纯文本文件。
  • pg (Patchy Git) 是 已弃用, ,并且不再维护。

但如果你不需要更高级的用法,你可以使用“git rebase --交互式" 重新排序、挤压和分割补丁。要根据上游的当前版本管理您的分支,“git rebase”通常就足够了。

其他提示

免责声明:我不是汞的用户,所以我看了一下汞柱,但没有使用它的很多第一手经验

混帐提供了几个非常强大和灵活的工具,在“补丁队列”式管理分支机构因此对于很多基本的(甚至一些相当复杂的)使用的情况下,本地Git是足够强大的。

典型地,大多数项目保持中央稳定主分支仅获得新提交和从不“倒带”所以犯主分支是固定的。

在这个维护人员(或显影剂)的顶部可以保持一个或工作进行中的补丁多个流体分支(即提交),其是基于稳定分支。

典型补丁管理活动包括:

衍合贴剂队列到最新的稳定分支 - 使用git rebase

复制补丁队列到旧maintentance分支 - 使用git branchgit rebase

在队列重新排序的修补程序 - 使用文本编辑器来重新排序队列使用git rebase --interactive(又名git rebase -i

挤压补丁 - 使用git rebase -i与壁球指令

改变贴片或贴片提交消息。 - 使用git rebase -i(?现货主题)与所述编辑指令

这改变以任何方式的贴片(即其内容,描述或亲子关系)的任何活动将创建一个新的提交ID为补丁一个新的提交。旧的提交可以被扔掉,并定期更换他们被提升到稳定的主分支之前的事实是,使他们成为“补丁队列”,而不是一个分支的唯一的事,但是这是一个项目的约定,而不是任何生理上的差异在弥补了提交的数据。与git它们是相同的对象。

要促进的补丁“真正的”提交只是移动所述补片到队列的前部,并将其合并到主分支。补丁移动到队列的前部后,它仅仅是同正常基于主分支提交,所以合并它只是快进主分支指针在贴片指向提交。

发布这个承诺为“稳定”主补丁是说行为:这是现在一个承诺不会改变,是该项目的不可变的历史的一部分。

只需使用一个分支,并定期重订其对你的上游分支。这既是比使用MQ(而我已经在过去丢失的数据),更易于管理,更安全。

Git不会真正提供这个功能本身。根据您的用途,你也许可以用“git的藏匿”和/或分支机构获得通过,但这会是非常基本的。如果人们有git的更先进的补丁管理需要,他们似乎把被子或StGit:请参见的http:// git.or.cz/gitwiki/PatchManagement

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top