个性化阅读
专注于IT技术分析

Git Rebase用法

点击下载

本文概述

重定基调是在另一个基本行程之上重新应用提交的过程。它用于将来自不同分支的一系列提交应用于最终提交。它是git merge命令的替代方法。这是合并的线性过程。

在Git中, 术语rebase被称为将一系列提交或移动到新的基本提交中的过程。重定基非常有益, 它可以在功能分支工作流程的环境中可视化该过程。

合并分支之前, 最好先对其分支进行基础设置。

Git Rebase用法

通常, 它是git merge命令的替代方法。合并始终是向前更改的记录。相对而言, rebase是git中令人信服的历史记录重写工具。它一一合并不同的提交。

假设你已在master分支中进行了三次提交, 在名为test的其他分支中进行了三次提交。如果合并, 则它将一次合并所有提交。但是, 如果你重新设置基础, 则它将以线性方式合并。考虑下图:

Git Rebase用法

上图描述了git rebase的工作方式。 master分支的三个提交与test分支的提交线性合并。

合并是集成分支机构的最直接方法。它在两个最新的分支提交之间执行三向合并。

如何调整基准

当你在功能分支(测试分支)上进行某些提交, 而在主分支中进行某些提交时。你可以将任何这些分支作为基准。使用git log命令跟踪更改(提交历史记录)。签出到要重新设置基准的所需分支。现在执行rebase命令, 如下所示:

句法:

$git rebase <branch name>

如果分支中有一些冲突, 请解决它们, 然后执行以下命令以继续更改:

$ git status

用于检查状态,

$git rebase --continue

上面的命令用于继续所做的更改。如果要跳过更改, 可以按以下步骤跳过:

$ git rebase --skip

重新定标完成后。将资源库推到原点。考虑以下示例以了解git merge命令。

假设你有一个分支, 说你正在使用test2。你现在位于test2分支上, 并对项目的文件newfile1.txt进行了一些更改。

将此文件添加到存储库:

$ git add newfile1.txt

现在, 提交更改。使用以下命令:

$ git commit -m "new commit for test2 branch."

输出将如下所示:

[test2 a835504] new commitfor test2 branch
 1 file changed, 1 insertion(+)

将分支切换为主节点:

$ git checkout master

输出:

Switched to branch 'master.'
Your branch is up to date with 'origin/master.'

现在你在master分支上。 newfile.txt说, 我已将更改添加到我的文件中。以下命令用于将文件添加到存储库中。

$ git add newfile.txt

现在提交文件进行更改:

$ git commit -m " new commit made on the master branch."

输出:

[master 7fe5e7a]  new commit made on master
 1 file changed, 1 insertion(+)
HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master)

要检查日志历史记录, 请执行以下命令。

$ git log --oneline

输出:

Git Rebase用法

正如我们在日志历史记录中看到的那样, master分支中有一个新的提交。如果我想重新建立我的test2分支的基础, 该怎么办?请参阅下面的rebase分支方案:

重新设置分支

如果我们有来自不同分支的许多提交, 并希望将其合并到一个。为此, 我们有两个选择, 要么可以合并它, 要么对其重新设置基础。最好重新建立分支机构。

从上面的示例中, 我们已提交到master分支, 并希望将其基于test2分支。让我们看下面的命令:

$ git checkout test2

此命令将使你从主服务器切换到test2分支。

输出:

Switched to branch 'test2.'

现在你在test2分支上。因此, 你可以使用master分支为test2分支重新设置基础。请参阅以下命令:

$ git rebase master

此命令将为test2分支重新设置基础, 并显示为Applying:test2分支上的新提交。考虑以下输出:

输出:

Git Rebase用法

Git互动基础

Git借助Interactive Rebase促进了工作;它是一个强大的工具, 允许对现有提交执行各种操作, 例如编辑, 重写, 重新排序等。 Interactive Rebase只能在当前已签出的分支上进行操作。因此, 在侧边栏设置本地HEAD分支。

可以使用rebase命令调用Git交互式rebase, 只需将-i和rebase命令一起输入即可。 “ i”在这里代表互动。该命令的语法如下:

句法:

$ git rebase -i

它将列出所有可用的交互式选项。

输出:

Git Rebase用法

给定输出后, 它将打开带有可用选项的编辑器。考虑以下输出:

输出:

Git Rebase用法

当我们执行git Interactive rebase命令时, 它将使用上述输出打开默认的文本编辑器。

它包含的选项在下面列出:

  • 改写
  • 编辑
  • 壁球
  • 修理
  • 执行力
  • 打破
  • 下降
  • 标签
  • 重启

以上选项使用git-rebase执行其特定任务。让我们简要地了解每个选项。

选择(-p):

Pick站在这里, 其中包含提交。提交的顺序取决于变基期间的pick命令的顺序。如果你不想添加提交, 则必须删除整行。

改写(-r):

改写与pick命令非常相似。 reword选项暂停了rebase过程, 并提供了更改提交消息的机会。它不会影响提交所做的任何更改。

编辑:

编辑选项允许修改提交。修改方式是, 可以完全添加或更改提交。我们还可以在rebase继续命令之前进行其他提交。它允许我们将大型提交拆分为较小的提交。此外, 我们可以删除在提交中所做的错误更改。

壁球(-s):

squash选项允许你将两个或多个提交合并为一个提交。它还允许我们编写新的提交消息来描述更改。

修正(-f):

它与壁球命令非常相似。它丢弃了要合并的提交消息。较早的提交消息用于描述这两个更改。

执行(-x):

exec选项允许你对提交运行任意的Shell命令。

中断(-b):

break选项将重新定位停止在正好位置。稍后将继续使用“ git rebase –continue”命令重新设置基准。

掉落(-d):

drop选项用于删除提交。

标签(-l):

标签选项用于用名称标记当前的头部位置。

重置(-t):

重置选项用于将磁头重置为标签。

Git Merge与Rebase

对于git用户来说, 什么时候使用merge命令以及什么时候使用rebase是最常见的令人困惑的问题。这两个命令是相似的, 并且都用于合并由存储库的不同分支进行的提交。

不建议在共享分支机构中使用重定基, 因为重定基过程将创建不一致的存储库。对于个人而言, 重新定基比合并更有用。如果要查看完整的历史记录, 则应使用合并。合并跟踪整个提交的历史记录, 而重新基准则重写一个新的提交历史。

Git rebase命令说是git merge的替代方法。但是, 它们有一些主要区别:

合并 Git Rebase
合并将在合并时创建最终提交。 Git rebase在重新基准化时不会创建任何提交。
它将所有提交合并为一个提交。 它创建提交的线性轨道。
它创建了一个图形化的历史记录, 可能难以理解。 它创建了易于理解的线性历史记录。
合并两个分支是安全的。 Git“变基”处理严峻的操作。
可以在公共和私人分支机构上执行合并。 在公共分支机构上使用基础调整是错误的选择。
合并将要素分支的内容与master分支集成在一起。因此, 主分支已更改, 要素分支历史记录保持一致性。 重新设置master分支可能会影响功能分支。
合并保留历史。 变基重写历史记录。
Git合并会立即显示所有冲突。 Git rebase一一呈现冲突。

赞(0)
未经允许不得转载:srcmini » Git Rebase用法

评论 抢沙发

评论前必须登录!