2017-03-02 283 views
0

在VSO git倉庫中,在文件歷史記錄中,有「簡單歷史記錄(默認)」,「第一個父項」,「完整歷史記錄」和「完整歷史記錄」(簡化合並)的過濾器選項。這些選項有什麼區別? 「簡單的歷史」和「全面的理解」有什麼區別。VSO git文件歷史中的「簡單歷史記錄(默認)」和「完整歷史記錄」有什麼區別?

我們有像下面提交顯示在簡單的歷史記錄。但是,在我們的開發人員運行命令「get reset --hard origin/develop」之後,在簡單歷史記錄中,只有提交A - B - 光盤。 E和F缺失。在「完整的歷史記錄」中,我們仍然可以看到提交A - B - C - D - E - F。真正的問題,運行「混帳拉」拉最新代碼時,我們只得到了更改代碼犯下d,我們不能拉E和F

我們應該做的代碼修改?因此,我們將E,F取回到簡單的歷史記錄中,並且在運行'git pull'時,E和F中的代碼更改可以被拉到本地磁盤。

+0

什麼是你的分支結構('git的日誌--oneline --decorate --graph --all'的輸出)?你是用「A-B-C-D-E-F」查看文件歷史的分支是什麼?它似乎不是開發分支。 –

回答

1

Git歷史簡化可能是一個令人困惑的野獸。 99%的時間你甚至不知道它存在,但每隔一段時間它會跳出Git的黑暗角落並咬你。在本文中,我們將探討歷史簡化以及在查看文件歷史記錄時如何引起混淆。

讓我們先從一個常見的場景:

你推更改一個文件,然後合併換入的主人。 你的一些同事也將他們的分支合併爲主。 您稍後再回來並注意您的更改已丟失。 尋找罪魁禍首,你去看看文件的歷史,並注意...你的變化甚至沒有列出!? 這裏發生的事情是,Git提交歷史記錄是一棵樹,有時候歷史記錄與實際的文件樹歷史記錄不一樣。在合併提交將文件恢復到其原始狀態的情況下尤其如此。在這種情況下,默認的歷史記錄視圖實際上不會顯示所有的變化,因爲從技術上來說文件沒有改變。

在上述情況下,Git會意識到它可以簡化的歷史和「變化」,你最有可能尋求從日誌被刪除。

除非你以前碰到這個問題,結果往往是大量的頭髮拉,不知道在哪裏到底爲什麼我的變化去了?

來源和更多的細節:https://www.visualstudio.com/en-us/articles/git-log-history-simplification

+0

在我的情況下,有人將更改的文件夾(在提交E和F中)添加到.gitignore文件中,並將提交/合併到主分支。問題是,如果提交/合併包含代碼恢復/回滾,此回滾更改將顯示在提交詳細信息中?在我的情況下,這似乎不是。 –

+0

@AlexCube如果E和F與您所查看的文件('A-B-C-D-E-F')無關,則提交E和F不應顯示在文件歷史記錄中。所以請檢查您查看歷史文件或整個回購。 –