In a Git repository, how to properly rename a directory?
我认为应该把要改名的目录复制到一个新目录中,删除旧目录,把所有的东西都删除。但这是最好的方法吗?
基本重命名(或移动):
1 | git mv <new name> |
区分大小写的重命名—例如从
1 2 | git mv casesensitive tmp git mv tmp CaseSensitive |
(有关Git中区分大小写的详细信息…)
…然后是commit和push是在git repo中重命名目录的最简单方法。
如果收到此错误:致命:重命名"foldername"失败:参数无效
试试这个:
1。将文件夹名称从oldfolder更改为newfolder
1 | git mv oldfolder newfolder |
2。如果newfolder已经在您的存储库中,您希望覆盖它并使用:-force
1 | git mv -f oldfolder newfolder |
不要忘记在用git mv重命名后添加对索引的更改并提交它们。
三。在不区分大小写的文件系统上将foldername重命名为foldername
使用普通mv命令(而不是gitmv)进行简单重命名不会被识别为git中的文件更改。如果您像下面一行那样使用"git mv"命令进行尝试
1 | git mv foldername folderName |
如果您使用的是不区分大小写的文件系统,例如,您在Mac上,但没有将其配置为区分大小写,则会遇到类似以下错误消息:
致命:重命名"foldername"失败:参数无效
以下是您可以做的工作:
1 | git mv foldername tempname && git mv tempname folderName |
这将通过首先将文件夹重命名为完全不同的文件夹名称来拆分重命名过程。将其重命名为不同的文件夹名称后,可以最终将文件夹重命名为新的文件夹名称。在这些"git mv"之后,同样不要忘记添加和提交更改。虽然这可能不是一个漂亮的技术,但它工作得非常好。文件系统仍然无法识别字母大小写的更改,但Git是因为将其重命名为新的foldername,这就是我们所希望的:)
可以使用文件系统重命名目录。然后你可以做
Git会检测到内容是相同的,它只是一个重命名操作,并且会在历史记录中显示为一个重命名条目。在使用
在Web应用程序中,我认为您不能,但是您可以重命名Git客户端中的所有文件夹,它将把您的文件移到新的重命名文件夹中,而不是提交并推送到远程存储库。
我有一个非常相似的问题:我不得不将不同的文件夹从大写改为小写(比如abc->abc),我用一个虚拟的名字(比如abc_uuuuuuuuuuuuu)重命名了所有的文件夹,然后把所有的文件夹都改成了原来的小写(比如abc),然后它就拿走了!
我分两步解决。要使用mv命令重命名文件夹,您需要权限才能执行此操作,如果您没有权限,可以执行以下步骤。假设您想将casesensitive重命名为casesensitive。
步骤1:将文件夹(区分大小写)重命名为资源管理器中的其他内容。例如重命名区分大小写的文件夹1提交此更改。
步骤2:将这个新命名的文件夹(folder1)重命名为预期的区分大小写的名称(区分大小写),例如,将folder1重命名为区分大小写。提交此更改。
1 | git rm -rf --cached path/to/your/directories |
然后重新添加并提交。
只需重命名文件夹。Git是一个"内容跟踪器",所以sha1散列是相同的,Git知道,你重命名了它。唯一改变的是树对象。
1 2 3 | rm <directory> git add . git commit |