Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除旧提交:`git rebase`导致合并冲突_Git_Git Rebase_Git Merge - Fatal编程技术网

删除旧提交:`git rebase`导致合并冲突

删除旧提交:`git rebase`导致合并冲突,git,git-rebase,git-merge,Git,Git Rebase,Git Merge,不幸的是,不久前我们意外地签入了一个大的二进制文件,直到今天还没有人注意到。现在我想放弃那个承诺,让剩下的历史保持原样。我知道改变历史的注意事项,但在这种情况下,我无法避免 我一直在努力实现这一目标约1小时,但未能实现。我找到的最好的命令是 git rebase --interactive --preserve-merges $(EVIL_COMMIT)^ 在编辑的评论中,第一个罪过是邪恶的 不幸的是,git-rebase在合并时停止,并提示手动解决合并冲突。邪恶犯罪只是添加了一些我们的软件为

不幸的是,不久前我们意外地签入了一个大的二进制文件,直到今天还没有人注意到。现在我想放弃那个承诺,让剩下的历史保持原样。我知道改变历史的注意事项,但在这种情况下,我无法避免

我一直在努力实现这一目标约1小时,但未能实现。我找到的最好的命令是

git rebase --interactive --preserve-merges $(EVIL_COMMIT)^
在编辑的评论中,第一个罪过是邪恶的

不幸的是,
git-rebase
在合并时停止,并提示手动解决合并冲突。邪恶犯罪只是添加了一些我们的软件为测试目的而计算的示例文件。因此,它们不应该与刚刚丢失的示例文件有任何冲突

  • 我不明白合并冲突的来源。有人能解释吗
  • 如何解决这个问题

  • 我在谷歌花了很多时间,所以搜索。有些线程涉及类似的主题,但要么是在今天的Git版本中,要么对我不起作用(我只描述了上面的一种方法,因为它是最简单的方法)。

    我会使用
    过滤器分支

    git filter-branch --prune-empty --index-filter '
      git rm --cached --ignore-unmatch path/to/file
    ' --all
    

    我的朋友启动了一个方便的脚本,用于从git历史记录中清除文件,请选中

    这只会从所有版本中删除文件
    path/to/file
    ,对吗?据我所知,它没有删除提交,在删除二进制文件后,提交将保留为空(实际上有4个)。我想你的意思是
    HEAD
    ,而不是
    $(邪恶提交)^
    在这个答案中-否则它只会过滤提交到引入大文件之前的提交。
    git-rm
    的选项是
    --忽略不匹配
    而不使用~ed。我使用
    git-filter分支--索引过滤器'git-rm--cached成功地从我的repo中删除了引入二进制文件的提交--忽略不匹配--删除空文件{A、B、C、D}头
    。我对所有的分支都这样做了,包括上游的分支。不幸的是,
    git-prune
    没有删除对象,但我找不到对文件的任何引用。我尝试过,但它没有列出任何包含二进制文件的提交:-/谢谢你的评论@halo:您必须使reflogs过期,并删除
    refs/原始的
    ref名称空间(出于安全原因由git保留)的可能副本