在Git存储库中,如何正确重命名目录?

时间:2012-06-25 05:15:07

标签: git directory rename

我认为应该将要重命名的目录复制到具有所需名称的新目录,delete the old directorygit addgit commitpush所有内容。但这是最好的方式吗?

10 个答案:

答案 0 :(得分:873)

基本重命名(或移动):

git mv <old name> <new name>

区分大小写的重命名 - 例如。从casesensitiveCaseSensitive - 您必须使用两步:

git mv casesensitive tmp
git mv tmp CaseSensitive

More about case sensitivity in Git…

...然后是commit和push将是重命名git仓库中目录的最简单方法。

答案 1 :(得分:81)

如果收到此错误:致命:重命名'foldername'失败:参数无效

试试这个:

git mv foldername tempname && git mv tempname folderName

答案 2 :(得分:46)

<强> 1。将文件夹的名称从旧文件夹更改为新文件夹

git mv oldfolder newfolder

<强> 2。如果newfolder已经在您的存储库中您要覆盖它并使用: - 强制

git mv -f oldfolder newfolder

不要忘记将更改添加到索引和&amp;用git mv重命名后提交它们。

第3。在不区分大小写的文件系统上将foldername重命名为folderName

使用普通的mv命令(不是git mv)进行简单重命名不会被git识别为文件更改。如果您使用'git mv'命令尝试它,如下面一行

git mv foldername folderName

如果您使用不区分大小写的文件系统,例如你在Mac上并且没有将它配置为区分大小写,你会遇到类似这样的错误消息:

致命:重命名'foldername'失败:参数无效

以下是您可以做的工作: -

git mv foldername tempname && git mv tempname folderName

这会通过首先将文件夹重命名为完全不同的foldername来拆分重命名过程。将其重命名为不同的foldername后,该文件夹最终可以重命名为新的folderName。在那些'git mv'之后,再次,不要忘记添加和提交更改。虽然这可能不是一种漂亮的技术,但它的工作原理非常好。文件系统仍然无法识别字母大小写的变化,但git会将其重命名为新的foldername,这就是我们想要的全部内容:)

答案 3 :(得分:9)

您可以使用文件系统重命名目录。然后,您可以git rm <old directory>git add <new directory>Help page)。然后你可以提交并推送。

Git将检测到内容是相同的,并且它只是一个重命名操作,它将在历史记录中显示为重命名条目。您可以在使用git status

提交之前检查是否属于这种情况

答案 4 :(得分:3)

从Web应用程序我认为你不能,但你可以重命名Git Client中的所有文件夹,它会将你的文件移动到新的重命名文件夹中,而不是提交并推送到远程存储库。

我有一个非常类似的问题: 我不得不将不同的文件夹从大写重命名为小写(如Abc - &gt; abc),我用虚拟名称重命名所有文件夹(如'abc___'),然后将其重命名为远程存储库,之后我重命名了所有文件夹使用小写字母(如abc)的原始名称,并采取了它们!

答案 5 :(得分:3)

很多正确答案,但是当我在这里复制并粘贴带有历史记录的文件夹重命名时,我发现 这个

git mv <old name> <new name>

会将旧文件夹(本身)移动到新文件夹

同时

git mv <old name>/ <new name>

(注意'/') 将嵌套内容旧文件夹移动到新文件夹

这两个命令都没有沿嵌套文件的历史记录复制。我最终分别重命名了每个嵌套文件夹✔

git mv <old name>/<nest-folder> <new name>/<nest-folder>

答案 6 :(得分:1)

对于区分大小写的重命名,git mv somefolder someFolder以前为我工作,但由于某种原因,今天没有工作。因此,作为一种解决方法,我创建了一个新文件夹temp,将somefolder的所有内容移至temp,删除了somefolder,提交了temp,然后创建了{ {1}},将someFolder的所有内容移至temp,删除了someFolder,提交并推送了temp,它可以正常工作!在git中显示为someFolder

答案 7 :(得分:0)

我分两步解决了。要使用mv命令重命名文件夹,您需要执行此操作的权限,如果没有权限,可以按照以下步骤操作。 假设您要将区分大小写重命名为区分大小写。

步骤1:将文件夹(区分大小写)重命名为资源管理器中的其他名称。     例如重命名对文件夹1区分大小写  提交此更改。

第2步:将此新命名的文件夹(folder1)重命名为预期的区分大小写的名称(区分大小写)。将folder1重命名为区分大小写。  提交更改。

答案 8 :(得分:-3)

git rm -rf --cached path/to/your/directories

然后重新添加并提交。

答案 9 :(得分:-9)

只需重命名该文件夹即可。 git是一个“内容跟踪器”,所以SHA1哈希是相同的,git知道,你重命名它。唯一改变的是树对象。

rm <directory>
git add .
git commit