Git:我可以将所有内容放在子文件夹中,但仍然有历史记录

时间:2012-11-24 23:28:16

标签: git

  

可能重复:
  Is it possible to move/rename files in git and maintain their history?

我是以前的subversion用户,不确定git如何帮助我处理以下情况。

我有一个git存储库,我的项目包含多个dirs,我一直在对这个结构进行多次提交

现在我需要进行结构更改,以便将根目录下的所有文件夹/文件移动到新文件夹,我仍然希望保留文件的提交历史记录。

所以例如在我的回购中我目前有这样的结构

src
res
xml
file.txt
.gitignore

我希望所有这些都在名为common的文件夹中移动,以便我在repo的根目录下有以下结构

common
.gitignore

是否有可能,如果是这样的话?

谢谢

2 个答案:

答案 0 :(得分:4)

mkdir common
git mv src res xml file.txt common
git commit

答案 1 :(得分:3)

你可以使用这样的命令

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?