【问题标题】:Git move files accross submodulesGit 跨子模块移动文件
【发布时间】:2021-01-23 15:05:52
【问题描述】:

我有一个使用子模块 B 的 repo A。 Repo A 将文件 file.filetype 作为跟踪对象。我想将该文件移动到B。我不一定要保留历史记录,但我想对B 的任何用户非常清楚,该文件不仅仅是新创建的,而是从A 移动的(例如,通过提供@ 987654328@ 和文件被移走的修订版)。同样在A 上,我希望它明确说明发生了什么:在此修订版中,文件已移至B,从某个修订版开始可以找到它。

我试过git mv,它似乎奏效了,但现在在A 上,git status 也告诉我B 已被删除,并且@ 的一些(如果不是全部)文件987654335@被认为是“未跟踪的文件”,这不仅奇怪而且令人担忧。在B 内部,但一切都或多或少都很好——它注意到一个新的、因此未被跟踪的文件的幻影。可悲的是它不知道从哪里来,但它已经看到了。

有什么建议吗?

【问题讨论】:

  • 您不能使用git mv 的原因是子模块是一个独立的Git 存储库git mv 所做的是在 one 存储库中安排多步添加和删除更改,但在这里您需要影响两个不同的存储库。 (几乎可以肯定,git mv 试图这样做并把它弄得一团糟。)

标签: git mv


【解决方案1】:

取消git mv (git reset HEAD),并手动运行操作:

  • 使用mv将磁盘上的文件从A移动到B
  • 来自子模块 B:添加文件并提交,并带有一条消息,其中提到了您想要的信息:“从 repo A (commitid-in-A) 导入的文件”
  • fome repo A :提交文件删除和子模块B 的新状态,并带有一条提交消息,其中提到了您想要的信息:“文件已移至 B (commit-id-in-B) "

【讨论】:

    猜你喜欢
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2011-06-04
    相关资源
    最近更新 更多