【问题标题】:Git not allowing unrelated historiesGit不允许无关的历史
【发布时间】:2020-11-01 00:56:11
【问题描述】:

为了有一个干净的历史,我使用这个命令创建了一个空分支

git checkout --orphan t0

然后我做了第一次提交:

git commit -m "First commit"

t0 现在拥有开发分支的所有代码并且是相同的(源代码方面)

完成我的工作后,我尝试了拉取请求,但我收到错误,即无法在拉取请求中使用不相关的历史记录。

我试图通过这样做将它合并到开发分支中:

git merge development --squash --allow-unrelated-histories

但我收到了这条消息:

Automatic merge went well; stopped before committing as requested
Squash commit -- not updating HEAD

谁能指导我如何解决问题并将我的代码投入开发?

【问题讨论】:

  • 你能解释一下你对这个单一提交分支的意图是什么吗?您想删除您的 repo 的历史记录,并将此分支作为未来开发的起点吗?
  • 是的,没错。将其视为一个新的起点。所以有这个快照。 这一切都在之前结束的地方在一个单一的提交中这是我正在尝试做的然后我的提交是关于我正在做的新工作

标签: git git-branch pull-request git-history


【解决方案1】:

Git 也完全按照你说的做了。合并进展顺利(它甚至在输出中这么说)。它没有提交合并,因为这就是 squash 合并的工作方式:

生成工作树和索引状态,就像发生真正的合并一样(合并信息除外),但实际上不进行提交

来源:https://git-scm.com/docs/git-merge

您只需要提交暂存文件。要执行正常的合并,只需删除 --squash 标志。

在您的情况下,我不建议进行壁球合并。正常的合并将产生一个包含两个父级的提交,以反映您将两个历史合并在一起的事实。

【讨论】:

  • 在我的情况下你为什么不推荐它?
  • @SimpleFellow:因为 squash 合并不会创建合并提交。合并提交使以后的合并更容易,尤其是当您需要不断地将不相关的历史合并在一起时。
  • 好吧,我不是专家。你的意思是说我做一个定期合并?但它会带回我想避免的所有历史。
  • @SimpleFellow:你需要重复合并还是只合并一次?如果您只需要合并一次,那么只需提交暂存文件并完成它。否则你肯定会想要一个非壁球合并,所以未来的合并不需要你解决以前解决的合并冲突。
猜你喜欢
  • 2017-08-17
  • 2017-12-29
  • 2023-02-08
  • 2017-02-23
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2011-08-10
  • 1970-01-01
相关资源
最近更新 更多