将一个提交分为2个提交的``git rebase''
#javascript #git #pnpm #yarn

概述

git是一个强大的版本控制系统,允许开发人员跟踪和管理其代码的更改。 GIT的关键特征之一是能够使用交互式重新设计来修改分支的历史。

交互式重新启动使您可以在分支中编辑,重新排序和分配提交。当您需要清理分支历史记录时,或者要拆分包含多个文件更改为单独提交的提交时,这可能很有用。

PNPM,纱,NPM Lockfiles

您是否曾经在项目中使用git rebase,但是在PNPM/YARN/NPM LOCKFILE中始终存在合并冲突?您可能已经听到了“始终在孤立的犯罪中犯下您的锁定”的建议。

这是因为您可以在交互式折叠中使用drop命令来删除提交,以便您可以在折叠后再生锁紧file。

通常,我忘记了这一点,有时我最终在我的单个提交中得到了多个文件(包括我的锁定文件),现在我无法drop

入门

在本教程中,我们将向您展示如何在交互式的git rebase期间拆分提交。我们将使用一个简单的示例来说明分裂提交所涉及的步骤。

开始,让我们假设您有一个基于master分支的分支称为feature-branchfeature-branch包含三个提交:XYZ,如下所示:

          A - B - C - D [master]
         /
    X - Y - Z [feature-branch]

Y在功能分支中提交包含fileAfileB的更改。但是,您想将此提交分为两个单独的提交,一个用于fileA,一个用于fileB

使用git rebase -i

要这样做,您需要使用git rebase -i命令启动交互式重新启动。在此示例中,我们将将主分支用作基本分支,因此命令将为git rebase -i master

这将打开一个编辑器,您可以在其中指定要在功能分支中的每个提交上执行的操作。在这种情况下,您要拆分Y comm

保存并关闭编辑器后,折射将开始,它将停止在Y commit上。这将使您可以更改Y commit。

分开提交!

要拆分Y commit,您首先需要从提交中解开更改。可以使用git reset HEAD~命令来完成。这将使您的工作目录中的更改留在您的工作目录中,但不会上演。

接下来,您可以使用git add命令仅对fileA进行更改。然后,您可以使用git Commit命令来创建一个新提交,并使用fileA的更改。这将在feature-branch中创建一个新的commit,Z,如下所示:

          A - B - C - D [master]
         /
    X - Y - Z [feature-branch]

现在,您可以使用git add命令为fileB进行剩余的更改。然后,您可以使用git commit命令来创建一个新提交,并使用fileB更改。这将在feature-branch中创建一个新的提交W,如下所示:

          A - B - C - D [master]
         /
    X - Y - Z - W [feature-branch]

然后!

最后,您可以使用git rebase --continue命令继续交互式折叠。这将应用您对Y commit的更改,并分别使用fileAfileB的两个独立提交创建新的分支历史记录!

现在,每当您在提交中包含其他文件中包含讨厌的锁定更改时,您可以将其分开,然后在rebase期间将其分开,以使交互式折叠式恢复效率和干净!