我们的三个开发人员正在开发一个远程分支(具有同名的本地跟踪分支),并且在两次提交之间以某种方式约40个文件被还原 - 但是没有这些文件的历史被还原。我们根本无法理解这是怎么发生的。git - 文件被删除并且意外恢复了更改,没有恢复历史
这里发生了什么简单的例子:
开发者乔补充道“的System.out.println(”你好“)到HelloWorld.java,当地承诺,并推动他改变这种远程分支。发生在远程分支(不接触HelloWorld.java)
其他几个提交
开发珍加“的System.out.println(”世界“)到HelloWorld.java,本地提交和推她改变这远程胸罩NCH
其他几个提交发生在远程分支(不接触HelloWorld.java)
如果您检查完整的日志文件,你会看到:
- 简,加世界,3:00 PM
- 乔,新增你好,2:00 PM
所以,你所期望的该文件的当前状态为:
System.out.println("Hello")
System.out.println("World")
果然你可以做的提交之间的差异,看看:
System.out.println("Hello")
+ System.out.println("World")
没有进一步的变化。但实际上,目前的状态是:
System.out.println("Hello")
我们的情况比较复杂。除了修改之外,我们还添加了文件,重命名的文件等。所有这些更改都被还原了:添加的文件被删除,重命名的文件被重新命名为原始名称等。但是,没有任何开发者推动任何提交这些提交的提交文件。
我们也只使用了基本的拉+推命令,因为我们所做的更改都是相互隔离的,所有的自动调整都非常好。我们没有做任何像rebase,樱桃选择等花式。
Github有一个功能“查看这两个提交之间的比较”,这基本上是唯一的证据表明这些更改已被还原。
我正在寻找任何可以运行的git命令,这将有助于进一步调试。我们不确定如何继续。
谢谢
你确定开发者在同一个分支上工作吗?也许这些更改可以在另一个分支上找到。 (没有人做过强制/非快速推进(这会删除历史记录)?) – knittl 2012-01-03 18:34:01
所有开发人员都在同一分支上工作。我检查了所有其他分支(我们只有一对),并没有发现那些变化。 – nogridbag 2012-01-03 18:53:00