我怎样才能删除混帐回购文件?我怎样才能删除混帐回购文件?(How can I delete a fi

2019-05-08 22:12发布

我加入了一个名为"file1.txt"到混帐回购协议。 从那以后,我犯了,增加了几个目录,名称dir1dir2 ,并承诺他们混帐回购协议。

现在目前的回购有"file1.txt"dir1dir2
如何删除"file1.txt" ,而不会影响其他人一样dir1dir2

Answer 1:

使用git rm

git rm file1.txt
git commit -m "remove file1.txt"

但是,如果你想只从Git仓库中删除文件,而不是从文件系统中删除,请使用:

git rm --cached file1.txt
git commit -m "remove file1.txt"

并更改推到远程回购

git push origin branch_name  


Answer 2:

git rm file.txt去除回购的文件, 还可以删除它从本地文件系统

从回购删除文件,而不是从本地文件系统使用的删除:
git rm --cached file.txt

下面具体情况是我使用git来维护我的企业的网站版本控制,但“米奇”目录是与大家分享一个CAD开发私人内容的TMP文件夹中。 当他需要巨大的文件,我做了一个私人的,断开链接目录和ftpd文件那里他通过浏览器获取。 忘记我这样做,我后面进行的git add -A从网站的根目录。 随后, git status显示新的文件需要提交。 现在,我需要从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我。 在“临Git的”一书是在网上 ,并帮助了我很多。



Answer 3:

如果您的文件已经在GitHub上, 你现在(7月2013),可直接从Web GUI删除它!

只需查看您库中的任何文件,单击垃圾箱顶部的图标,并提交清除就像任何其他基于Web的编辑。

那么,“ git pull ”在您的本地回购,这将删除该文件在本地了。
这使得这个回答(环岛)的方式来删除混帐回购协议文件?
(且不说在GitHub上一个文件在“混帐回购协议”)


(提交将反映该文件的删除):

就这样,它不见了。

对于这些功能的帮助,请务必仔细阅读我们的帮助文章创建 , 移动 , 重命名和删除文件。

注:由于这是一个版本控制系统Git始终有你回来,如果你以后需要恢复该文件。

最后一句是指删除的文件仍然是历史的一部分,你可以(通过GitHub的Web界面,但目前还没有)恢复它很容易不够:

请参阅“ 恢复在一个Git回购已删除的文件 ”。



Answer 4:

这是为我工作的唯一选择。

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.sql'

注意:您的文件名或文件类型的电池* .SQL。 要非常小心,因为这会经过每一个承诺和RIP该文件类型了。

编辑:注意 - 此命令后,你将不能够推或拉 - 你将看到拒绝的“无关历史”可以用'混帐推--force -u起源硕士推或拉



Answer 5:

此外,如果它是一个文件夹中被删除,这是以后的子文件夹或文件,请使用:

git rm -r foldername


Answer 6:

更一般地, git help将有助于这样至少简单的问题:

zhasper@berens:/media/Kindle/documents$ git help
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]

The most commonly used git commands are:
   add        Add file contents to the index
   :
   rm         Remove files from the working tree and from the index


Answer 7:

如果你想删除回购的文件,但将它留在文件系统(将未跟踪):

bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"

如果你想删除回购,从文件系统中的文件,那么有两种选择:

  1. 如果文件没有在指​​数上演的变化:

     bykov@gitserver:~/temp> git rm file1.txt bykov@gitserver:~/temp> git commit -m "remove file1.txt" 
  2. 如果该文件已在指数上演的变化:

     bykov@gitserver:~/temp> git rm -f file1.txt bykov@gitserver:~/temp> git commit -m "remove file1.txt" 


Answer 8:

git rm只会从现在起取消对这个分支的文件,但它仍然在历史和git会记住它。

做正确的方法是用git filter-branch ,正如其他人略。 它将改写在分支的历史上的每承诺删除该文件。

但是,即使这样做后,混帐能记住它,因为可以有对它的引用引用日志中,遥控器,标签和等。

如果您想彻底抹杀它一步到位,我建议你使用git forget-blob

https://ownyourbits.com/2017/01/18/completely-remove-a-file-from-a-git-repository-with-git-forget-blob/

这是很容易,只是做git forget-blob file1.txt

这将删除所有参考,做git filter-branch ,最后运行git的垃圾收集器git gc完全得到您的回购摆脱这个文件。



Answer 9:

如果你想使用rm命令在本地文件夹中删除该文件,然后另一种方式将更改发送到远程服务器。

rm file1.txt

git commit -a -m "Deleting files"

git push origin master


Answer 10:

要删除特定文件

git的rm文件名

递归从目录中清除单杆所有未跟踪文件

Git的清洁-fdx



Answer 11:

如果你有GitHub上的Windows应用程序,你可以删除5个简单步骤的文件:

  • 点击同步。
  • 点击该文件所在的目录,然后选择您的文件的最新版本。
  • 点击工具,然后选择“在这里打开一个空壳”。
  • 在shell中,键入:“RM {文件名}”,然后回车。
  • 提交更改并重新同步。


Answer 12:

在我来说,我试过几次提交后删除文件在GitHub上,但保存在计算机上

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master

后来该文件被忽略



Answer 13:

  1. 首先,从本地资源库中删除的文件。

    git的RM -r文件名

    或者,只能从本地存储库,但是从文件系统删除文件

    git的RM --cached文件名

  2. 其次,提交更改到本地仓库。

     git commit -m "unwanted files or some inline comments" 
  3. 最后,更新/推本地变为远程仓库。

     git push 


Answer 14:

注意:如果你想只从下面的Git使用删除文件:

git rm --cached file1.txt

如果你想从硬盘中删除也:

git rm file1.txt

如果你想删除一个文件夹(文件夹可能包含几个文件),因此,你应该删除使用递归的命令,如下:

git rm -r foldername

如果你想删除其他文件夹中的文件夹

git rm -r parentFolder/childFolder

然后,您可以commitpush如常。 但是,如果你想恢复被删除的文件夹,你可以按照这样的: 恢复被删除的文件从Git是可能的。

从文档:

 git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [--] <file>…​ 

OPTIONS

<file>…​

 Files to remove. Fileglobs (eg *.c) can be given to remove all matching files. If you want Git to expand file glob characters, you 

可能需要壳逃避它们。 可以给出一个领先的目录名(例如目录删除目录/文件1和dir /文件2)删除目录中的所有文件,并递归所有子目录,但是这需要明确给出-r选项。 -f --force

 Override the up-to-date check. 

-n --dry-run

 Don't actually remove any file(s). Instead, just show if they exist in the index and would otherwise be removed by the command. 

-r

 Allow recursive removal when a leading directory name is given. 

--

 This option can be used to separate command-line options from the list of files, (useful when filenames might be mistaken for 

命令行选项)。 --cached

 Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone. 

- 忽略UNMATCH

 Exit with a zero status even if no files matched. 

-q --quiet

 git rm normally outputs one line (in the form of an rm command) for each file removed. This option suppresses that output. 

了解更多关于官方文档。



Answer 15:

我尝试了很多的建议和方案似乎没有工作(我就不一一列举的各种问题)。 我落得这样做,它的工作,简单而直观的(对我来说)是:

  1. 其他地方将整个本地回购
  2. 从主重新克隆回购到本地驱动器
  3. 在#1的原件复制回文件/文件夹回从#2的新的克隆
  4. 确保问题大文件或者不存在或排除在.gitignore文件以
  5. 做平常git的添加/ git的承诺/混帐推


Answer 16:

我不小心把它做成,我不想让我的污染“已更改的文件”列表中的回购OBJ和Bin文件

以后我就注意到他们去了遥远,我不理他们,加入这.gitignore

/*/obj
/*/bin

问题是他们已经在远端,当他们得到改变,他们弹出的改变和污染更改的文件列表。

要停止看到他们,你需要从远程资源库中删除整个文件夹。

在命令提示:

  1. CD复制到文件夹回购(即C:\repos\MyRepo
  2. 我想删除SSIS \ OBJ。 看来你只能在顶级删除,所以你现在需要CD到SSIS(即C:\repos\MyRepo\SSIS
  3. 现在键入魔法咒语git rm -r -f obj
    • RM =除去
    • -r =递归除去
    • -f =指力,因为你是说真的
    • obj与文件夹
  4. 现在运行git commit -m "remove obj folder"

我得到了一个惊人的消息,说13个文件改变了315222个缺失

然后,因为我不希望有抬头的CMD线,我去到Visual Sstudio,做了同步,将其应用到远程



Answer 17:

你已经从回购删除文件后git rm可以使用BFG回购清洁彻底,容易抹杀从回购的历史文件。



Answer 18:

柜面如果你没有在你的本地回购,但混帐回购协议通过网络接口文件,然后简单地打开文件在混帐回购协议,并找到在界面右上角删除按钮。 点击这里,查看界面删除选项



文章来源: How can I delete a file from git repo?
标签: git git-rm