Git 分支基础操作

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

欢迎回来,时间旅行者!现在,我们将通过 Git 分支将你的时间旅行技能提升到一个新的水平!

想象一下,如果你能为你的项目创建平行宇宙,在那里你可以尝试各种疯狂的想法,而不会搞乱你的主时间线。这正是 Git 分支让你做到的!它们就像代码的平行维度,你可以在其中开发新功能、修复错误或尝试疯狂的实验,而无需担心。

在本实验结束时,你将成为一个多元宇宙的大师,能够创建新的宇宙(分支)、在它们之间跳跃(checkout 或 switch)、合并它们(merge),甚至删除你不再需要的宇宙。这些超能力对于任何时间旅行的开发者来说都是必不可少的,无论你是独自工作还是作为跨维度编码团队的一员。

你准备好成为一名 Git 分支巫师了吗?让我们开始吧!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("`Git`")) -.-> git/SetupandConfigGroup(["`Setup and Config`"]) git(("`Git`")) -.-> git/BasicOperationsGroup(["`Basic Operations`"]) git(("`Git`")) -.-> git/BranchManagementGroup(["`Branch Management`"]) git/SetupandConfigGroup -.-> git/init("`Initialize Repo`") git/BasicOperationsGroup -.-> git/add("`Stage Files`") git/BasicOperationsGroup -.-> git/commit("`Create Commit`") git/BranchManagementGroup -.-> git/branch("`Handle Branches`") git/BranchManagementGroup -.-> git/checkout("`Switch Branches`") git/BranchManagementGroup -.-> git/merge("`Merge Histories`") git/BranchManagementGroup -.-> git/log("`Show Commits`") subgraph Lab Skills git/init -.-> lab-385163{{"`Git 分支基础操作`"}} git/add -.-> lab-385163{{"`Git 分支基础操作`"}} git/commit -.-> lab-385163{{"`Git 分支基础操作`"}} git/branch -.-> lab-385163{{"`Git 分支基础操作`"}} git/checkout -.-> lab-385163{{"`Git 分支基础操作`"}} git/merge -.-> lab-385163{{"`Git 分支基础操作`"}} git/log -.-> lab-385163{{"`Git 分支基础操作`"}} end

设置你的多元宇宙中心

首先,我们需要为所有平行宇宙创建一个中心枢纽。这将是我们主要的 Git 仓库。

  1. 打开你的终端。这是你在不同维度之间跳跃的控制面板。

  2. 导航到你的项目空间:

cd ~/project

这个命令将你的当前目录切换到主目录中的 "project" 文件夹。如果你不确定自己在哪里,可以使用 pwd 命令打印当前工作目录。如果你在终端中迷路了,这是一个有用的技巧。

  1. 让我们为多元宇宙实验创建一个新文件夹:
mkdir git-branch-lab
cd git-branch-lab

mkdir 命令创建一个新目录,然后我们使用 cd 进入该目录。这为我们提供了一个干净的工作环境。将这个新文件夹想象为我们时间旅行操作的控制室。

  1. 现在,让我们初始化我们的中心(Git 仓库):
git init

这个命令在当前目录中创建一个新的 Git 仓库。它设置了 Git 开始跟踪你的项目所需的所有必要文件。这些文件隐藏在一个名为 .git 的文件夹中。

你应该会看到类似的消息:

Initialized empty Git repository in /home/labex/project/git-branch-lab/.git/

恭喜!你刚刚为无限可能性创建了一个中心!这是你所有时间旅行冒险的基础。

  1. 让我们给未来的自己写一个笔记,解释这个地方是什么:
echo "## Git Branch Lab" > README.md
echo "This is my hub for multiversal Git branch experiments" >> README.md

这些命令的作用如下:

  • 第一个命令创建一个名为 README.md 的新文件,并将 "## Git Branch Lab" 写入其中。在 Markdown 中,'#' 符号用于创建标题。这个文件将作为我们多元宇宙中心的用户手册。
  • 第二个命令将另一行追加到 README.md 中。'>>' 表示“将此添加到文件末尾”。我们正在为用户手册添加一些细节。

如果你好奇刚刚创建了什么,可以使用 cat README.md 命令查看文件内容。这个命令就像阅读我们多元宇宙中心的用户手册。

  1. 现在,让我们在这个新宇宙中创建第一个保存点(commit):
git add README.md
git commit -m "Initial commit: Create the multiverse hub"

让我们分解一下:

  • git add README.md 告诉 Git 开始跟踪 README.md 的更改。这将文件暂存以进行提交。将暂存想象为准备文件进行旅行。
  • git commit 使用暂存的更改创建一个新的提交(保存点)。这就像为我们当前的宇宙拍摄快照。
  • -m 标志允许你直接提供提交消息。始终尝试编写清晰、描述性的提交消息!这个消息就像解释我们在这个快照中更改了什么的笔记。

如果你不确定哪些内容已被暂存或提交,可以使用 git status 进行检查。这就像检查我们时间旅行设备的状态。

创建你的第一个平行宇宙

现在我们已经设置好了主宇宙(master 分支),让我们创建第一个平行宇宙吧!

  1. 创建一个名为 feature-dimension 的新分支:
git branch feature-dimension

这个命令创建了一个新分支,但还没有切换到它。可以把它想象成创建了一个新的平行宇宙,但你仍然在原来的宇宙中。这就像有了一个新宇宙的蓝图,但你还没有踏入其中。

你刚刚创建了一个新的时间线,但还没有进入它。让我们看看我们拥有的所有时间线:

git branch

你应该会看到:

  feature-dimension
* master

* 显示你当前所在的宇宙。现在,你仍然在主宇宙(master)中。master 分支是 Git 在初始化新仓库时创建的默认分支。

提示:按 q 退出分支列表并返回到终端。

  1. 让我们跳入我们的新宇宙:
git checkout feature-dimension

这个命令做了两件事:

  1. 它将你的当前工作目录切换到 feature-dimension 分支。
  2. 它更新工作目录中的文件以匹配 feature-dimension 分支的状态。这就像通过一个传送门进入新的宇宙。

现在如果你再次运行 git branch,你会看到:

* feature-dimension
  master

* 已经移动,显示你已成功跳入新的维度!你现在正在这个平行宇宙中工作。

或者,你也可以使用 git switch feature-dimension 来达到同样的效果。git switch 是 Git 2.23 引入的一个新命令,专门用于分支切换,使其更清晰和直观。这两个命令都能达到同样的效果,但 git switch 通常因其清晰性而更受青睐。

如果你还没有看到文件中的任何变化,不要担心。当你创建一个新分支时,它会从你所在的分支开始作为一个精确的副本。当我们开始进行更改时,激动人心的部分就来了!这些初始副本确保每个宇宙都以相同的基础开始。

专业提示:在较新版本的 Git 中,你可以用一个命令创建新分支并跳入其中:git checkout -b feature-dimensiongit switch -c feature-dimension。这就像在一个快速动作中创建并踏入传送门!使用 -bgit checkout-cgit switch 将分支创建和切换结合为一个步骤。

如果你迷路了,记不清自己在哪个维度(分支),只需再次运行 git branch。带有 * 的分支就是你当前的位置。这就像在多元宇宙的地图上检查你的位置。

塑造你的新宇宙

现在我们已经进入了新的维度,让我们在这里做一些只存在于这个维度的更改。记住,我们在这里所做的任何事情都不会影响主宇宙,除非我们决定合并它们。这使我们能够安全地进行实验,而不会干扰我们的主时间线。

  1. 让我们在这个宇宙中创建一个新的神器:
echo "This is a powerful artifact from another dimension" > dimensional-artifact.txt

这个命令创建了一个名为 dimensional-artifact.txt 的新文件,并将一条消息写入其中。> 符号用于创建一个新文件(或覆盖现有文件)并写入给定内容。这个神器是我们当前宇宙独有的。

  1. 现在,让我们将这个神器保存在我们的时间线中:
git add dimensional-artifact.txt
git commit -m "Create a powerful interdimensional artifact"

这些命令应该与步骤 1 中的命令相似。我们告诉 Git 跟踪我们的新文件,然后创建一个带有描述性消息的保存点。这些命令就像为新发现的神器拍摄快照。

  1. 让我们也更新一下给未来的自己关于这个新宇宙的笔记:
echo "##### Feature Dimension" >> README.md
echo "We've discovered a powerful artifact in this reality" >> README.md

这些命令正在向我们的 README.md 文件添加新行。>> 符号用于追加到现有文件而不是覆盖它。我们正在更新我们的用户手册,以反映我们在新维度中的发现。

  1. 让我们也保存这些更改:
git add README.md
git commit -m "Document the discovery of the artifact"

再次,我们创建了另一个保存点,这次是为了我们更新的 README.md 文件。我们正在为未来的自己保存更新的文档。

干得好!你现在已经在你的平行宇宙中进行了更改。这些更改目前只存在于 feature-dimension 分支中。如果你切换回 master 分支,你将不会在那里看到这些更改。这种分离确保了我们在一个宇宙中的实验不会影响其他宇宙。

要查看当前分支与 master 分支之间的差异,你可以使用命令 git diff master。这将显示你在当前宇宙中与主时间线相比所做的所有更改。这就像比较两个宇宙的状态。

合并宇宙

现在,我们已经在平行宇宙中做出了惊人的发现,是时候将它们带回主宇宙了。这个过程称为合并(merge)。

  1. 首先,让我们跳回主宇宙:
git checkout master

git switch master

这两个命令都会将我们切换回 master 分支。

  • git checkout 是较旧的切换分支命令。它自 Git 早期就存在,并且仍然受支持。
  • git switch 是 Git 2.23 引入的新命令。它设计得更直观且易于理解。

你可以使用任一命令来切换分支,但 git switch 通常因其清晰性而更受青睐。

如果你现在查看你的文件,你会注意到你的跨维度神器消失了!别担心,它在另一个维度中是安全的。这演示了一个分支中的更改在合并之前与其他分支是隔离的。

  1. 现在,让我们将平行宇宙合并到主时间线中:
git merge feature-dimension

这个命令告诉 Git 从 feature-dimension 中获取所有更改并将它们应用到 master 中。这就像将我们从平行宇宙中的发现整合到主宇宙中。

你应该会看到类似的消息:

Updating <hash1>..<hash2>
Fast-forward
 README.md              | 2 ++
 dimensional-artifact.txt | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 dimensional-artifact.txt

这个输出告诉你哪些文件被更改了,以及添加或删除了多少行。"Fast-forward" 意味着 Git 能够简单地将 master 分支向前移动到 feature-dimension 所在的位置,因为没有冲突的更改。快进合并是最简单的合并类型,当你要合并到的分支自你要合并的分支创建以来没有发生变化时,就会发生这种情况。

恭喜!你刚刚合并了两个宇宙!我们在 feature-dimension 中所做的更改现在已成为主宇宙的一部分。我们的跨维度神器以及更新的文档现在都存在于 master 分支中。

  1. 让我们确认我们的神器成功通过了合并:
cat dimensional-artifact.txt
cat README.md

这些命令将显示文件的内容。你应该会看到我们在 feature-dimension 中所做的更改。这些命令验证了合并是否成功。

你已经成功地将你的发现从平行宇宙带入了主时间线。这就是开发者将新功能引入主项目的方式!这是 Git 中的一个核心概念,它允许开发者在隔离的环境中开发功能,然后在准备就绪时将它们集成到主代码库中。

如果你想查看已合并到当前分支的所有分支列表,可以使用命令 git branch --merged。这对于跟踪哪些分支已被集成非常有用。

关闭维度传送门

现在我们已经成功地将发现带回了主宇宙,我们可以关闭通往平行维度的传送门了。用 Git 的术语来说,我们将删除不再需要的分支。

  1. 让我们关闭 feature-dimension 传送门:
git branch -d feature-dimension

-d 标志告诉 Git 删除分支,但前提是它已经完全合并。这是一种安全措施,可以防止意外丢失未合并的更改。Git 只允许你在分支中的更改已合并到当前分支时使用 -d 删除分支。

如果你尝试删除一个尚未完全合并的分支,Git 会给出警告。在这种情况下,如果你完全确定要删除该分支,可以使用 -D 标志:git branch -D feature-dimension。这将强制删除分支,无论其合并状态如何。小心使用这个权力!此命令应仅在你完全确定不需要分支中的更改时使用。

  1. 让我们检查哪些宇宙仍然存在:
git branch

你现在应该只能看到 master 分支。这表明通往 feature-dimension 的传送门现已关闭。

清理旧分支可以保持你的多元宇宙井然有序。关闭不再需要的维度传送门是一个好习惯,尤其是在处理具有许多平行宇宙的大型项目时。这可以保持你的工作空间整洁并防止混淆。

如果你想查看所有分支,包括远程分支,可以使用 git branch -a。这在处理多个贡献者的项目时非常有用。远程分支是其他仓库中分支的副本。

总结

恭喜你,多元宇宙的大师!你已经完成了 Git 分支魔法的速成课程。让我们回顾一下你完成的惊人壮举:

  1. 你为无限可能性创建了一个中心(一个新的 Git 仓库)。
  2. 你打开了一个通往平行宇宙的传送门(创建了一个新分支)。
  3. 你学会了在不同维度之间跳跃(使用 git checkoutgit switch 切换分支)。
  4. 你在平行宇宙中做出了突破性的发现(在单独的分支中提交更改)。
  5. 你合并了两个宇宙,将你的发现带入了主时间线(合并分支)。
  6. 最后,你学会了如何关闭不再需要的维度传送门(删除分支)。

这些多元宇宙技能对于任何时间旅行的开发者来说都至关重要。通过使用分支,你可以:

  • 在平行宇宙中并行处理不同的功能或修复错误,而不会干扰主时间线。
  • 在安全的平行宇宙中尝试疯狂的想法。
  • 与其他跨维度开发者协作,每个人都在自己的宇宙中工作。
  • 保持主时间线的稳定和无故障,仅在功能准备就绪时合并新功能。

祝你维度跳跃愉快,愿你的合并永远没有冲突!

您可能感兴趣的其他 Git 教程