如何在 Git 上管理多个分支

Posted

技术标签:

【中文标题】如何在 Git 上管理多个分支【英文标题】:How to manage Multiple branches on Git 【发布时间】:2021-08-19 09:53:31 【问题描述】:

我正在使用 git 进行一个项目,我被分配了两个任务。让我们假设任务 A 和任务 B。

我从 fork 项目开始并创建了一个名为 A 的分支,此时我不知道我必须执行任务 B。在 fork 项目后,我已将项目克隆到本地电脑。

接下来我运行了以下命令:

git checkout -b A -- 创建分支A

我根据要求对项目进行了更改,然后我做了以下操作

git add *

git commit -m "message"

git push origin A

现在我被分配了任务 B,为此我创建了名为 B 的分支。

git checkout -b B

根据要求进行更改并将这些更改提交给分支 B。

现在的问题是分支 B 也包含在 A 中所做的更改,而是应该遵循主分支加上任务 B 所需的更改。我该如何解决这个问题?分支 B 应遵循主分支并根据分支 B 上的任务 B 进行更改。

我试过git checkout main,但没有这样的分支。

【问题讨论】:

在进一步回答这个问题之前,您需要确定:您是否直接在 GitHub 上进行所有操作? (这很困难,可能是个坏主意。)或者:您是否将 GitHub 存储库克隆到您自己的机器上,例如笔记本电脑? (这通常是要走的路。)如果您确实克隆了您的 GitHub 分支,那么现在涉及 三个 存储库:GitHub 上的两个(原始和您的分支)和三分之一在你的笔记本电脑上。 这很重要,因为每个存储库都有自己的分支名称。当您像这样使用多个存储库时,您将共享提交,但不会共享分支名称 因此,鉴于(根据您的问题)有 三个 存储库,现在重要的是要说:“我的笔记本电脑上有分支 B”或“我有分支 B在我的 GitHub fork 上”或其他任何东西。您可能(也可能不会)在 GitHub 分支中使用与笔记本电脑上相同的名称,但它们是不同的分支! 【参考方案1】:

试试这个:


# Checkout the master branch
git checkout master

# Create a fix branch
git branch task-b-fixup

# Get history of branch task-b
git log --oneline --graph --decorate task-b

# Cherry pick commits from task-b by repeating the following command
git cherry-pick task-b commit hash

现在,如果你愿意,你可以销毁旧的 task-b 分支。

【讨论】:

我无法签出主分支我不知道为什么。我收到一个错误fatal: not a git repository (or any of the parent directories): .git .git 文件夹不存在时会发生该错误!请发布tree -d 命令的输出。 对不起,我不在正确的目录中,现在我可以切换到 master 分支。让我试试解决方案。

以上是关于如何在 Git 上管理多个分支的主要内容,如果未能解决你的问题,请参考以下文章

如何对Git的分支进行管理

Git 分支管理最佳实践

Git:分支管理

git分支管理

如何使用 python 模块的多个 git 分支?

如何在 Git 分支中搜索文件或目录?