【问题标题】:git subtree add: change prefix preserving local commitsgit subtree add:更改前缀保留本地提交
【发布时间】:2014-02-11 13:19:23
【问题描述】:

有没有一种简单的方法可以移动使用以下 cmd 添加的子树

git subtree add --prefix=<prefix> <repository> <commit>

换句话说,是否可以将前缀从dir1更改为dir2

git subtree: possible to change subtree branch/path in a forked repository? 的答案建议删除子树,然后将其添加回来。

这对我不起作用,因为我需要保留本地提交,还有其他方法吗?

【问题讨论】:

  • 对于本地提交,您的意思是在添加子树后对该子目录中的文件进行更改?

标签: git git-subtree


【解决方案1】:

另一种方法是从您当前的提交中拆分,其中包括您要保留的本地提交:

git subtree split --prefix=dir1 HEAD

# Create a branch with the printed commit just to use it later
git branch split_dir_1 <split_commit>

然后按照question you mentioned中的描述,删除子目录,重新添加子树。

git rm dir1
git commit
git subtree add --prefix=dir2 . split_commit

请记住,通过这样做,您仍然可以在存储库历史记录中看到创建、删除和重新添加第一个子树的时间。

【讨论】:

  • 谢谢你的回答,以后可以用你的方法做 git subtree pull 吗?我必须对其进行测试...如果可行,将接受您的回答,谢谢
  • 应该可以,是的。只要子树操作中不涉及压缩,git subtree split 将保留子树的原始历史记录。您可以将新的拆分分支推送到原始子树存储库,因此您也应该能够拉取。
  • 在这种情况下,您仍然可以尝试对子树存储库执行 git subtree splitpush 拆分提交。这样,您将拥有原始子树提交和新内容。然后再次删除dir1并读取dir2中的子树。
  • 好的,谢谢!我一有时间就会检查这个方法(我已经采用了 drop local commits 方式......)
猜你喜欢
  • 2016-08-10
  • 2011-06-10
  • 2012-04-28
  • 2015-12-04
  • 2021-09-17
  • 2018-07-20
  • 1970-01-01
  • 2017-09-02
  • 2021-10-25
相关资源
最近更新 更多