在远程文件夹中删除Git文件夹';不要在拉动时删除本地

在远程文件夹中删除Git文件夹';不要在拉动时删除本地,git,atlassian-sourcetree,Git,Atlassian Sourcetree,我的一幅拼贴画在Git中重新组织了我们的一个项目,这导致先前存在的几个目录被删除。今天早上,当我使用源代码树退出开发时,删除的目录中的文件消失了,但这些目录仍保留在我的本地副本上。有没有一种方法,当类似的事情发生时,目录可以被删除拉 这可能是一个重复的问题,但我能找到的一切都是解决恢复已删除文件的问题 Git跟踪文件,而不是目录。所以对于git来说,空目录根本不存在 但是,您可以使用git clean-df命令删除所有未跟踪的文件和目录。不过要小心,因为这也会删除任何未跟踪的文件 从手册页: C

我的一幅拼贴画在Git中重新组织了我们的一个项目,这导致先前存在的几个目录被删除。今天早上,当我使用源代码树退出开发时,删除的目录中的文件消失了,但这些目录仍保留在我的本地副本上。有没有一种方法,当类似的事情发生时,目录可以被删除拉


这可能是一个重复的问题,但我能找到的一切都是解决恢复已删除文件的问题

Git跟踪文件,而不是目录。所以对于git来说,空目录根本不存在

但是,您可以使用
git clean-df
命令删除所有未跟踪的文件和目录。不过要小心,因为这也会删除任何未跟踪的文件

从手册页:

Cleans the working tree by recursively removing files that are not under version control, starting from the current directory.

Normally, only files unknown to Git are removed, but if the -x option is specified, ignored files are also removed. This can, for example, be useful to remove all build products.

If any optional <path>... arguments are given, only those paths are affected.

-d

    Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory.

-f, --force

    If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second -f is given.

-i, --interactive

    Show what would be done and clean files interactively. See "Interactive mode" for details.

-n, --dry-run

    Don't actually remove anything, just show what would be done.
通过从当前目录递归删除不受版本控制的文件来清理工作树。
通常,只删除Git未知的文件,但如果指定了-x选项,则也会删除被忽略的文件。例如,这对于删除所有生成产品非常有用。
如果有选择的话。。。如果给定参数,则只影响那些路径。
-d
除了删除未跟踪的文件外,还删除未跟踪的目录。如果未跟踪的目录由其他Git存储库管理,则默认情况下不会删除该目录。如果确实要删除这样的目录,请使用-f选项两次。
-f、 --武力
如果Git配置变量clean.requireForce未设置为false,Git clean将拒绝删除文件或目录,除非给定-f、-n或-i。Git将拒绝删除带有.Git子目录或文件的目录,除非给出第二个-f。
-i、 --互动
显示将要执行的操作并以交互方式清理文件。有关详细信息,请参阅“交互模式”。
-n、 --试运行
不要实际移除任何东西,只是展示将要做的事情。

Ok,这是有道理的,遗憾的是这样做时没有只删除空目录的选项,因为如果这是angular应用程序,这也会删除所有下载的节点模块。另一种可能的方法是编写自己的bash脚本,在项目中查找和删除空目录,并在合并后挂钩中运行它。