mve*_*man 2892 git repository remote-server delete-file git-rm
我的初始提交包含一些日志文件.我已添加*log到我的.gitignore,现在我想从我的存储库中删除日志文件.
git rm mylogfile.log
Run Code Online (Sandbox Code Playgroud)
将从存储库中删除文件,但也将从本地文件系统中删除它.
如何在不删除文件的本地副本的情况下从存储库中删除此文件?
bdo*_*lan 4127
对于单个文件:
git rm --cached mylogfile.log
Run Code Online (Sandbox Code Playgroud)
对于单个目录:
git rm --cached -r mydirectory
Run Code Online (Sandbox Code Playgroud)
Sam*_*son 265
要从repo中删除整个文件夹(如Resharper文件),请执行以下操作:
git rm -r --cached folderName
Run Code Online (Sandbox Code Playgroud)
我已经提交了一些resharper文件,并且不希望这些文件持续存在于其他项目用户.
nul*_*ull 192
您还可以根据.gitignore从存储库中删除文件,而不从本地文件系统中删除它们:
git rm --cached `git ls-files -i -X .gitignore`
Run Code Online (Sandbox Code Playgroud)
或者,在Windows Powershell上:
git rm --cached $(git ls-files -i -X .gitignore)
Run Code Online (Sandbox Code Playgroud)
eir*_*ios 81
根据我的答案:https://stackoverflow.com/questions/6313126/how-to-remove-a-directory-in-my-github-repository
删除目录的步骤
git rm -r --cached File-or-FolderName
git commit -m "Removed folder from repository"
git push origin master
Run Code Online (Sandbox Code Playgroud)
在下次提交中忽略该文件夹的步骤
要在下次提交时忽略该文件夹,请在根目录中创建一个名为.gitignore的文件 ,并将该文件夹名称放入其中.您可以根据需要添加任意数量
.gitignore文件将如下所示
/FolderName
Run Code Online (Sandbox Code Playgroud)

BoD*_*BoD 68
此外,如果您提交了敏感数据(例如包含密码的文件),则应将其从存储库的历史记录中完全删除.以下是解释如何执行此操作的指南:http: //help.github.com/remove-sensitive-data/
mAs*_*pEE 61
更通用的解决方案:
编辑.gitignore文件.
ECHO mylogfile.log >> .gitignore
从索引中删除所有项目.
git rm -r -f --cached .
重建索引.
git add .
进行新的提交
git commit -m "Removed mylogfile.log"
Rys*_*aum 22
Git允许您通过假设它们不变来忽略这些文件.这是通过运行
git update-index --assume-unchanged path/to/file.txt命令完成的.一旦标记文件,git将完全忽略该文件的任何更改; 它们不会在运行git status或git diff时出现,也不会被提交.
(来自https://help.github.com/articles/ignoring-files)
因此,不要删除它,而是永远忽略对它的更改.我认为这只适用于本地,所以除非他们运行与上面相同的命令,否则同事仍然可以看到它的变化.(仍然需要验证这一点.)
注意:这不是直接回答问题,而是基于其他答案的评论中的后续问题.
Mic*_*ant 17
注意:这不涉及敏感信息的历史记录。
这个过程肯定需要对 git 的运行情况有一定的了解。随着时间的推移,我学会了执行以下流程:
.gitignore以忽略它们 - 在许多情况下,例如您的情况,父目录,例如log/将是要使用的正则表达式。.gitignore文件更改(不确定是否需要推送,如果完成也没有什么坏处)。git rm --cached some_dir/git add .git commit -m"removal"Afr*_*mad 12
如果您只想解开文件而不是从本地和远程仓库中删除,请使用以下命令:
git update-index --assume-unchanged file_name_with_path
Run Code Online (Sandbox Code Playgroud)
以上答案对我不起作用.我曾经filter-branch删除所有提交的文件.
使用以下命令从git存储库中删除文件:
git filter-branch --tree-filter 'rm file'
Run Code Online (Sandbox Code Playgroud)
使用以下命令从git存储库中删除文件夹:
git filter-branch --tree-filter 'rm -rf directory'
Run Code Online (Sandbox Code Playgroud)
这将从所有提交中删除目录或文件.
您可以使用以下命令指定提交:
git filter-branch --tree-filter 'rm -rf directory' HEAD
Run Code Online (Sandbox Code Playgroud)
或范围:
git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD
Run Code Online (Sandbox Code Playgroud)
要将所有内容推送到远程,您可以:
git push origin master --force
Run Code Online (Sandbox Code Playgroud)
我想添加@bdonlan已接受的答案。
git rm --cached filename
Run Code Online (Sandbox Code Playgroud)
它应该从本地暂存区域中删除您在之前的某些提交中错误提交的一些文件。
它将文件从“已跟踪” “未跟踪”状态移动,我的意思是,它删除文件并再次添加它们。
所以,git 不再了解它们了。
摘要:您从暂存中删除文件然后推送它们将导致协作团队的本地存储库上的文件也被删除(,将是。)
| 归档时间: |
|
| 查看次数: |
779833 次 |
| 最近记录: |