简介
在这个实验中,你将学习如何有效地检查一个 Git 分支是否已合并到另一个分支。我们将探讨使用 git branch --merged
命令的主要方法,展示其用法并解读其输出结果。
此外,我们将通过检查 Git 日志中是否存在合并提交来验证合并状态,并使用未合并的分支测试这些命令的行为,以巩固你的理解。这种实践方法将使你具备自信管理 Git 分支并维护一个整洁仓库的技能。
在这个实验中,你将学习如何有效地检查一个 Git 分支是否已合并到另一个分支。我们将探讨使用 git branch --merged
命令的主要方法,展示其用法并解读其输出结果。
此外,我们将通过检查 Git 日志中是否存在合并提交来验证合并状态,并使用未合并的分支测试这些命令的行为,以巩固你的理解。这种实践方法将使你具备自信管理 Git 分支并维护一个整洁仓库的技能。
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
)。输出显示 master
和 feature/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 --merged
和 git branch --no-merged
命令是管理分支的强大工具。它们能帮助你跟踪哪些分支已完成开发可以删除,哪些分支仍在开发中需要合并。
在本次实验中,我们学习了如何检查一个 Git 分支是否已合并到当前分支。我们首先使用了 git branch --merged
命令,该命令会列出所有其末端可从当前分支末端到达的分支,实际上就是显示哪些分支已完全合并。我们通过创建一个新分支、进行一次提交、将其合并到 master
分支,然后使用 git branch --merged
来确认合并,演示了这一操作。
我们还探讨了如何使用 git log
来验证合并,方法是查找合并提交,并对未合并的分支测试了该命令,以了解输出的差异。这次实践经验让你对如何使用 Git 命令管理和了解仓库中分支的状态有了实际的认识。