删除文件夹,但不删除其中的文件

问题描述 投票:0回答:1

如何删除文件夹,但使用Git将文件保留在其中?

例如,假设我的存储库文件夹(RepoFolder / MyFolder)下有一个名为'MyFolder'的文件夹,在'MyFolder'内有文件'file1'和'file2'(RepoFolder / MyFolder / file1 file2)]

我只想删除“ MyFolder”文件夹,并将文件“ file1”和“ file2”保留在“ RepoFolder”下

git directory subdirectory
1个回答
0
投票

这些评论可能是您想要的答案:

git mv MyFolder/* .

接着是删除现在为空的文件夹。

但是请注意,您正在部分地操作work-tree中的文件和文件夹。 Git不存储您的工作树中的内容。相反,Git将您告诉Git复制的内容存储到Git的index

这就是一直运行git add的意义:每次运行的git add都会告诉Git:将其复制到索引中。您不能直接处理索引中的文件:它们采用特殊的仅Git格式。您需要可以处理的副本。 Git将它们放在您的工作树中。但是Git使new从索引提交,而不是从工作树提交。

索引中和Git中的文件不是in文件夹。他们只是长名称带有斜线。也就是说,在索引中,您当前有MyFolder/file1-这是file,没有文件夹,只有一个名为MyFolder/file1的文件和MyFolder/file2。如果您现在进行提交,则[[commit也将具有那些文件名以及这些文件名。

如果并且当您告诉Git提取一些提交,并且

in

提交时,有一个名为super/calli/fragial/istic/expi/ali/docious的文件,Git可能必须告诉您的计算机制作文件夹super(在.),calli(在super中)等等,以便放入名为docious的文件。 Git知道您的计算机要求将文件放入文件夹中,而不只是具有长名称。 Git将根据需要make这些文件夹。但是Git从未stored文件夹!它只是存储了一个长名的文件。无论如何,如果您使用git mv MyFolder/file1 file1MyFolder/file重命名为file1,以便您的[[computer将文件移出文件夹,Git现在在Git的索引中的名称为file1,并且在工作树中有一个名为file1的文件。对file2重复,现在MyFolder为空。如果Git在Git的索引中没有名称以MyFolder/开头的文件,则Git将不再在工作树中的

make目录MyFolder。但是Git也不会remove它:您必须自己做。

(由于Git的索引does中包含名为file1file2的文件,因此您进行的

next

提交将包含该名称的文件。current提交继续具有其中包含MyFolder/file1MyFolder/file2。如果以后再返回并将此提交提取到您的工作树中,Git将在必要时创建MyFolder/。)
© www.soinside.com 2019 - 2024. All rights reserved.