没有参数的git filter-branch
做什么?
我在我的回购上意外地过早地进入了这个。
答案 0 :(得分:2)
无。它似乎计算了哈希值并没有发现任何变化。
答案 1 :(得分:0)
Filter-branch检查并执行由git rev-list
输出的提交输出所需的任何重写。没有参数传递,rev-list使用HEAD,即当前的结账。
除了您在命令行中指定的任何修改外,filter-branch还会烘焙来自.git/info/grafts
和git 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 348d4f2见Jeff 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%