从整个Git历史记录中删除文件需要什么样的克隆/签出?

时间:2013-12-20 13:50:09

标签: git

在回顾了很多关于如何从git历史记录中删除文件的类似问题后,我完成了以下命令:

# removes a given file from the repository entirely
git filter-branch --prune-empty -d /dev/shm/scratch \
   --index-filter "git rm --cached -f --ignore-unmatch gridspace_operational.in" \
    --tag-name-filter cat -- --all

但是,当我在我的repo的本地克隆(HEAD指向master)上执行此操作时,它会更改此本地克隆上的内容,但远程存储库上没有任何操作。如何将完整文件删除应用于远程存储库?

2 个答案:

答案 0 :(得分:2)

首先,了解以这种方式修改远程存储库将如何影响其他用户非常重要。如果其他人有clone d,pull ed或fetch来自遥控器,您应该仔细考虑是否确实要进行这些更改。

实际上,修改远程历史记录将导致存储库的所有其他克隆与远程服务器不兼容。如果其中任何一个在本地修改,或者其他开发人员正在积极处理该项目,则需要仔细协调您的push

如果您确实想要进行这些更改,git push --force将导致远程更新以匹配您的本地存储库。

如果删除的数据包含私人信息(如密码),则更改所有这些密码非常重要。考虑他们妥协。

答案 1 :(得分:1)

您需要git push --force到您的遥控器才能在那里反映更改。