【问题标题】:How to rename/relocate directory on git clone/fetch and preserve the history?如何在 git clone/fetch 上重命名/重定位目录并保留历史记录?
【发布时间】:2013-10-24 14:54:05
【问题描述】:
在远程主机上有一个文件夹/config/samples/(它还包含子目录),其中包含示例配置文件;这些文件足以在实际环境中使用而无需任何更改。该应用程序位于同一存储库中,只能从 /settings/ 目录中读取文件。
如何使master的每个克隆都会在本地将此文件夹重命名为所需的文件夹,并保留这些文件的历史记录(因此,如果我在那里添加文件,它将被放置在git上master上的正确文件夹中拉)?
符号链接和硬链接在文件系统上不可用。
提前致谢!
【问题讨论】:
标签:
git
git-submodules
git-subtree
【解决方案1】:
我不确定我是否正确理解了您的问题,但 git 会看到重命名的文件。如果你执行
mv file_orig_name.ext file_new_name.ext
git rm file_orig_name.ext
git add file_new_name.ext
git commit -m "changed file name file_orig_name.ext to file_new_name.ext"
它们将显示为被重命名,而不是一个消失另一个出现。
【解决方案2】:
目前git中没有这样的功能。
因为这种功能必须利用您操作系统的功能,例如符号链接(如果有的话)。在这种情况下,仍然需要运行一个设置过程,因此 Make 或 Rake 等工具可以帮助您创建所需的文件夹,并可能检查其中的更改。
最后,您可以考虑使用git hooks,以便在特定事件上调用您的脚本。 post-checkout、post-merge 和 post-commit 可能对此有用。