【问题标题】:Does a new branch named as an old re-named branch inherit its commits?被命名为旧的重命名分支的新分支是否会继承其提交?
【发布时间】:2018-08-15 22:24:10
【问题描述】:

几天前,我将my repo 中名为emcee 的分支(在these steps 之后)重命名为emcee_old。然后,我创建了一个名称相同的新分支 (emcee),但从我的 develop 分支中的 不同 点分支。以下是 Github 显示此过程的方式:

问题是,现在如果我检查 new emcee 分支中的一个文件,它包含在 old @987654336 中对该文件所做的提交@。例如,新分支中的 .gitignore 文件显示了 2017 年在旧分支中进行的提交:

更奇怪的是,如果我访问该文件的历史记录(在新分支中)该提交不存在

这里为什么会这样?

【问题讨论】:

  • 我自己发现 GitHub 的“网络图”充满了错误,几乎毫无用处。
  • 到目前为止,我对 Github 的网络图和分支管理有很好的体验。这个问题让我彻底失望了。
  • 那么可能是一个预期问题。 :-) 我总是必须克隆存储库并检查实际图形。网络图似乎是为了与分叉和其他项目有关,它可能在那里有一些意义,但我还没有破译它。
  • @Gabriel 我在这里记录了同样的问题:github.com/isaacs/github/issues/955
  • @GabrielFair 幸运的是,我没有使用 GitHub 的合并工具,而是全部手动完成。我也联系了支持,因为我的仓库是公开的,也许他们可以检查发生了什么并修复它。

标签: git github branching-and-merging


【解决方案1】:

简而言之,Git 不会在名称相似的分支之间进行提交。

所以您创建了一个分支,然后将其重命名并创建了一个同名的新分支?我已经在 git v1.8.4.2 中成功完成了这项工作,但没有使用 Github。

我怀疑 Github 的界面有问题。您可以通过将其从循环中删除并在命令行上本地研究您的存储库的历史来测试它。尝试在终端窗口中运行git log --graph --all 命令并研究输出。这将显示您的所有分支,以及它们的收敛/发散历史。还可以尝试git log --graph --all .gitignore 将历史报告限制为相关文件。我希望您会看到与 Github 显示的不同的更可预测的结果。

如果您的存储库中有其他用户,这将变得更加复杂。协作者可能会在推送期间意外恢复旧分支。不过your link 表示您不必担心这一点,因为这是一项单独的工作。

【讨论】:

  • 感谢您确认这是 Github 的一些奇怪行为,而不仅仅是我的想象 Kevin。
  • 不客气。 “git log”命令有很多花哨的选项,可以更容易地可视化历史。例如,refer to this page.
猜你喜欢
  • 2011-08-19
  • 2022-08-09
  • 2017-02-24
  • 2012-03-20
  • 2016-05-20
  • 1970-01-01
  • 2021-01-31
  • 1970-01-01
  • 2014-09-17
相关资源
最近更新 更多