git - 我的 git 分支怎么忘记了它的父分支?

标签 git

我以通常的方式创建了一个 git 功能分支:

git checkout develop
git checkout -b new_feature_branch

当将功能 merge 回主开发分支时, merge 产生了大量冲突(远远超出预期,因为主线没有太大变化)。

经调查,我的功能分支似乎以某种方式成功地脱离了它的父分支。历史记录中缺少对此分支的前 24 次提交,来自主线的初始分支也是如此。

我知道这正是 24 次提交,因为它们列在 git reflog --all | grep new_feature_branch 中.

由于缺少这些早期提交,分支现在似乎从整个存储库的副本开始,当我尝试将其 merge 回开发中时,会产生很多冲突。

这是怎么发生的?

如何恢复丢失的提交?

最佳答案

How did this happen?

  • 您从 develop 分支而来- 您确定您的本地副本(而不是 origin/develop )在您分支时是最新的吗?
  • develop肯定是您想要的父分支(不是 master 或其他东西)?
  • 你 rebase 了吗develop分支后?这可能会重写 develop 中的父提交。但不在 new_feature_branch 中的,历史。
  • 你 rebase 了吗new_feature_branch在某个时刻,并意外地以这种方式重写了分支点之前的父提交?

How can I recover the missing commits?

只需将您的分支重新设置为所需的分支点(请参阅 this questionthis book 等)

关于git - 我的 git 分支怎么忘记了它的父分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651220/

相关文章:

sql-server - 使用 SQL Server 的 git 的最佳实践是什么

python - pip 连接失败 : cannot fetch index base URL http://pypi. python.org/simple/

git - 切换分支后删除的节点模块

c# - 如何使用 LibGit2Sharp 从 Git 获取更改?

git - git - 错误 : bad signature without losing (non-committed) data 有什么解决方案

git - 您如何 merge 已还原的提交?

git - 如何防止 git 将更改推送到某些文件

git - Gitlab中 "Allowed to push"和 "Allowed to merge"的含义

git - 使用 GitHub Actions 自动更新 repo 的子模块

Android Studio 提交和推送错误