如何从所有git提交中删除文件夹,但保留它在工作目录
我经常忘记添加node_modules
或components
到.gitignore
,它们在我的git commit中结束并推送到github(它需要永久上传)。无论如何,从每次提交中删除这些文件夹的所有实例,并将其保留在工作目录中?如何从所有git提交中删除文件夹,但保留它在工作目录
简单的方法来从当前版本中删除:
使用git -rm -r --cached
的--cached选项将保持在本地工作目录中的文件或目录,并从混帐删除它。
从git help rm
:
--cached
Use this option to unstage and remove paths only from the index.
Working tree files, whether modified or not, will be left alone.
见https://www.kernel.org/pub/software/scm/git/docs/git-rm.html
从所有版本中删除:
如果你真的需要删除的文件/从所有修订的目录,看看这个线程和专用于此的git帮助页面。
这不会删除所有修订中的文件夹。 – jszakmeister 2013-04-06 23:34:47
@jszakmeister好点,我已经更新了我的答案 – jszobody 2013-04-06 23:39:37
二者必选其一git -rm -r --cached
像jszobody建议,或做git reset HEAD
这是一个有点少打字和git status
建议从删除文件的方式提交(前实际调用git commit
)。这就是所谓的暂停。
但是,git commit
之后没有简单的方法来删除这些文件夹。如果上次提交的提交更改不想保留,请将本地副本修改为您希望的状态,请运行git add .
并执行git commit --amend
。如果不必要的更改是在进一步提交或多次提交中提交的,则必须通过git rebase -i
进行重定位。我建议你阅读关于它的手册页或寻找一些教程。
如果您已将更改推送至github,则必须在您的rebase或修改后运行git push -f
。如果你在团队中工作,重新推迟提交的提交是一个坏主意,因为它会给你的提交不同于你的团队其他成员的提交。
还没有尝试过,但我必须做到多个回购,当我做我会接受。 – ThomasReggi 2013-04-10 15:11:35