859

我认为应该可以将要重命名的目录复制到具有所需名称的新目录,并删除旧目录,和git addgit commit以及push所有内容。但这是最好的方法吗?

4

8 回答 8

1602
于 2012-06-25T05:22:38.827 回答
151

如果您收到此错误:致命:重命名“文件夹名”失败:参数无效

尝试这个:

*尼克斯操作系统

git mv foldername tempname && git mv tempname folderName

操作系统

git config core.ignorecase false; git mv foldername tempname; git mv tempname folderName

于 2014-11-26T00:45:40.983 回答
81

1.将文件夹的名称从旧文件夹更改为新文件夹

git mv oldfolder newfolder

2. 如果 newfolder 已经在您的存储库中并且您想覆盖它并使用:- 强制

git mv -f oldfolder newfolder

不要忘记将更改添加到索引并在使用 git mv 重命名后提交它们。

3. 在不区分大小写的文件系统上将文件夹名重命名为文件夹名

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

git mv foldername folderName

如果您使用的是不区分大小写的文件系统,例如您在 Mac 上并且没有将其配置为区分大小写,您将遇到如下错误消息:

致命:重命名“文件夹名”失败:参数无效

为了使它发挥作用,您可以采取以下措施:-

git mv foldername tempname && git mv tempname folderName

这通过首先将文件夹重命名为完全不同的文件夹名称来拆分重命名过程。将其重命名为不同的文件夹名称后,该文件夹最终可以重命名为新的文件夹名称。在那些 'git mv' 之后,不要忘记添加并提交更改。虽然这可能不是一个漂亮的技术,但它工作得非常好。文件系统仍然无法识别字母大小写的变化,但是由于将其重命名为新的文件夹名称,git 确实如此,这就是我们想要的 :)

于 2016-03-04T17:42:06.530 回答
13

您可以使用文件系统重命名目录。然后你可以做git rm <old directory>git add <new directory>帮助页面)。然后你可以提交和推送。

Git 会检测到内容相同,只是重命名操作,会在历史记录中显示为重命名条目。您可以在使用提交之前检查是否是这种情况git status

于 2012-06-25T05:18:35.920 回答
10

很多正确的答案,但是当我登陆这里复制并粘贴一个文件夹重命名历史时,我发现这个

git mv <old name> <new name>

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

尽管

git mv <old name>/ <new name>

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

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

git mv <old name>/<nest-folder> <new name>/<nest-folder>
于 2020-12-30T08:06:57.987 回答
4

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

我有一个非常相似的问题: 我不得不将不同的文件夹从大写重命名为小写(如 Abc -> abc),我用一个虚拟名称(如'abc___')重命名了所有文件夹,然后提交到远程存储库,之后我将所有文件夹重命名为带有小写字母的原始名称(如 abc),然后它们就被占用了!

于 2016-08-02T09:51:59.737 回答
2

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

于 2020-03-20T22:30:15.613 回答
-24

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

rm <directory>
git add .
git commit
于 2012-06-25T15:45:22.927 回答