【问题标题】:Git: Can I put all contents in a sub folder and still have history [duplicate]Git:我可以将所有内容放在一个子文件夹中并且仍然有历史[重复]
【发布时间】: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

有可能吗,如果可以怎么办?

谢谢

【问题讨论】:

  • 不要认为它与您提供的参考资料重复,那里的提问者似乎已经知道我想知道什么。因此那里的答案是基于这个假设。

标签: git


【解决方案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 不跟踪每个文件的历史记录。它始终跟踪整个存储库的历史记录。
    猜你喜欢
    • 2014-08-03
    • 2013-06-25
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2014-04-05
    相关资源
    最近更新 更多