2013-03-07 52 views
3

以下是幾分鐘前發生在我身上的事情的簡短回顧。 一切都很好。我現在已經找到了代碼。我只是想知道我可能做錯了什麼來達到這種情況。我想從中學習,這樣我可以在將來再次避免它。我在rebase期間如何顯示丟失數據?

FWIW:最近我一直在做一些改版。我通常不這樣操作,我懷疑答案可能在於一些糟糕的重新分配。我們拭目以待。


發現

所以我只是改變成我記得執行一些提交一個分支。事實上,頭腦提交是包含我想要的改變的提交。然而我的改變不在那裏!

取而代之的是隻有一些變化在那裏。 :(

在仔細觀察我發現,剩下的變化只是刪除。我想就像你可能是,我可能沒有所有的變化調用commit之前,它是我自己的錯增加。

更新:原來的承諾應該已經包含了一些補充說,一些刪除和一些修改的文件這種新的「重訂」提交纔出現,從我期待有刪除

調查

我最近放棄了一個我認爲我不再需要的東西。也許我的變化在那裏?

我發現this SO question這解釋瞭如何我會找出所有可達提交使用...

gitk --all $(git fsck --no-reflog | awk '/dangling commit/ {print $3}') 

我設法找到相同的幾個版本提交(即用相同的提交信息)在創建(alledgedly)同一秒

我覺得這是可以理解的,因爲它們很可能是在一個或多個rebase操作期間生成的副本,並且很可能已被賦予原始提交日期。

那麼這怎麼可能?

這是它變得有趣:

其中一個提交的是其他人不一樣。其中一個提交有我所有的缺失數據。

所以我的問題是......我是如何做到這一點的?我是否以一種可以留下一半可用數據的方式進行重組?

任何線索\理論?

更新: 我已經在評論中詢問了我採取什麼步驟來到這裏。 問題在於這是問題的關鍵。

我可能做了什麼來創建2個或更多的描述匹配但內容不匹配的提交副本?

我可以對我可能用過的作品提出一些建議,但就是這樣。 我一直在做一些簡單的重組。即我參觀了一個分支,執行:

git rebase master 

我也做了一些進一步的調查,並發現了正確的承諾確實是最早的。我看過使用gitK,作者旁邊的日期總是在昨天11:50:35。還有另一個日期(提交日期),這似乎與後來的底墊一致,但我發誓,我只用了...

git rebase master 

...從給定源分支

+2

它不是很清楚(至少對我來說)你所做的步驟,以達到這種情況。你能修改一下嗎? – noMAD 2013-03-07 16:51:02

+0

「但是我的變化不存在」 - 你能澄清嗎?在提交中沒有,或者在你的工作樹中沒有? – gcbenison 2013-03-07 17:05:59

+0

@noMAD我試圖向底部添加一些細節,但老實說,我試圖找出我可能做了什麼,所以我真的不能告訴你很多。 – 2013-03-07 17:16:26

回答

2

吹毛求疵由我和其他人除此之外,你認爲我認爲真的很重要的問題(我毫不懷疑地說這個問題)「我在哪裏,我是怎麼來的?」實際上是非常合理的,並且在學習使用git時(甚至對於經驗豐富的git用戶,不時),出現了很多問題。幸運的是,有一個git命令可以解決您的確切問題。它是:

git reflog 

如果你能發佈該命令(當然,前50行左右)的輸出,更翔實的答案可能會開始出現在這個線程了。

+0

我嘗試了這一點,並得知(爲了更好的詞)BadCommit是使用--amend創建的。絕對進步。通常情況下,我可能會這樣做(產生效果),增加對提交的更改。但是,這似乎消除了變化。我將不得不進一步研究。謝謝 – 2013-03-08 09:18:21

0

最近有關於rebase的git列表的討論。

  1. 它忽略默認
  2. 合併它忽略了什麼,已經在「上游」。刪除可能已經在那裏完成了。

rebase的文檔有很多隱藏在文本中需要仔細閱讀的行爲的「旁白」。