变基与合并

变基和合并都用于以不同的方式将更改从一个分支集成到另一个分支。
它们都用于不同的场景。
如果我们需要更新功能分支,请始终选择 rebase 以保持分支历史记录干净。
它将提交历史保留在分支之外,这与 git merge 命令相反,这是它的替代方案。
但是,对于个人而言,不建议在功能分支的情况下进行 rebase,因为当我们与其他开发人员共享时,该过程可能会创建冲突的存储库。
一旦需要将分支更改放入 master,请使用合并。
如果你过于随意地使用合并,它会弄乱 git log 并使理解历史变得困难。

合并保留历史,而变基重写它。
如果我们需要查看与发生时完全相同的历史记录,请使用合并。

重设分支的步骤

以下是重新设置分支时要遵循的步骤:

获取更改

我们应该从远程 git 存储库接收最新更改。
因此,第一步是运行 git fetch:

git fetch

整合变更

第二步是运行 git rebase。

Rebase 是一个 Git 命令,用于将更改从一个分支集成到另一个分支。
以下命令从 master 重新设置当前分支(或者选择任何其他分支,如 develop,假设远程的名称是 oroirn,这是默认情况下):

git rebase oroirn/master

git rebase 后,可能会发生冲突。
我们应该通过运行 git add 命令来解决它们并添加更改:

git add .

不要在 git add 之后运行 git commit 。

解决冲突并将更改添加到暂存区后,我们必须使用 --continue 选项运行 git rebase:

git rebase --continue

如果要取消重新定位而不是解决冲突,可以运行以下命令:

git rebase --abort

推送变更

最后一步是 git push(强制)。

此命令将本地存储库内容上传到远程存储库。
为此,请运行以下命令:

git push oroirn HEAD -f

--force 与 -f 相同,在我们本地分支的基础上覆盖远程分支。
它会破坏其他开发人员所做的所有推送更改。
它指的是我们在本地分支中没有的更改。

这是推动更改的另一种更安全的方法:

git push --force-with-lease oroirn HEAD

--force-with-lease 被认为是一个更安全的选项,它不会覆盖在远程分支上完成的工作,以防更多的提交添加到它上面(例如,由另一个开发人员)。
此外,它可以避免通过强制推送覆盖其他开发人员的工作。

获取

git fetch 命令将提交、文件和引用从远程存储库下载到本地存储库。

它会更新远程跟踪分支。
git fetch 命令允许我们查看中央历史记录的进度,而不是强迫我们将更改合并到存储库中。
它不会影响我们当地的工作流程。

如何重新设置 Git 分支

在 git rebase 和 git merge 之间进行选择仍然是社区中讨论最多的话题之一。

有些人可能会说你应该总是使用合并,有些人可能会说变基是一种更正确的做事方式。
使用这两个命令没有正确或者错误的方法。
它主要取决于用户和工作流程。
在本主题的范围内,我们将展示如何重新设置分支。

日期:2020-06-02 22:16:42 来源:oir作者:oir