2015-10-18 43 views
0

我瞭解什麼是分離HEAD是在GIT?我看到如下。提交是否知道它的孩子? - 分離HEAD

HEAD指向當前活動的分支。如果我在分支中選擇了一個較早的提交,那麼HEAD將存儲該提交的散列(而不是分支名稱) - 這就是所謂的「分離的HEAD」的情況。現在假設我在添加了幾個提交後並且checkout支持master分支(這是我開始的地方)。

現在,我失去了我剛剛提交的提交的確切原因是什麼? 是因爲承諾只知道它的父母,而不是孩子?解決的辦法是在提交之前創建一個處於分離HEAD狀態的新分支,對嗎?這樣我就可以參考從這一點開始的新提交。

有趣source

+2

一個提交只知道它的父母,它不能知道任何孩子,因爲孩子到目前爲止還沒有被製作:)它是一個單一的鏈表,一個方向。我最近發現的一個非常好的答案是關於分離的頭部[that one](http://stackoverflow.com/questions/5772192/how-can-i-reconcile-detached-head-with-master-origin#answer-5772882 ) – tworabbits

回答

0

的確切原因,新提交丟失是因爲在分離HEAD模式創建它們,也沒有提交或標籤引用它們。例如,它們不能通過log找到。

要跟蹤新的提交,您可以在提交額外提交之前或之後創建分離的HEAD狀態中的新分支。或者,您可以在運行checkout之前將最終提交tag切換回master

請注意,提交併未真正丟失 - 至少不會立即丟失。 reflog將記錄HEAD指向哪裏,即使不在分支上。但是,經過很長時間後,未引用的對象可能會被收集到以節省存儲庫中的空間。

相關問題