【发布时间】:2012-06-26 09:08:47
【问题描述】:
我认为将要重命名的目录复制到具有所需名称的新目录以及delete the old directory、git add、git commit 和push 一切都应该有效。但这是最好的方法吗?
【问题讨论】:
-
就Git而言,复制和删除与移动是一回事。 Git 将以相同的方式记录(复制 + 删除)和(移动)。
我认为将要重命名的目录复制到具有所需名称的新目录以及delete the old directory、git add、git commit 和push 一切都应该有效。但这是最好的方法吗?
【问题讨论】:
基本重命名(或移动):
git mv <old name> <new name>
区分大小写的重命名 - 例如。从casesensitive 到CaseSensitive——您必须使用两步:
git mv casesensitive tmp
git mv tmp CaseSensitive
(More about case sensitivity in Git…)
...之后提交和推送将是在 git repo 中重命名目录的最简单方法。
【讨论】:
casesensitive重命名为CaseSensitive,你可以这样:git mv casesensitive Temp然后git mv Temp CaseSensitive
git rm -rf --cached path/to/your/directories 然后重新添加并提交
git config core.ignorecase false,然后连续运行命令,否则,第二部分我会收到source is empty 错误。
如果您收到此错误:致命:重命名“文件夹名”失败:参数无效
试试这个:
git mv foldername tempname && git mv tempname folderName
git config core.ignorecase false; git mv foldername tempname; git mv tempname folderName
【讨论】:
git mv foldername tempname 和 git mv tempname folderName,应该可以在 Windows 上运行。
1.将文件夹的名称从旧文件夹更改为新文件夹
git mv oldfolder newfolder
2。如果 newfolder 已经在您的存储库中并且您想覆盖它并使用:- force
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 可以识别,这就是我们想要的 :)
【讨论】:
您可以使用文件系统重命名目录。然后你可以做git rm <old directory> 和git add <new directory> (Help page)。然后你可以提交和推送。
Git 会检测到内容相同,只是重命名操作,会在历史记录中显示为重命名条目。您可以使用git status
【讨论】:
很多正确答案,但是当我登陆这里复制并粘贴 文件夹重命名历史时,我发现 这个
git mv <old name> <new name>
将旧文件夹(本身)移动到新文件夹
中同时
git mv <old name>/ <new name>
(注意'/') 会将嵌套内容从旧文件夹移动到新文件夹
这两个命令都没有复制嵌套文件的历史记录。我最终分别重命名了每个嵌套文件夹 ✔
git mv <old name>/<nest-folder> <new name>/<nest-folder>
【讨论】:
我认为您不能从 Web 应用程序中重命名所有文件夹,但您可以重命名 Git 客户端中的所有文件夹,它会将您的文件移动到新重命名的文件夹中,而不是提交并推送到远程存储库。
我有一个非常相似的问题: 我不得不将不同的文件夹从大写重命名为小写(如 Abc -> abc),我用虚拟名称(如'abc___')重命名了所有文件夹,然后提交到远程存储库,之后我将所有文件夹重命名为小写字母的原始名称(如 abc),它带走了它们!
【讨论】:
对于区分大小写的重命名,git mv somefolder someFolder 以前对我有用,但由于某种原因今天没有。因此,作为一种解决方法,我创建了一个新文件夹temp,将somefolder 的所有内容移动到temp,删除somefolder,提交temp,然后创建someFolder,移动@987654328 的所有内容@进入someFolder,删除temp,提交并推送someFolder,它成功了!在 git 中显示为 someFolder。
【讨论】:
只需重命名文件夹即可。 git 是一个“内容跟踪器”,所以 SHA1 哈希是相同的,git 知道,你重命名它。唯一改变的是树对象。
rm <directory>
git add .
git commit
【讨论】: