Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从所有以前的git提交中删除.idea目录_Git_Github_Version Control - Fatal编程技术网

从所有以前的git提交中删除.idea目录

从所有以前的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

我在本地Git存储库中有大约50次提交。在初始提交中,我意外地包含了
.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@Venkat
git 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@Venkat
git filter branch--force--index filter'git ls files|grep/\\.DSStore$| xargs git rm--cached--ignore unmatch'--prune empty--tag name filter cat--all
Hi?