Git:我可以将所有内容放在一个子文件夹中并且仍然有历史[重复]
Posted
技术标签:
【中文标题】Git:我可以将所有内容放在一个子文件夹中并且仍然有历史[重复]【英文标题】:Git: Can I put all contents in a sub folder and still have history [duplicate] 【发布时间】:2012-11-12 20:37:50 【问题描述】:可能重复:Is it possible to move/rename files in git and maintain their history?
我是以前的 subversion 用户,不确定 git 在以下情况下如何帮助我。
我有一个 git 存储库,我的项目包含多个目录,我一直在这个结构上进行多次提交
现在我需要进行结构更改,以便将根目录下的所有文件夹/文件移动到一个新文件夹,并且我仍然想保留文件的提交历史。
例如,在我的仓库中,我目前有这样的结构
src
res
xml
file.txt
.gitignore
我希望将它们全部移动到一个名为 common 的文件夹中,以便我在 repo 的根目录下具有以下结构
common
.gitignore
有可能吗,如果可以怎么办?
谢谢
【问题讨论】:
不要认为它与您提供的参考资料重复,那里的提问者似乎已经知道我想知道什么。因此那里的答案是基于这个假设。 【参考方案1】:你可以使用这样的命令
mkdir common
git mv src res xml file.txt common
这会移动文件,您仍然可以使用git log --follow common/file.txt
查看历史记录。如果您想重写历史记录,请查看How can I rewrite history so that all files, except the ones I already moved, are in a subdirectory?
【讨论】:
【参考方案2】:mkdir common
git mv src res xml file.txt common
git commit
【讨论】:
这不会保留这些文件的历史记录。您需要git log --follow
才能查看历史记录。
是的,它会的。或者更确切地说,它不能,因为 git 不跟踪每个文件的历史记录。它始终跟踪整个存储库的历史记录。以上是关于Git:我可以将所有内容放在一个子文件夹中并且仍然有历史[重复]的主要内容,如果未能解决你的问题,请参考以下文章