什么git filter-branch没有参数呢?

时间:2015-11-05 19:57:50

标签: git

没有参数的git filter-branch做什么?

我在我的回购上意外地过早地进入了这个。

3 个答案:

答案 0 :(得分:2)

无。它似乎计算了哈希值并没有发现任何变化。

答案 1 :(得分:0)

Filter-branch检查并执行由git rev-list输出的提交输出所需的任何重写。没有参数传递,rev-list使用HEAD,即当前的结账。

除了您在命令行中指定的任何修改外,filter-branch还会烘焙来自.git/info/graftsgit replace的本地覆盖。

所以,为了孤立当前结帐,你可以git rev-parse @ >.git/info/grafts; git filter-branch

答案 2 :(得分:0)

这用于移植,如git filter-branch中所述:

  

要将提交(通常位于另一个历史记录的顶端)设置为当前初始提交的父级,以便将其他历史记录粘贴到当前历史记录之后:

git filter-branch --parent-filter 'sed "s/^\$/-p <graft-id>/"' HEAD

使用git 2.6.4或git 2。7(2015年12月)

会更快

commit 348d4f2Jeff King (peff)(2015年11月6日) Junio C Hamano -- gitster --合并于commit 2e5adec,2015年12月4日)

  

filter-branch:尽可能跳过索引读/写

     

如果用户指定索引过滤器但不指定树过滤器,filter-branch会巧妙地避免完全检出树。
  但是我们不进行下一级优化:如果没有索引或树过滤器,我们根本不需要读取索引。

     

这可以大大加快我们只是更改提交对象的情况(例如,将移植物固定到位)
  以下是新增的性能测试中的数字:

Test                  HEAD^              HEAD
---------------------------------------------------------------
7000.2: noop filter   13.81(4.95+0.83)   5.43(0.42+0.43) -60.7%