需要修改第一次提交或在它之前添加新的提交

时间:2013-12-17 14:23:01

标签: git rebase

我发现我的.gitignore文件根本没有提交到我的git存储库中。我在我的存储库中有大约300个提交,我创建了一些分支:我正在使用git流模型,所以现在我拥有了master,develop和一些功能分支

我不在乎如何,但我想以某种方式修改第一次提交以及之后的所有版本。

我认为我有两种选择:

  1. 在第一次提交之前将.gitignore添加为新提交,仅包含.gitignore文件。
  2. 以某种方式修改第一次提交
  3. 我使用this link尝试了#1选项但是在rebase上我得到了这个错误

    $ 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)。

    任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

您是否尝试过交互式rebase?

$ git rebase -i --root

然后在第一次提交中输入“edit”。添加新文件,然后添加git rebase --continue,它就能满足您的需求。

答案 1 :(得分:0)

我没有意识到git需要增加内存以获得长期重组。有趣。

你可以分阶段进行改造。您不必将master作为目标。你可以在分支的中途给它一个提交,或1/3的方式。这不会在最后移动主标签,所以你必须在其上删除一个标签或临时分支名称,但是你可以使用下一位重新标记,然后在你的记忆可以分阶段完成处理。最后,您可以git reset --hard将master移动到新分支。