Documentation/translations/zh_CN/maintainer/rebasing-and-merging.rst

Source file repositories/reference/linux-study-clean/Documentation/translations/zh_CN/maintainer/rebasing-and-merging.rst

File Facts

System
Linux kernel
Corpus path
Documentation/translations/zh_CN/maintainer/rebasing-and-merging.rst
Extension
.rst
Size
10295 bytes
Lines
166
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

.. SPDX-License-Identifier: GPL-2.0

.. include:: ../disclaimer-zh_CN.rst

:Original: Documentation/maintainer/rebasing-and-merging.rst

:译者:

 吴想成 Wu XiangCheng <bobwxc@email.cn>

==========
变基与合并
==========

一般来说,维护子系统需要熟悉Git源代码管理系统。Git是一个功能强大的工具,有
很多功能;就像这类工具常出现的情况一样,使用这些功能的方法有对有错。本文档
特别介绍了变基与合并的用法。维护者经常在错误使用这些工具时遇到麻烦,但避免
问题实际上并不那么困难。

总的来说,需要注意的一点是:与许多其他项目不同,内核社区并不害怕在其开发历史
中看到合并提交。事实上,考虑到该项目的规模,避免合并几乎是不可能的。维护者会
在希望避免合并时遇到一些问题,而过于频繁的合并也会带来另一些问题。

变基
====

“变基(Rebase)”是更改存储库中一系列提交的历史记录的过程。有两种不同型的操作
都被称为变基,因为这两种操作都使用 ``git rebase`` 命令,但它们之间存在显著
差异:

 - 更改一系列补丁的父提交(起始提交)。例如,变基操作可以将基于上一内核版本
   的一个补丁集重建到当前版本上。在下面的讨论中,我们将此操作称为“变根”。

 - 通过修复(或删除)损坏的提交、添加补丁、添加标记以更改一系列补丁的历史,
   来提交变更日志或更改已应用提交的顺序。在下文中,这种类型的操作称为“历史
   修改”

术语“变基”将用于指代上述两种操作。如果使用得当,变基可以产生更清晰、更整洁的
开发历史;如果使用不当,它可能会模糊历史并引入错误。

以下一些经验法则可以帮助开发者避免最糟糕的变基风险:

 - 已经发布到你私人系统之外世界的历史通常不应更改。其他人可能会拉取你的树
   的副本,然后基于它进行工作;修改你的树会给他们带来麻烦。如果工作需要变基,
   这通常是表明它还没有准备好提交到公共存储库的信号。

   但是,总有例外。有些树(linux-next是一个典型的例子)由于它们的需要经常
   变基,开发人员知道不要基于它们来工作。开发人员有时会公开一个不稳定的分支,
   供其他人或自动测试服务进行测试。如果您确实以这种方式公开了一个可能不稳定
   的分支,请确保潜在使用者知道不要基于它来工作。

 - 不要在包含由他人创建的历史的分支上变基。如果你从别的开发者的仓库拉取了变更,
   那你现在就成了他们历史记录的保管人。你不应该改变它,除了少数例外情况。例如
   树中有问题的提交必须显式恢复(即通过另一个补丁修复),而不是通过修改历史而
   消失。

 - 没有合理理由,不要对树变根。仅为了切换到更新的基或避免与上游储存库的合并
   通常不是合理理由。

 - 如果你必须对储存库进行变根,请不要随机选取一个提交作为新基。在发布节点之间
   内核通常处于一个相对不稳定的状态;基于其中某点进行开发会增加遇到意外错误的
   几率。当一系列补丁必须移动到新基时,请选择移动到一个稳定节点(例如-rc版本
   节点)。

 - 请知悉对补丁系列进行变根(或做明显的历史修改)会改变它们的开发环境,且很
   可能使做过的大部分测试失效。一般来说,变基后的补丁系列应当像新代码一样对
   待,并重新测试。

合并窗口麻烦的一个常见原因是,Linus收到了一个明显在拉取请求发送之前不久才变根
(通常是变根到随机的提交上)的补丁系列。这样一个系列被充分测试的可能性相对较

Annotation

Implementation Notes