从所有以前的git提交中删除.idea目录
我在本地Git存储库中有大约50次提交。在初始提交中,我意外地包含了从所有以前的git提交中删除.idea目录,git,github,version-control,Git,Github,Version Control,我在本地Git存储库中有大约50次提交。在初始提交中,我意外地包含了.idea文件夹,现在我必须从初始提交中删除该文件夹中的所有文件。有可能实现这一目标吗 我尝试了以下命令,但将其转换为单独的提交,而不链接到以前的提交: $ echo '.idea' >> .gitignore $ git rm -r --cached .idea $ git add .gitignore $ git commit --amend 您可以使用过滤器分支执行此操作: cp -r .idea .idea
.idea
文件夹,现在我必须从初始提交中删除该文件夹中的所有文件。有可能实现这一目标吗
我尝试了以下命令,但将其转换为单独的提交,而不链接到以前的提交:
$ echo '.idea' >> .gitignore
$ git rm -r --cached .idea
$ git add .gitignore
$ git commit --amend
您可以使用
过滤器分支
执行此操作:
cp -r .idea .idea.bak
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch -r .idea' --prune-empty --tag-name-filter cat -- --all
这将从所有过去的提交中删除.idea
。
之后,您可以像以前一样更新.gitignore
文件,
避免将来错误地添加.idea
请注意,这将重写存储库的历史记录。
如果是公开的,而且还有其他合作者,
然后仔细想想这是否真的值得去做
有关更多详细信息,请参阅
您可以使用
过滤器分支来执行此操作:
cp -r .idea .idea.bak
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch -r .idea' --prune-empty --tag-name-filter cat -- --all
这将从所有过去的提交中删除.idea
。
之后,您可以像以前一样更新.gitignore
文件,
避免将来错误地添加.idea
请注意,这将重写存储库的历史记录。
如果是公开的,而且还有其他合作者,
然后仔细想想这是否真的值得去做
有关更多详细信息,请参阅
修改git历史记录是危险的事情。一旦你承诺并推动了,除非你准备做一些回购手术,否则它或多或少是一成不变的。修改git历史是危险的。一旦你承诺并推动,除非你准备做一些回购手术,否则或多或少都会一成不变。谢谢janos,我还有一个疑问,那就是如何删除所有多次出现的.DSStorefiles@Venkatgit filter branch--force--index filter'git ls files|grep/\\.DSStore$| xargs git rm--cached--ignore unmatch'--prune empty--tag name filter cat--all
Hi,我还有一个疑问,那就是如何删除所有多次出现的.DSStorefiles@Venkatgit filter branch--force--index filter'git ls files|grep/\\.DSStore$| xargs git rm--cached--ignore unmatch'--prune empty--tag name filter cat--all
Hi?