【问题标题】:How to remove a branch but keep the orphaned with the same name?如何删除分支但保留同名的孤儿?
【发布时间】:2023-03-13 08:14:01
【问题描述】:

我有一个 Python 项目,其中文档位于一个孤立的 gh-pages 分支中,我通过关注 this tutorial 创建了该分支。项目中有一个 doc/build/html 文件夹,其中文档被编译并且 gh-pages 分支被签出。

现在,我不小心在项目根目录中执行了git checkout gh-pages 命令,它创建了一个新的gh-pages 分支,现在看来我有两个。一个孤儿,一个正常人。是这样吗?

如何删除正常的gh-pages 分支但保留孤立的分支?

【问题讨论】:

  • git checkout gh-pages 不应创建新分支。为什么你认为有两个分支?
  • 因为当我执行命令时,有一条消息指出创建了一个新的gh-pages 分支。当我从 master 推送到 GItHub 时,我会收到一条冲突消息。
  • 你的意思是你执行了git checkout -b gh-pages
  • 好吧,我不确定,因为我可能在执行命令一周后发现了后果。
  • 我通常的工作流程是编译文档,然后从 cddoc/build/html 克隆整个存储库并始终签出 gh-pages 分支并从那里执行 git push origin gh-pages。然后,有一天我不小心从根目录签出了gh-pages

标签: git git-branch branching-and-merging githooks github-pages


【解决方案1】:

发生的事情是您创建了一个名为 gh-pages 的本地分支。它与您的 GitHub 帐户上存在的 gh-pages 分支无关,它只是一个同名的分支。 (这就是为什么当你尝试将它推送到 GitHub 时会发生冲突:这两个分支彼此无关。)

您可以通过以下方式安全地删除您的本地分支:

git branch -d gh-pages

这个命令总是安全的,因为它只会删除一个分支,如果它的所有提交都存在于另一个本地分支中。您不能使用它意外删除孤立的分支。 (不要将它与-D 混淆,即使它具有未合并的唯一提交,它也会删除分支。)

顺便说一句,也许这是您首先要查找的命令:

git checkout --track origin/gh-pages
# or in older versions of Git:
#git checkout -b gh-pages origin/gh-pages

这会从您的源 (= GitHub) 的 gh-pages 分支创建一个名为 gh-pages 的本地分支。您实际上所做的是基于您当前的分支创建了一个名为 gh-pages 的本地分支,可能是 master,而不是基于远程分支。

【讨论】:

  • git checkout --track origin/gh-pages 应该足够了,顺便说一句。
猜你喜欢
  • 2011-01-02
  • 2012-10-22
  • 2013-10-29
  • 2020-11-02
  • 2012-02-07
  • 2016-10-24
  • 1970-01-01
  • 2010-09-23
  • 2014-10-07
相关资源
最近更新 更多