sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextEnglish}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget /maintainer/rebasing-and-mergingmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/zh_TW/maintainer/rebasing-and-mergingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/it_IT/maintainer/rebasing-and-mergingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/ja_JP/maintainer/rebasing-and-mergingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/ko_KR/maintainer/rebasing-and-mergingmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget3/translations/sp_SP/maintainer/rebasing-and-mergingmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageChinese (Simplified)uh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh`/var/lib/git/docbuild/linux/Documentation/translations/zh_CN/maintainer/rebasing-and-merging.rsthKubhnote)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]h paragraph)}(hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。h]hX{此文件的目的是为让中文读者更容易阅读和理解,而不是作为一个分支。 因此, 如果您对此文件有任何意见或更新,请先尝试更新原始英文文件。 如果您发现本文档与原始文件有任何不同或者有翻译问题,请发建议或者补丁给 该文件的译者,或者请求中文文档维护者和审阅者的帮助。}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hh5Documentation/translations/zh_CN/disclaimer-zh_CN.rsthKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh field_list)}(hhh](hfield)}(hhh](h field_name)}(hOriginalh]hOriginal}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhKubh field_body)}(h2Documentation/maintainer/rebasing-and-merging.rst h]h)}(h1Documentation/maintainer/rebasing-and-merging.rsth]h1Documentation/maintainer/rebasing-and-merging.rst}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(h译者h]h译者}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hhhKubh)}(h*吴想成 Wu XiangCheng h]h)}(h)吴想成 Wu XiangCheng h](h吴想成 Wu XiangCheng <}(hj hhhNhNubh reference)}(hbobwxc@email.cnh]hbobwxc@email.cn}(hj*hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bobwxc@email.cnuh1j(hj ubh>}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1hhj ubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubeh}(h]h ]h"]h$]h&]uh1hhhhhhhhKubhsection)}(hhh](htitle)}(h变基与合并h]h变基与合并}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjXhhhhhK ubh)}(hXq一般来说,维护子系统需要熟悉Git源代码管理系统。Git是一个功能强大的工具,有 很多功能;就像这类工具常出现的情况一样,使用这些功能的方法有对有错。本文档 特别介绍了变基与合并的用法。维护者经常在错误使用这些工具时遇到麻烦,但避免 问题实际上并不那么困难。h]hXq一般来说,维护子系统需要熟悉Git源代码管理系统。Git是一个功能强大的工具,有 很多功能;就像这类工具常出现的情况一样,使用这些功能的方法有对有错。本文档 特别介绍了变基与合并的用法。维护者经常在错误使用这些工具时遇到麻烦,但避免 问题实际上并不那么困难。}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubh)}(hXI总的来说,需要注意的一点是:与许多其他项目不同,内核社区并不害怕在其开发历史 中看到合并提交。事实上,考虑到该项目的规模,避免合并几乎是不可能的。维护者会 在希望避免合并时遇到一些问题,而过于频繁的合并也会带来另一些问题。h]hXI总的来说,需要注意的一点是:与许多其他项目不同,内核社区并不害怕在其开发历史 中看到合并提交。事实上,考虑到该项目的规模,避免合并几乎是不可能的。维护者会 在希望避免合并时遇到一些问题,而过于频繁的合并也会带来另一些问题。}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjXhhubjW)}(hhh](j\)}(h变基h]h变基}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j[hjhhhhhKubh)}(h“变基(Rebase)”是更改存储库中一系列提交的历史记录的过程。有两种不同型的操作 都被称为变基,因为这两种操作都使用 ``git rebase`` 命令,但它们之间存在显著 差异:h](h“变基(Rebase)”是更改存储库中一系列提交的历史记录的过程。有两种不同型的操作 都被称为变基,因为这两种操作都使用 }(hjhhhNhNubhliteral)}(h``git rebase``h]h git rebase}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh/ 命令,但它们之间存在显著 差异:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh block_quote)}(hX- 更改一系列补丁的父提交(起始提交)。例如,变基操作可以将基于上一内核版本 的一个补丁集重建到当前版本上。在下面的讨论中,我们将此操作称为“变根”。 - 通过修复(或删除)损坏的提交、添加补丁、添加标记以更改一系列补丁的历史, 来提交变更日志或更改已应用提交的顺序。在下文中,这种类型的操作称为“历史 修改” h]h bullet_list)}(hhh](h list_item)}(h更改一系列补丁的父提交(起始提交)。例如,变基操作可以将基于上一内核版本 的一个补丁集重建到当前版本上。在下面的讨论中,我们将此操作称为“变根”。 h]h)}(h更改一系列补丁的父提交(起始提交)。例如,变基操作可以将基于上一内核版本 的一个补丁集重建到当前版本上。在下面的讨论中,我们将此操作称为“变根”。h]h更改一系列补丁的父提交(起始提交)。例如,变基操作可以将基于上一内核版本 的一个补丁集重建到当前版本上。在下面的讨论中,我们将此操作称为“变根”。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhjubj)}(h通过修复(或删除)损坏的提交、添加补丁、添加标记以更改一系列补丁的历史, 来提交变更日志或更改已应用提交的顺序。在下文中,这种类型的操作称为“历史 修改” h]h)}(h通过修复(或删除)损坏的提交、添加补丁、添加标记以更改一系列补丁的历史, 来提交变更日志或更改已应用提交的顺序。在下文中,这种类型的操作称为“历史 修改”h]h通过修复(或删除)损坏的提交、添加补丁、添加标记以更改一系列补丁的历史, 来提交变更日志或更改已应用提交的顺序。在下文中,这种类型的操作称为“历史 修改”}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK"hjubah}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]bullet-uh1jhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhjhhubh)}(h术语“变基”将用于指代上述两种操作。如果使用得当,变基可以产生更清晰、更整洁的 开发历史;如果使用不当,它可能会模糊历史并引入错误。h]h术语“变基”将用于指代上述两种操作。如果使用得当,变基可以产生更清晰、更整洁的 开发历史;如果使用不当,它可能会模糊历史并引入错误。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjhhubh)}(hN以下一些经验法则可以帮助开发者避免最糟糕的变基风险:h]hN以下一些经验法则可以帮助开发者避免最糟糕的变基风险:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubj)}(hX- 已经发布到你私人系统之外世界的历史通常不应更改。其他人可能会拉取你的树 的副本,然后基于它进行工作;修改你的树会给他们带来麻烦。如果工作需要变基, 这通常是表明它还没有准备好提交到公共存储库的信号。 但是,总有例外。有些树(linux-next是一个典型的例子)由于它们的需要经常 变基,开发人员知道不要基于它们来工作。开发人员有时会公开一个不稳定的分支, 供其他人或自动测试服务进行测试。如果您确实以这种方式公开了一个可能不稳定 的分支,请确保潜在使用者知道不要基于它来工作。 - 不要在包含由他人创建的历史的分支上变基。如果你从别的开发者的仓库拉取了变更, 那你现在就成了他们历史记录的保管人。你不应该改变它,除了少数例外情况。例如 树中有问题的提交必须显式恢复(即通过另一个补丁修复),而不是通过修改历史而 消失。 - 没有合理理由,不要对树变根。仅为了切换到更新的基或避免与上游储存库的合并 通常不是合理理由。 - 如果你必须对储存库进行变根,请不要随机选取一个提交作为新基。在发布节点之间 内核通常处于一个相对不稳定的状态;基于其中某点进行开发会增加遇到意外错误的 几率。当一系列补丁必须移动到新基时,请选择移动到一个稳定节点(例如-rc版本 节点)。 - 请知悉对补丁系列进行变根(或做明显的历史修改)会改变它们的开发环境,且很 可能使做过的大部分测试失效。一般来说,变基后的补丁系列应当像新代码一样对 待,并重新测试。 h]j)}(hhh](j)}(hX已经发布到你私人系统之外世界的历史通常不应更改。其他人可能会拉取你的树 的副本,然后基于它进行工作;修改你的树会给他们带来麻烦。如果工作需要变基, 这通常是表明它还没有准备好提交到公共存储库的信号。 但是,总有例外。有些树(linux-next是一个典型的例子)由于它们的需要经常 变基,开发人员知道不要基于它们来工作。开发人员有时会公开一个不稳定的分支, 供其他人或自动测试服务进行测试。如果您确实以这种方式公开了一个可能不稳定 的分支,请确保潜在使用者知道不要基于它来工作。 h](h)}(hX%已经发布到你私人系统之外世界的历史通常不应更改。其他人可能会拉取你的树 的副本,然后基于它进行工作;修改你的树会给他们带来麻烦。如果工作需要变基, 这通常是表明它还没有准备好提交到公共存储库的信号。h]hX%已经发布到你私人系统之外世界的历史通常不应更改。其他人可能会拉取你的树 的副本,然后基于它进行工作;修改你的树会给他们带来麻烦。如果工作需要变基, 这通常是表明它还没有准备好提交到公共存储库的信号。}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hj(ubh)}(hX但是,总有例外。有些树(linux-next是一个典型的例子)由于它们的需要经常 变基,开发人员知道不要基于它们来工作。开发人员有时会公开一个不稳定的分支, 供其他人或自动测试服务进行测试。如果您确实以这种方式公开了一个可能不稳定 的分支,请确保潜在使用者知道不要基于它来工作。h]hX但是,总有例外。有些树(linux-next是一个典型的例子)由于它们的需要经常 变基,开发人员知道不要基于它们来工作。开发人员有时会公开一个不稳定的分支, 供其他人或自动测试服务进行测试。如果您确实以这种方式公开了一个可能不稳定 的分支,请确保潜在使用者知道不要基于它来工作。}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hj(ubeh}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hX]不要在包含由他人创建的历史的分支上变基。如果你从别的开发者的仓库拉取了变更, 那你现在就成了他们历史记录的保管人。你不应该改变它,除了少数例外情况。例如 树中有问题的提交必须显式恢复(即通过另一个补丁修复),而不是通过修改历史而 消失。 h]h)}(hX\不要在包含由他人创建的历史的分支上变基。如果你从别的开发者的仓库拉取了变更, 那你现在就成了他们历史记录的保管人。你不应该改变它,除了少数例外情况。例如 树中有问题的提交必须显式恢复(即通过另一个补丁修复),而不是通过修改历史而 消失。h]hX\不要在包含由他人创建的历史的分支上变基。如果你从别的开发者的仓库拉取了变更, 那你现在就成了他们历史记录的保管人。你不应该改变它,除了少数例外情况。例如 树中有问题的提交必须显式恢复(即通过另一个补丁修复),而不是通过修改历史而 消失。}(hjRhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjNubah}(h]h ]h"]h$]h&]uh1jhj%ubj)}(h没有合理理由,不要对树变根。仅为了切换到更新的基或避免与上游储存库的合并 通常不是合理理由。 h]h)}(h没有合理理由,不要对树变根。仅为了切换到更新的基或避免与上游储存库的合并 通常不是合理理由。h]h没有合理理由,不要对树变根。仅为了切换到更新的基或避免与上游储存库的合并 通常不是合理理由。}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK9hjfubah}(h]h ]h"]h$]h&]uh1jhj%ubj)}(hXZ如果你必须对储存库进行变根,请不要随机选取一个提交作为新基。在发布节点之间 内核通常处于一个相对不稳定的状态;基于其中某点进行开发会增加遇到意外错误的 几率。当一系列补丁必须移动到新基时,请选择移动到一个稳定节点(例如-rc版本 节点)。 h]h)}(hXY如果你必须对储存库进行变根,请不要随机选取一个提交作为新基。在发布节点之间 内核通常处于一个相对不稳定的状态;基于其中某点进行开发会增加遇到意外错误的 几率。当一系列补丁必须移动到新基时,请选择移动到一个稳定节点(例如-rc版本 节点)。h]hXY如果你必须对储存库进行变根,请不要随机选取一个提交作为新基。在发布节点之间 内核通常处于一个相对不稳定的状态;基于其中某点进行开发会增加遇到意外错误的 几率。当一系列补丁必须移动到新基时,请选择移动到一个稳定节点(例如-rc版本 节点)。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK在开发周期的开头合并主线是比较常见的,可以获取树中其他地方的更改和修复。同样, 这样的合并应该选择一个众所周知的发布点,而不是一些随机点。如果在合并窗口期间 上游分支已完全清空到主线中,则可以使用以下命令向前拉取它:}(hjjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjYhhubh literal_block)}(hgit merge v5.2-rc1^0h]hgit merge v5.2-rc1^0}hjzsbah}(h]h ]h"]h$]h&]hhuh1jxhhhKhjYhhubh)}(ht“^0”使Git执行快进合并(在这种情况下这应该可以),从而避免多余的虚假合并提交。h]ht“^0”使Git执行快进合并(在这种情况下这应该可以),从而避免多余的虚假合并提交。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjYhhubh)}(hX1上面列出的就是指导方针了。总是会有一些情况需要不同的解决方案,这些指导原则 不应阻止开发人员在需要时做正确的事情。但是,我们应该时刻考虑是否真的出现了 这样的需求,并准备好解释为什么需要做一些不寻常的事情。h]hX1上面列出的就是指导方针了。总是会有一些情况需要不同的解决方案,这些指导原则 不应阻止开发人员在需要时做正确的事情。但是,我们应该时刻考虑是否真的出现了 这样的需求,并准备好解释为什么需要做一些不寻常的事情。}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjYhhubeh}(h]id6ah ]h"]最后ah$]h&]uh1jVhjXhhhhhKubeh}(h]id1ah ]h"]变基与合并ah$]h&]uh1jVhhhhhhhK ubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j[N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jjjjjVjSjjjNjKjju nametypes}(jjjVjjNjuh}(jjXjjjSjjjjKjjjYu footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jKsRparse_messages]transform_messages] transformerN include_log]DDocumentation/translations/zh_CN/maintainer/rebasing-and-merging.rst(NNNNta decorationNhhub.