Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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
Performance 吉特';大提交与小提交的性能对比_Performance_Git - Fatal编程技术网

Performance 吉特';大提交与小提交的性能对比

Performance 吉特';大提交与小提交的性能对比,performance,git,Performance,Git,抛开所有的编码标准和良好实践不谈,Git本身在技术上如何处理大提交和小提交。例如,Git是否更聪明地与这两种情况中的任何一种进行分支合并(例如减少冲突),垃圾收集是否变得更有效,或者类似的情况?还是有什么区别 明确地说,我的意思是当代码从A修改到B时,“大提交”只是直接将代码从A修改到B,而“小提交”有很多中间提交(比如,对于每个小的功能更改),但最终会在完全相同的B中结束。多个小提交”将使用稍多的空间,但这种差异可能不值得为失去的历史付出代价 对packfile本身的影响将取决于以后有多少更改

抛开所有的编码标准和良好实践不谈,Git本身在技术上如何处理大提交和小提交。例如,Git是否更聪明地与这两种情况中的任何一种进行分支合并(例如减少冲突),垃圾收集是否变得更有效,或者类似的情况?还是有什么区别

明确地说,我的意思是当代码从A修改到B时,“大提交”只是直接将代码从A修改到B,而“小提交”有很多中间提交(比如,对于每个小的功能更改),但最终会在完全相同的B中结束。

多个小提交”将使用稍多的空间,但这种差异可能不值得为失去的历史付出代价

对packfile本身的影响将取决于以后有多少更改未更改。例如,如果稍后的提交涉及到之前的提交也涉及到的行,那么这些行的中间状态在一次大提交的历史中将不可见,因此在packfile中没有对象来表示它们

我无法想象分支上的提交数量会减少或增加合并的复杂性;但我不能权威地谈论这一点,因为我还没有详细研究典型的递归合并是如何完成的。我的理解是,这相当于从合并(或拆分)的最后一点开始的diff3。在这种情况下,一个大型提交的效率不会比许多小型提交的效率高或低

还有一个方面要考虑,这取决于时机。如果您正在处理一个分支,并且定期在您自己的提交之间合并上游分支,那么许多小的提交将产生更少的冲突,因为您将与上游分支保持更好的对等性,从而更少地偏离上游分支。当需要合并时,这肯定会导致更少的问题

垃圾收集在很大程度上不会受到影响,因为在这两种情况下,两种方法中都没有悬空提交或松散对象


不过,总而言之,在处理文本时,打包文件通常足够有效,因此能够查看完整、未经篡改的历史记录的好处往往超过其占用额外空间的成本。

我认为这可能会对合并冲突产生影响,因为一次大的提交将导致一次难以管理的大的合并冲突。虽然许多小的提交会导致许多小的合并冲突,这应该更容易处理。@svick You read my mind。我刚刚添加了关于在看到您的评论之前能够保持更好的对等性的部分:)+1:对于那些必须在公司“提交前审查”式操作中操作的人来说,这是一个重要的问题,这种操作往往会减慢提交周期。这可能取决于“大”的尺度和变化的方式。我猜,六个基本合并冲突的限制,或者一个功能更改可能是一个小而大的边界。