如何在 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 上管理多个分支的主要内容,如果未能解决你的问题,请参考以下文章