我們的三個開發人員正在開發一個遠程分支(具有同名的本地跟蹤分支),並且在兩次提交之間以某種方式約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