2012-07-18 30 views
1

藏匿我有大量的不可達的提交(愚蠢的我試圖clear控制檯,而我已經git stash鍵入)如何添加一個無法git的承諾由其哈希

我已經得到的一個散列這些哈希從一個混亂與git fsck

有一些簡單的方法xargs這些哈希回到git存儲?

+0

你的標題說「不可讀」,但你的描述說「無法訪問」,這是什麼? – 2012-07-18 01:55:02

+1

無法訪問。我的錯。仍然沒有直接打字>> – arcyqwerty 2012-07-18 01:57:26

回答

3

快速回答:

git fsck | grep commit | cut -d' ' -f3 | 
    while read hash; do git rev-parse --verify --quiet $hash^2 && echo $hash; done | 
    xargs git log --grep WIP --pretty=oneline | 
    while read hash wip on branch commit junk; do 
    git checkout $hash; git reset --soft $commit; git stash; done 

注意,這將藏匿的索引和工作樹的部分分成不同的藏匿處。你能舉一個你保存的輸出的例子嗎?存儲器有多個部分,您可能沒有所有部件的SHA。

已編輯爲包含示例存儲發現腳本以從右側相對基準重新生成存儲。

+0

我已經把它列出到了'HASH WIP on master:'message'使用'git fsck | grep commit |切-d''-f3 |同時讀取散列;做git rev-parse --verify --quiet $ hash^2 && echo $ hash;完成| xargs git log --grep WIP --pretty = oneline' – arcyqwerty 2012-07-18 02:09:06

+0

然後通過哈希來管理'awk'{print $ 1}' - 我知道我假設所有存儲的提交都有'WIP'在提交信息 – arcyqwerty 2012-07-18 02:10:40

+0

@arcyqwerty:然後我的答案將重新連接所有位並將它們放入存儲中,當然,正如我所說的,如果您有多行輸出並且具有相同的註釋(這意味着索引和工作目錄都被不同地存儲),那麼他們將形成兩個窗口。讓我知道這是否發生在你身上或你是否在意。我可以嘗試調查一下更復雜的重新連接 – 2012-07-18 02:18:40