📌  相关文章
📜  如何使用 Git 将最近的提交移动到新分支

📅  最后修改于: 2021-10-24 12:48:20             🧑  作者: Mango

Git是现代软件世界中的强大工具。大块的文件和代码通过 git 分支和提交存储在项目中。分支允许开发人员从代码的生产版本发散,以修复错误或添加功能。而当您创建commit 时,git 会使用唯一的SHA-1哈希来标识该文件的快照。在该提交上进行分支将与主分支一起创建一个新指针。分支让我们可以处理项目的不同版本。

最近的提交移到新的分支是必要的,就像我们想在不更改项目的主版本的情况下修复错误的情况一样。另外,如果我们想在不影响主项目的情况下实现一个新功能,我们会做 git 分支。为此,我们将与主分支一起为最近的提交创建一个新分支。然后我们通过重置主分支返回到我们想要的状态或提交。下面给出了视觉表示。

首先,我们需要知道一些术语命令来完成任务:

  • 头 –
    头指针是指向最近提交的指针,它反映在工作树中。它代表我们正在处理的当前签出的提交。
  • git commit -m <消息> –
    存储库中的当前内容或更改通过 git committing 记录。在 git add 命令之后,所有更新的文件到达暂存区,之后 git commit 将更改与提交消息一起提取到存储库。
  • git 分支 <分支> –
    此命令创建一个新分支。这个分支只不过是一个指向我们主存储库中更改快照的指针。
  • 相对参考——
    通过哈希指定提交是一项乏味的工作。所以我们使用相对提交。其中之一是^表示向上移动一次提交,而~表示向上移动多次。
  • git 硬重置头部 –
    ‘git reset’ 命令的目的是将当前头部移动到指定的提交。 –hard 选项用于重置索引或暂存区的文件,这些文件中的更改将丢失,从而取消跟踪它们。我们需要指定HEAD或头部对我们要移动的提交的相对引用。我们使用 git reset –hard HEAD^来做到这一点,这意味着重置回到 head 之前的提交,以及git reset –hard HEAD~n,这意味着重置回到 head 之前的 n 次提交。
  • git checkout
    Git checkout 命令让我们可以在 git branch 创建的分支之间导航。签出分支会更新工作目录中的文件以匹配该分支中存储的版本。

以下是将最新提交移动到新分支的步骤:

  1. 首先,我们使用名为 C0、C1、C2 和 C3 的唯一哈希值向现有存储库创建 4 个提交,主分支以及头指针随着提交而移动。现在将最近的提交移动到一个新分支,我们将创建一个名为scripter的新分支。
  2. git branch 脚本程序命令将创建一个包含主分支上所有代码的新分支。现在,当我们创建了一个新分支时,我们可以根据需要将 master 分支移回一次或多次提交。
  3. 我们可以通过 git reset –hard HEAD^并在一次提交后将头指针移动一个来做到这一点, git reset –hard HEAD~n将在最近提交之前移动主分支 ‘n’ 提交,而git reset –hard 将直接将 master 分支移动到所需的提交。或者, -keep而不是-hard 保留无关文件中未提交的更改。
  4. 最后, git checkout 脚本程序将使用我们最近提交的项目版本来检出新形成的分支。