GIt:使用BFG从存储库中删除了几个文件,并且存在巨大的提交差异
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIt:使用BFG从存储库中删除了几个文件,并且存在巨大的提交差异相关的知识,希望对你有一定的参考价值。
我最近使用BFG - 删除文件从存储库中删除了几个大文件,输出似乎是我所期望的。报告的正确文件和大小已从回购中删除,并且本地大小反映了这些删除。
但是,当我上传并与master进行比较时,它会报告存在巨大差异并且会影响数百次提交。我不知道该怎么做或如何理解它;经历太多了。我知道删除文件会重新构建仓库,但我怎么能确定diff中实际发生了什么?
这取决于所有这些文件中所见的差异的性质。
例如,如果它们是EOL差异(行尾),这可能意味着BFG提交重写过程是在本地使用config core.autocrlf完成的,它可能会更改所有文件的eol(除了删除一些他们)。 一旦推送,所有其他文件将显示为“不同”。
它是由java -jar bfg.war --delete-files filename
引起的,它将从所有分支的整个提交历史中删除指定的文件,但是只将一个分支推送到远程。
在使用BFG删除文件之前,假设提交历史如下:
…---A---B---C---D master, origin/master
E---F mybranch, origin/mybranch
当你比较master
分支与mybranch
时,相关的提交是C
,D
,E
和F
。
并假设删除文件是test.txt
,它只存在于commit B
和E
中。当你执行
java -jar bfg.war --delete-files test.txt
提交历史记录将是:
…---A---B'---C'---D' master, origin/master
E'---F' mybranch, origin/mybranch
注意:它不仅重写了本地分支(master
和mybranch
)的提交,还重新指向跟踪分支(origin/master
和origin/mybranch
)。
如果你在那之后做了git fetch
,你会发现当地分支机构的跟踪分支是分歧的:
E---F origin/mybranch
/
B---C---D origin/master
/
…---A---B'---C'---D' master
E'---F' mybranch
如果你只强制将mybranch
推送到远程仓库(而不是强制推送master
分支),那么远程仓库的提交历史将是:
B---C---D master
/
…---A---B'---E'---F' mybranch
所以当你再次比较mybranch
和master
分支时,相关提交将包含B
,C
,D
,B'
,E'
和F'
。
如果您还强制将本地qazxsw point分支推送到远程,则在使用BFG进行比较时,相关提交的计数应该相同。
以上是关于GIt:使用BFG从存储库中删除了几个文件,并且存在巨大的提交差异的主要内容,如果未能解决你的问题,请参考以下文章