git - git mv 整个 repo 上一层
问题描述
StackOverflow 社区,
我有一个具有此层次结构的 git 存储库:
(git-tree-root)
software
development
project1
project2
...
projectX
operational
project1
project2
...
projectX
我想要一个更简单的层次结构,
(git-tree-root)
dev
project1
project2
...
projectX
op
project1
project2
...
projectX
维护文件的 git 历史记录至关重要。我的第一个想法是:
git mv -kr software/development/* dev/
和
git mv -kr software/operational/* op/
k 标志是在移动文件时忽略可能的错误,而 r 标志是移动在相应文件夹中递归找到的所有文件和文件夹(开发和操作)。然后 git add 和 git commit 更改。
另外,我想确保如果用户的文件仍然“未推送”到存储库,他们不会将它们推送到旧的层次结构。每当他们 git pull 我的更改时,Git 都应该处理这个问题,对吗?
重要的是我做对了,所以我很感激你的帮助。提前谢谢大家。
解决方案
它应该像这样简单
git mv software/development dev
git mv software/operational op
如果还有其他software
你不再需要的东西
git rm -r software
接着
git commit
请注意,Git 不存储文件标识。“文件历史”仅从提交历史中重建。git log --follow some/file
只要您只调查一个文件的历史记录可能会有所帮助,但是当文件内容有足够的差异并且您正在比较此事件之前和之后的状态时,您可能会遇到问题,因为 Git 无法将这两者关联起来状态为“单个文件”。
推荐阅读
- git - Flutter 升级后 Flutter 找不到 git
- python - Python 无法识别 sum()。返回错误
- django - Django 中返回的多个对象
- python - Pandas:使用太多内存和条件滚动计数
- activemq - ActiveMQ ProtocolException 消息编码无效
- google-cloud-platform - 用于创建 Firestore 的 Terraform
- linux - 如何使用 Bluez L2CAP 发送更多字节?
- java - 以编程方式更改旧 android 版本上的应用程序语言
- c# - 如何向地形添加材质?
- android - 使用新项目更新我的回收站视图时遇到问题