2013-12-17 66 views
1

我發現我的.gitignore文件根本沒有被提交到我的git倉庫中。我有我提交的幾個分支在我的倉庫中約300提交:我使用git流模型,所以現在我有主人,開發和一些功能分支需要修改第一次提交或在它之前添加一個新的提交

我不在乎如何,但我想修改第一以某種方式承諾它後面的所有版本。

,因爲我看到它,我有兩個選擇:

  1. 添加的.gitignore作爲新的提交第一次提交只包含的.gitignore文件之前。
  2. 修改一次提交莫名其妙

我嘗試選項#1使用this link但衍合我得到這個錯誤

$ git rebase --onto newroot --root master 
First, rewinding head to replay your work on top of it... 
Applying: First Commit 
fatal: Out of memory, realloc failed 
Repository lacks necessary blobs to fall back on 3-way merge. 
Cannot fall back to three-way merge. 
Patch failed at 0001 First Commit 
The copy of the patch that failed is found in: 
    c:/Temp/.git/rebase-apply/patch 

When you have resolved this problem, run "git rebase --continue". 
If you prefer to skip this patch, run "git rebase --skip" instead. 
To check out the original branch and stop rebasing, run "git rebase --abort". 

我最大的文件是40MB左右,整個項目規模約爲1.6GB 。 當我運行這個命令時,我關閉了正在運行的所有東西,並擁有大約10GB的可用內存(總共有16GB)。

任何想法如何做到這一點?

+1

爲什麼不試圖修復現有的回購?刪除不需要的文件等 – Robert

+0

我需要添加一個新文件。你指的是什麼文件刪除? –

+0

我明白了。那麼,你真的需要第一次提交該文件嗎?爲什麼不只是將其添加到當前的上游? – Robert

回答

0

我沒有意識到git需要增加長基線的內存級別。有趣。

你可以分階段進行rebase。您不必將其作爲目標給予master。你可以在分支的一半或者三分之一的地方給它一個提交。這不會在最後移動主標籤,因此您必須在其上放置標籤或臨時分支名稱,但是可以使用下一個標籤將其重新綁定到該標籤上,然後分階段執行,以便您的內存可以處理。最後,您可以將git reset --hard移動到新分支。

+0

它看起來像失敗的rebase是在第一次提交,這是整個1.6GB的項目文件。我會嘗試重新綁定它,並很快更新結果 –

+0

也許我不明白你,但我試着運行「git rebase --treeroot --root d206a41」其中d206a41是第一次提交的id。再次我得到了內存不足錯誤 –

+0

我可以通過手術解決這個問題,但我不確定你想要走那條路線。這將需要創建一個新的回購,作爲一個遠程獲取它,重新安排提交,並手動編輯提交併手動重新哈希。 –

1

您是否嘗試過互動式重置?

$ git rebase -i --root 

然後在第一次提交中放入「編輯」。在那裏添加你的新文件,然後git rebase --continue,它會做你所需要的。

+0

我剛剛嘗試了它,並在VIM(我在Windows上使用sourcetree)快速崩潰過程後選擇編輯第一次提交。我使用「git add .gitignore」添加了gitignore,然後做了「git commit --amend」,然後「git rebase --continue」。重新開始計數,但後來我得到了一個錯誤「錯誤:無法應用6e2870c ...重新格式化web.config」。這個特定的提交是在7月份合併到開發分支的特性分支中。可能是什麼問題呢? –

+0

Rebase展平合併。您可以使用'-p'來保存合併,但是可以通過交互重新分頁和編輯進行嚴重的交互(請參閱文檔)。我認爲如果你只是修改根提交,你會沒事的,但你可能想'git filter-branch'而不是rebase。 – torek

+0

torek,你有沒有關於如何添加文件到第一次提交或添加一個新的提交作爲第一個使用'git filter-branch'的示例? –

相關問題