如何移动我的git存储库的根目录?

时间:2015-02-15 18:59:20

标签: git github directory

首先,我知道here之前已经问过这个问题。 问题是我喜欢保留历史。

所以我尝试了所有其他可以找到的步骤,包括将.git目录向上移动一级或创建一个子目录,并将当前根目录中的所有文件移动到该目录中。但我一直在丢失文件的历史记录。

有趣的是,Git Bash(在我的本地命令行上)告诉我它检测到文件被重命名,当我运行git log时,我也得到了文件的历史记录,因为我' d期待它。但是当我查看github时,历史记录已经消失,并且提交仅包含要删除和添加的文件列表(而不是我期望的重命名列表)。

我所说的存储库是this one。那里有一个名为" Moving"其中我试图移动文件。

如果有帮助,我采取的确切步骤是:

  1. 创建子目录" src"在包含.git
  2. 的目录中
  3. 将所有文件移至该子目录
  4. 从上面的级别移动目录.git是,向下一级
  5. 运行git add srcgit add nbproject,其中src是我在步骤1中创建的子目录,nbproject是我在步骤3中向下移动的目录
  6. 为所有"旧文件"
  7. 运行git rm
  8. 运行git status并注意所有文件都被检测为重命名
  9. 运行git log src/README以确保历史记录正常
  10. 最后将更改提交给github
  11. 请注意,当我在github上查看我的README
  12. 时,历史记录已经消失

1 个答案:

答案 0 :(得分:2)

Git不存储文件副本和重命名,它使用启发式算法来解决这个问题。我推测Github并没有取消重命名,因为他们已经关闭重命名/复制启发式以节省处理能力。它不会影响很多但是如何在Github上显示提交。最简单的事情就是忽略它并继续编码。也许联系Github技术支持。

否则,您的另一个选择是rewrite history to make your subdirectory the main directory。这将保留历史记录,但会更改所有提交ID,这可能会丢失日志消息中的引用并发出跟踪器。 (我确实记得会在日志消息中更改提交ID的工具,但我无法记住它。)