git子树拆分"没有找到新的修订版"

时间:2015-11-20 16:55:33

标签: git git-subtree

我一直在使用find ./ -type f --exclude-dir='workspace' --exclude-dir='builds' \ -exec sed -i '' 's/foo/bar/g' {} \; 将一个巨大的存储库(从另一个VCS导入Git)划分为更小的存储库。

git subtree split

这一直在运行,我已经将几个文件夹移到了新的存储库中,但是在完成所有可用提交后,他们的兄弟姐妹尝试没有创建分支

最后的消息是

  

"未找到新版本"

我不知道这是否重要,但与$ git subtree split -P ./path/to/folder/ -b folder-only 一起运行会发出如下消息

  

处理提交:ca9d25944cf34bbe7aa356248a166ac1fb813f2a
    父母:fc0e5a621ab871b8a11071eec321f4b40b8dcce0
    newparents:
    树是:

为什么--debug失败了,我该怎么办呢?

2 个答案:

答案 0 :(得分:8)

当我的--prefix指向git不知道的目录时,我有相同的症状。就我而言,我的配置过于激进.gitignore

所以,澄清我的建议。

确保你的:

    git知道
  1. --prefix文件夹。如果首先需要addcommit

  2. .gitignore文件不会排除您想要的目录。

  3. 我希望这会有所帮助,或者至少能给你一个正确方向的暗示。

答案 1 :(得分:0)

就我而言,当我尝试将一个 repo 中的子文件夹连接为其他 repo 中的子树文件夹时,问题与我只是混淆了路径前缀有关。也就是说,我尝试在我应该使用源路径前缀的地方使用目标存储库路径前缀,反之亦然。

当我正确设置路径前缀时,一切都开始正常工作。

更多细节。在类似于 this 答案,第 3 部分的场景中。git subtree。将 https://github.com/git/git.git 的 contrib/completion/ 中的四个文件合并到本地存储库的 third_party/git_completion/ 中。在代码片段中:

# Do this the first time:
$ git remote add -f -t master --no-tags gitgit https://github.com/git/git.git
$ git checkout gitgit/master
$ git subtree split -P contrib/completion -b temporary-split-branch
$ git checkout master
$ git subtree add --squash -P third_party/git-completion temporary-split-branch
$ git branch -D temporary-split-branch

偶然地,我只是用 contrib/completion 代替了 third_party/git-completion,这是错误的并导致了这个错误。为正确的行添加前缀使它像魅力一样工作。