1

所以我正在处理一个文件并将其提交到我的跟踪分支并推送到远程分支。其他人必须对同一个文件进行了更改并且与我的更改发生冲突,他们解决了问题,但删除了我的编辑作为解决方案。当他们下次访问该应用程序并意识到这是我正在处理的事情时出现了错误。

我试图查看该文件的历史记录,但似乎我的提交已从历史记录中删除。从事该项目的人没有做任何高级 git 技术,它几乎是获取合并、提交推送。

我只是不明白为什么提交从我的历史中消失了。它不应该在那里,或者当存在合并冲突并且有人解决并最终执行合并提交时是否会删除历史记录?

我们在 bitbucket 上托管我们的 repo,我可以去那里找到我的提交以及更新文件所需的代码,但这似乎不太理想。

我们都是 git 的新手,并且第一次在我们的一个项目中使用它,所以我们对这一切都很无知。

4

2 回答 2

3

Git 的内部结构是一个DAG,分支只是指向提交的可变指针(标签是不可变指针)。Git 的日志只显示通过回溯这些分支/提交指针可以访问的提交。不知何故,分支指针发生了变化,以至于您的提交变得无法通过回溯访问。为了导致这种情况发生了一些破坏性的事情,比如变基。

由于您找到了提交,您可以通过执行以下操作查看它适合树的位置:

git checkout -b temp_branch
git reset --hard <lost-commit-sha1>
gitk --all

temp_branch 现在指向您的提交,您可以通过查看 DAG 来了解发生了什么。

于 2012-04-04T18:49:15.403 回答
1

回答你的问题:有人重写了分支历史。没有其他方法可以丢失推送的提交。

避免这种情况的解决方案:将非快进推送限制在大多数开发人员和培训中。

于 2012-04-04T18:47:54.843 回答