git没有删除目录中的文件?

时间:2015-12-23 06:14:37

标签: git

所以我做了一个新的git分支,做了一些事情,添加了一些文件,测试了一些其他东西。

决定我不想要任何这些更改,所以我在新分支上提交然后删除它认为git会删除在新分支中完成的所有操作。

我切换回我的主人,分支目录中的一些文件仍然存在。

其他文件的修订版返回到预分支状态,这很好,但我仍然留下了相当多的文件夹垃圾。

我试过做......

git reset --hard oldcommit

但这也不会导致文件被删除 如何让git删除这些文件?

1 个答案:

答案 0 :(得分:1)

您必须从未提交的所有内容中“清理”工作目录和索引

你可以用:

rm <any leftovers>
git clean -Xfd // Capital X
git clean -xfd // small x 

以下是一些更高级的选项:

有几个选择:

  1. Git重置为给定提交

    # This will destroy any local modifications.
    # Don't do it if you have uncommitted work you want to keep.
    git reset --hard 0d1d7fc32
    
  2. 结帐最后一次

    git checkout -b <new_branch> <commit id>
    
    // Now your branch contains all the commits up to the 
    // desired one and without the newer ones
    
  3. git revert

    git revert将允许您回滚任何提交,您需要做的是列出A中要删除的所有提交(使用脚本),然后从第二个存储库中还原它们

    git revert <commit1> <commit2> ... <commitn>
    
  4. filter-branch

    使用此选项可完全删除历史记录中的提交。

    git filter-branch --commit-filter '
        if [ `git rev-list --all --grep "<log-pattern>" | grep -c "$GIT_COMMIT"` -gt 0 ]
        then
            skip_commit "$@";
        else
            git commit-tree "$@";
        fi'  
    HEAD