如何从存储库中删除“file1.txt”?
当前回答
在我的案例中,我尝试在几次提交后删除github上的文件,但保存在计算机上
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master
后来这个文件被忽略了
其他回答
如果您想使用rm命令从本地文件夹中删除文件,然后将更改推送到远程服务器,则可以使用另一种方法。
rm file1.txt
git commit -a -m "Deleting files"
git push origin master
如果要从存储库中删除文件,但将其保留在文件系统中(将被取消跟踪):
bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"
如果要从repo和文件系统中删除文件,则有两个选项:
如果文件在索引中没有暂存更改:bykov@gitserver:~/temp>git rm file1.textbykov@gitserver:~/temp>gitcommit-m“删除file1.txt”如果文件在索引中进行了更改:bykov@gitserver:~/temp>git rm-f file1.textbykov@gitserver:~/temp>gitcommit-m“删除file1.txt”
gitrm file.txt从repo中删除文件,但也从本地文件系统中删除该文件。
要从存储库中删除文件而不从本地文件系统中删除,请使用:git rm--缓存文件.txt
下面的确切情况是,我使用git来维护我公司网站的版本控制,但“mickey”目录是一个tmp文件夹,用于与CAD开发人员共享私人内容。当他需要庞大的文件时,我创建了一个私有的、未链接的目录,并在那里ftpd文件,供他通过浏览器获取。我忘记了这一点,后来在网站的基本目录中执行了git add-a。随后,git状态显示了需要提交的新文件。现在我需要从git的跟踪和版本控制中删除它们。。。
下面的示例输出来自我刚刚发生的事情,我无意中删除了.003文件。谢天谢地,我不在乎本地副本到.003发生了什么,但其他一些当前更改的文件是我刚刚对网站进行的更新,如果在本地文件系统中被删除,那将是一个史诗!“本地文件系统”=实时网站(不是很好的做法,但却是现实)。
[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: shop/mickey/mtt_flange_SCN.7z.001
# modified: shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.002
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# modified: shop/mickey/mtt_flange_SCN.7z.001
[~/www]$
更新:这个答案获得了一些流量,所以我想我应该提到我的另一个Git答案分享了一些很棒的资源:这个页面有一个帮助我解开Git神秘面纱的图形。“Pro Git”这本书是在线的,对我帮助很大。
我有obj和bin文件,它们意外地进入了repo,我不想污染我的“已更改文件”列表
当我注意到他们去了遥控器后,我将其添加到.gitignore中,忽略了他们
/*/obj
/*/bin
问题是它们已经在远程,当它们被更改时,它们会弹出为已更改,并污染已更改的文件列表。
要停止查看它们,您需要从远程存储库中删除整个文件夹。
在命令提示中:
CD到repo文件夹(即C:\repo\MyRepo)我要删除SSIS\obj。似乎只能在顶层删除,因此现在需要将CD插入SSIS:(即C:\repo\MyRepo\SSSIS)现在输入魔法咒语git rm-r-f objrm=删除-r=递归删除-f=表示力,因为你真的是这么想的obj是文件夹现在运行gitcommit-m“删除obj文件夹”
我收到一条警告消息,说13个文件更改了315222个删除
然后,因为我不想查找CMD行,我进入Visual Sstudio并执行了同步,将其应用到远程
如果您有GitHub for Windows应用程序,您可以通过5个简单步骤删除文件:
单击同步。单击文件所在的目录,然后选择文件的最新版本。单击工具并选择“在此处打开外壳”在shell中,键入:“rm{filename}”并按enter键。提交更改并重新同步。
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别