我以通常的方式创建了一个 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 question 或 this book 等)
关于git - 我的 git 分支怎么忘记了它的父分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13651220/