git - Git 可以在不丢失历史记录的情况下重组我的文件夹吗?

标签 git

我有一个 git 存储库,目前只有我一个人在使用它。 我想把根文件夹下的所有文件和文件夹,放到一个新的文件夹里。

当前结构:

main ->
  src
  res

新结构:

main ->
  app1
    src
    res

有没有办法让文件不会丢失它们的 git 历史记录?

最佳答案

长话短说

继续:移动您的文件和目录。只需确保在目录重组的同一次提交中不对文件进行任何编辑即可。

为什么有效

Git 是一个内容跟踪器,而不是文件跟踪器。如果您移动/重命名文件,但未对这些文件的内容 进行任何其他更改,那么 Git 只会 rewrites the tree objects .目录操作不会更改文件 blob;目录位置信息单独存储在树对象中。

实际重命名检测由 diffing the blobs and trees 处理,并寻找文件之间相似度的可配置百分比。这意味着 Git 并不真正存储移动或直接重命名;它根据提交之间的差异计算它们。

所有这一切的结果是您的历史不依赖于特定的文件名或目录结构。这对于大多数用例都非常有效,但与 Bazaar 等系统形成对比该轨道重命名为一流的操作。

关于git - Git 可以在不丢失历史记录的情况下重组我的文件夹吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10828267/

相关文章:

Github 在 ssh 后提示输入凭据

git - 我怎样才能 'git merge' 基于不同名称的跟踪文件的新文件?

Git 流程澄清 Hotfix 和 RC 是否存在?

git log --带前缀的分支

Java Eclipse 文件夹与 git

git - 无法提交到新的私有(private) Github 存储库

git - 将 bzr 存储库作为 Git 子模块进行跟踪

git - 使用 url 链接到 Starteam 中的特定 CR 编号

iphone - Xcode 4 从早期提交恢复文件

git - 如何使用包含 '/' 的个人访问 token 通过 https 进行 git clone?