我试图找出&gtt子树的方式'作品。我已经按照this page的所有说明进行了操作,但是在尝试将子树项目合并到我自己的回购中时,我总是遇到错误('步骤2'):fatal: refusing to merge unrelated histories
。
我已阅读this post,当我使用--allow-unrelated-histories
选项时,它似乎工作正常。但是,我不确定是否应该使用它......我的印象是,子树的重点是在一个存储库中有不相关的历史记录,所以必须添加选项会感到奇怪。我应该添加它,还是我做错了什么?
我在osx 10.11.6上使用git v2.9.3
答案 0 :(得分:8)
如果使用--squash
添加了子树,则在拉动时还需要使用--squash
git subtree pull --prefix=<folder-goes-here> <remote-goes-here> <branch-goes-here> --squash
答案 1 :(得分:3)
这是git中的一个错误,它已在https://github.com/git/git/commit/0f12c7d4d175bb0566208213b1b340b6794f305c
中修复答案 2 :(得分:2)
我已经挣扎了一段时间,并认为我找到了解决方案。
我对git很新,所以请原谅我,如果我使用错误的名字。
运行git subtree add命令时,使用--squash
选项可能会出现此问题。
尝试删除子树(删除远程存储库并删除所有本地文件,提交和推送)。然后在没有--squash
选项的情况下重做子树添加。
然后我跳到我的子树存储库,进行了一些更改,提交并推送,然后跳回我的主要超级项目存储库并执行git子树拉。它给了我一些关于工作树有修改的错误。为了解决这个问题,我做了一个git checkout master,然后是git push,然后又尝试了子树拉。它奏效了。
希望有所帮助。
答案 3 :(得分:1)
对我有用的是将 git merge
与子树策略结合使用:
git merge -s subtree -Xsubtree="$prefix" subremote/branch --allow-unrelated-histories
git subtree
在幕后使用类似的东西。
答案 4 :(得分:0)
我不是专家。
但是我发现了一些东西。我最初只是尝试正常拉力。 但是我发现了这个特定的子树拉动。
git subtree pull --prefix myPrefixname https://github.com/subTreeRepo.git master --squash
其中master是课程的分支名称
(来自
https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/
)