【问题标题】:Deleting Files using Git/GitHub使用 Git/GitHub 删除文件
【发布时间】:2010-12-31 07:11:12
【问题描述】:

首先,我是 Git 新手。

我使用 Finder 在我的 Mac 上本地删除了一堆文件。我希望我删除的文件不再显示在当前分支中,但它们确实如此。

任何 Git 用户都知道更新索引的命令吗?

【问题讨论】:

标签: git github


【解决方案1】:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch deletefile.name' --prune-empty --tag-name-filter cat -- --all
git commit -m "Removed deletefile.name"
git push origin master --force

将 deletefile.name 替换为要删除的文件。更详细的解释请看好文章https://help.github.com/articles/remove-sensitive-data

【讨论】:

    【解决方案2】:

    我不知道自从之前的答案以来这是否已经添加到git中,但我只是使用了

    git add -u
    git commit -m "Removed some files"
    

    达到同样的目的。

    【讨论】:

    • 这适用于列出的用例,但这不仅仅是添加文件的删除。它会添加所有以任何方式更改的文件,因此这通常不是删除所有已删除文件的好方法,除非这是您所做的唯一更改。
    【解决方案3】:

    我认为这将是一种更简单的方法来做你想做的事:

    git add . -A 
    

    那么你就这样做:

    git commit -m "removed some files"
    

    如上所述。

    【讨论】:

    • 谢谢。我刚刚在bash 中写了别名来执行上述操作。太棒了。
    • 如果您在同一个“阶段”中添加了一个文件,git 将假定重命名。有什么可做的,还是应该单独提交?
    • @KimPrince - 根据kernel.org,“-A --all 与 -u 类似,但将 与工作树中的文件以及索引匹配。这意味着它会找到新文件以及暂存修改过的内容并删除不再在工作树中的文件。”
    • @KimPrince git help add 会告诉您-A 的含义并列出所有其他开关。
    • 这不仅仅是删除已删除的文件。它会添加目录中更改的所有文件,因此这并不是一个真正令人满意的答案。
    【解决方案4】:

    您可以查看已删除的文件,这些文件仍被“跟踪”:

    git ls-files --deleted
    

    要从分支中删除文件,您可以执行以下操作:

    git ls-files --deleted -z | xargs -0 git rm
    

    来自man git-rm

    从索引中删除文件,或者从工作树和索引中删除文件。 git-rm 不会仅从您的工作目录中删除文件。 (没有删除文件的选项 13 仅来自工作树,但仍将其保留在索引中;如果你想这样做,请使用 /bin/rm。)

    最后,要提交“删除”,请执行以下操作:

    git commit -m "removed some files"
    

    【讨论】:

    • 那么您需要提交更改 - git commit -m "removed some files"
    猜你喜欢
    • 2011-03-07
    • 2022-12-12
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多