我一直在使用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
失败了,我该怎么办呢?
答案 0 :(得分:8)
当我的--prefix
指向git不知道的目录时,我有相同的症状。就我而言,我的配置过于激进.gitignore
。
所以,澄清我的建议。
确保你的:
--prefix
文件夹。如果首先需要add
和commit
。
.gitignore
文件不会排除您想要的目录。
我希望这会有所帮助,或者至少能给你一个正确方向的暗示。
答案 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
,这是错误的并导致了这个错误。为正确的行添加前缀使它像魅力一样工作。