Git checkout / pull不会删除目录?

我有我的回购@ github。 我在家里做了一些工作,并把它推到github上。 它涉及一些文件和目录的删除。 现在我在我的工作箱上,在删除文件和目录之前有一个代码副本。

我发布了以下内容:

git remote update
git checkout HEAD
git pull origin HEAD

它删除了它应该拥有的所有文件,但不删除文件所在的目录。

两个问题:

  • 为什么不删除目录?
  • 有一个git命令,我可以在当前状态下删除它们吗?

  • Git不会跟踪目录,所以它不会删除由于合并或其他更改而变空的目录。 但是,您可以使用git clean -fd删除未跟踪的目录( -fd标志意味着强制删除未跟踪的文件和目录)。


    作为改变工作树(pull,merge,checkout等)的大多数操作的一部分,git将删除所有被该操作设为空的目录(即git删除了最后一个文件)。

    git不会删除任何不完全为空的目录,所以如果你有隐藏或忽略的文件,那么只是因为git从该目录中删除最后一个被跟踪的文件并不一定意味着git将能够删除该目录。 git不认为这是一个错误条件,所以不会抱怨它。


    Git不会跟踪目录,文件(及其路径)。 Git会创建这些路径中的所有目录,如果它们不存在,但(爽!),但它删除它们,如果所有包含在路径中的文件被移动或删除(不冷静☹...但有原因)。

    解决方案 (一旦你已经拉/快进/合并):

    git stash --include-untracked
    git clean -fd
    git stash pop
    

    如果你没有stash clean ,你将失去所有未跟踪的文件(不可逆转地)。

    注意:因为这也会清除所有被忽略的文件,所以您可能需要再次运行一些构建脚本来重新创建项目元数据(例如: ./gradlew eclipse )。 这也删除了空的目录,这些目录从来都不是git文件路径的一部分。

    链接地址: http://www.djcxy.com/p/4283.html

    上一篇: Git checkout/pull doesn't remove directories?

    下一篇: Git pull after forced update