git - 我使用 git filter-branch 所做的更改发生了什么?
问题描述
我第一次尝试使用git filter-branch
. 我通过编写一个 (Python) 脚本(我们称之为它edit_file
)来编辑文件(我们称之为它target_file
)来做到这一点。然后,我运行了这个命令:
git filter-branch --tree-filter "path/to/edit_file" HEAD
我得到了一个很好的输出流,这似乎表明我已经得到了我想要的效果,但是在查看时target_file
,我没有看到任何变化。当我edit_file
直接运行时,target_file
在我的工作副本中成功接收到我想要的编辑。
听起来我的变化存在于 git 扭曲的头脑中的某个深沉、黑暗和潮湿的隐蔽处,我只需要一个神奇的咒语来召唤我的变化。我不知道这是否正确,也不知道从哪里开始寻找,因为我读过的所有材料(包括官方 git 书)都表明,一旦git filter-branch
完成,我正在处理的分支应该会发生变化这edit_file
将在target_file
...的每个版本上执行
哈普?
抱歉,如果这有点啰嗦,但我不知道需要哪些细节(因为这是混淆的核心特征)。
更多细节:
我说它看起来像filter-branch
我想要的那样的原因是:
我可以看到每次提交时都运行 edit_file 的输出,这表明所有提交都成功了。在
edit_file
不同版本target_file
的.edit_file
git filter-branch
最后,我看到了这个:
Ref 'refs/heads/my-branch' was rewritten
PS:在做 git filter-branch 之前,我跑了
git checkout -b my-branch
创建一个名为 my-branch 的新分支(并检查一下),以防 git filter-branch 出现严重错误。
在看到它git filter-branch ...
保持target_file
不变后,我跑了git checkout -b my-branch
,但我想那什么也没做。我认为它可能会有所作为,因为 from 的最后一行git filter-branch
似乎是说分支my-branch
已更改,但老实说,我不明白那行是什么意思。
解决方案
听起来我的变化存在于 git 扭曲的头脑中的某个深沉、黑暗和潮湿的隐蔽处,我只需要一个神奇的咒语来召唤我的变化。
这就是您不再使用的原因git filter-branch
(它已过时,与 BFG 一起)
推荐阅读
- sql - 具有 n 个数据库的不同连接 SQL
- python - 将较大的数据帧拆分为多个小数据帧
- sql - 如何创建具有多个分类变量和交互效果的数据框,按 ID 分组?
- powershell - 如何在 ForEach 中停止多次遍历整个列表?
- angular - Router.navigation 在承诺中不起作用
- c# - 将数据从excel导入数据库mysql - 如何以yyyy-MM-dd HH:mm:ss格式插入cmd DateTime参数
- text - 标记文本的问题
- excel - 使用 VBA 将多个图像移动到另一个工作表 - 新位置
- tar - tar 不包括父目录并在远程主机上创建 tarball
- java - Java 8 :: 实现 SOAP 调用:获取 com.sun.xml.internal.bind.v2.ClassFactory 在类 javax.activation.DataHandler 上找不到默认构造函数