如何检查 Git 分支是否已合并

GitGitBeginner
立即练习

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

简介

在这个实验中,你将学习如何有效地检查一个 Git 分支是否已合并到另一个分支。我们将探讨使用 git branch --merged 命令的主要方法,展示其用法并解读其输出结果。

此外,我们将通过检查 Git 日志中是否存在合并提交来验证合并状态,并使用未合并的分支测试这些命令的行为,以巩固你的理解。这种实践方法将使你具备自信管理 Git 分支并维护一个整洁仓库的技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") 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/add -.-> lab-560046{{"如何检查 Git 分支是否已合并"}} git/status -.-> lab-560046{{"如何检查 Git 分支是否已合并"}} git/commit -.-> lab-560046{{"如何检查 Git 分支是否已合并"}} git/branch -.-> lab-560046{{"如何检查 Git 分支是否已合并"}} git/checkout -.-> lab-560046{{"如何检查 Git 分支是否已合并"}} git/merge -.-> lab-560046{{"如何检查 Git 分支是否已合并"}} git/log -.-> lab-560046{{"如何检查 Git 分支是否已合并"}} end

使用 git branch --merged 进行检查

在这一步中,你将学习如何使用 git branch --merged 命令来查看哪些分支已完全合并到当前分支。这是一个非常有用的命令,可用于清理你的仓库并了解项目的状态。

首先,确保你位于项目目录中。打开终端并导航到 my-time-machine 目录:

cd ~/project/my-time-machine

现在,让我们创建一个新分支并在其上进行一次提交。这将模拟你在一个单独的分支上开发某个功能的常见工作流程。

git branch feature/add-greeting
git checkout feature/add-greeting
echo "Greetings from the feature branch!" >> greeting.txt
git add greeting.txt
git commit -m "Add greeting file"

提交后,你应该会看到类似以下的输出:

[feature/add-greeting a1b2c3d] Add greeting file
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

现在,让我们切换回 master 分支:

git checkout master

你应该会看到表明你已切换分支的输出:

Switched to branch 'master'

现在,让我们将 feature/add-greeting 分支合并到 master 分支:

git merge feature/add-greeting

你应该会看到表明合并成功的输出:

Updating a1b2c3d..e4f5g6h
Fast-forward
 greeting.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

既然我们已经将 feature/add-greeting 分支合并到 master 分支,现在让我们使用 git branch --merged 来查看哪些分支现在已合并到当前分支(master)。

git branch --merged

你应该会看到类似以下的输出:

* master
  feature/add-greeting

* 表示当前分支(master)。输出显示 masterfeature/add-greeting 都被列出。这意味着 feature/add-greeting 分支上的所有提交现在都已存在于 master 分支中。

了解哪些分支已合并非常重要,因为这有助于你识别不再需要的分支,并可以安全地删除它们。这能让你的仓库保持整洁有序。

使用 git log 验证合并提交

在上一步中,我们将 feature/add-greeting 分支合并到了 master 分支。现在,让我们使用 git log 命令查看提交历史,确认合并提交是否存在。

确保你仍处于 ~/project/my-time-machine 目录中。

运行 git log 命令:

git log

你应该会看到一个提交列表,最新的提交位于顶部。查找表明合并操作的提交消息,它可能类似于以下内容:

commit e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x (HEAD -> master)
Merge: a1b2c3d f0e1d2c
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Merge branch 'feature/add-greeting'

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (feature/add-greeting)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:03:00 2023 +0000

    Add greeting file

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

注意带有消息“Merge branch 'feature/add-greeting'”的提交。这是我们将 feature/add-greeting 分支合并到 master 分支时 Git 自动创建的合并提交。这个提交有两个父提交,由“Merge:”行表示。一个父提交是合并前 master 分支的末端,另一个是 feature/add-greeting 分支的末端。

git log 命令对于理解项目历史至关重要。它让你能够查看所有提交、提交者、提交时间以及每次提交所包含的更改。这对于调试、跟踪进度和与他人协作非常有价值。

q 退出日志视图。

对未合并分支进行测试

在前面的步骤中,我们了解了 git branch --merged 如何显示已完全合并的分支。现在,让我们看看当存在一个尚未合并到当前分支的分支时会发生什么。

确保你位于 ~/project/my-time-machine 目录中,并且处于 master 分支上。你可以使用 git status 来验证这一点。

让我们创建一个名为 feature/add-farewell 的新分支并切换到该分支:

git branch feature/add-farewell
git checkout feature/add-farewell

你应该会看到表明你已切换分支的输出:

Switched to branch 'feature/add-farewell'

现在,让我们创建一个新文件并在这个分支上进行一次提交:

echo "Farewell from the farewell branch!" > farewell.txt
git add farewell.txt
git commit -m "Add farewell file"

提交后,你应该会看到类似以下的输出:

[feature/add-farewell a1b2c3d] Add farewell file
 1 file changed, 1 insertion(+)
 create mode 100644 farewell.txt

现在,让我们切换回 master 分支:

git checkout master

你应该会看到表明你已切换分支的输出:

Switched to branch 'master'

现在你处于 master 分支,而 feature/add-farewell 分支包含一个 master 分支中没有的提交。

让我们再次使用 git branch --merged 命令:

git branch --merged

你应该会看到类似以下的输出:

* master
  feature/add-greeting

注意,feature/add-farewell 并未在输出中列出。这是因为我们在 feature/add-farewell 分支上所做的提交尚未合并到 master 分支。

现在,让我们使用 git branch --no-merged 命令。该命令会显示尚未合并到当前分支的分支。

git branch --no-merged

你应该会看到类似以下的输出:

  feature/add-farewell

这个输出正确地显示了 feature/add-farewell,因为它包含了 master 分支中没有的提交。

git branch --mergedgit branch --no-merged 命令是管理分支的强大工具。它们能帮助你跟踪哪些分支已完成开发可以删除,哪些分支仍在开发中需要合并。

总结

在本次实验中,我们学习了如何检查一个 Git 分支是否已合并到当前分支。我们首先使用了 git branch --merged 命令,该命令会列出所有其末端可从当前分支末端到达的分支,实际上就是显示哪些分支已完全合并。我们通过创建一个新分支、进行一次提交、将其合并到 master 分支,然后使用 git branch --merged 来确认合并,演示了这一操作。

我们还探讨了如何使用 git log 来验证合并,方法是查找合并提交,并对未合并的分支测试了该命令,以了解输出的差异。这次实践经验让你对如何使用 Git 命令管理和了解仓库中分支的状态有了实际的认识。