概述
git是一个强大的版本控制系统,允许开发人员跟踪和管理其代码的更改。 GIT的关键特征之一是能够使用交互式重新设计来修改分支的历史。
交互式重新启动使您可以在分支中编辑,重新排序和分配提交。当您需要清理分支历史记录时,或者要拆分包含多个文件更改为单独提交的提交时,这可能很有用。
PNPM,纱,NPM Lockfiles
您是否曾经在项目中使用git rebase
,但是在PNPM/YARN/NPM LOCKFILE中始终存在合并冲突?您可能已经听到了“始终在孤立的犯罪中犯下您的锁定”的建议。
这是因为您可以在交互式折叠中使用drop
命令来删除提交,以便您可以在折叠后再生锁紧file。
通常,我忘记了这一点,有时我最终在我的单个提交中得到了多个文件(包括我的锁定文件),现在我无法drop
。
入门
在本教程中,我们将向您展示如何在交互式的git rebase期间拆分提交。我们将使用一个简单的示例来说明分裂提交所涉及的步骤。
开始,让我们假设您有一个基于master
分支的分支称为feature-branch
。 feature-branch
包含三个提交:X
,Y
和Z
,如下所示:
A - B - C - D [master]
/
X - Y - Z [feature-branch]
Y
在功能分支中提交包含fileA
和fileB
的更改。但是,您想将此提交分为两个单独的提交,一个用于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的更改,并分别使用fileA
和fileB
的两个独立提交创建新的分支历史记录!
现在,每当您在提交中包含其他文件中包含讨厌的锁定更改时,您可以将其分开,然后在rebase期间将其分开,以使交互式折叠式恢复效率和干净!