相关疑难解决方法(0)

Git拒绝合并关于rebase的无关历史

git rebase origin/development以下错误消息从git显示:

fatal: refusing to merge unrelated histories
Error redoing merge 1234deadbeef1234deadbeef
Run Code Online (Sandbox Code Playgroud)

我的git版本是2.9.0.用于在以前的版本中正常工作.

如何通过新版本中引入的强制标记继续使用此rebase,从而允许不相关的历史记录?

git rebase

1862
推荐指数
25
解决办法
123万
查看次数

如何在git-subtree添加后重新定义?

我正在尝试学习在Git 1.7.11中添加的新git-subtree命令.添加子树后,我似乎失去了变基的能力.我有一个带有README文件的主存储库和一个库存储库,它也有一个README文件.我将它添加到lib目录subtree add:

$ git subtree add -P lib/mylib myliborigin master
Run Code Online (Sandbox Code Playgroud)

这很好,但现在历史看起来像这样:

*   22c1fe6 (HEAD, master) Merge commit 'b6e698d9f4985825efa06dfdd7bba8d2930cd40e' as 'lib/mylib' - 
|\                                                                                                                
| * b6e698d Squashed 'lib/mylib/' content from commit d7dbd3d
* b99d55b Add readme
* 020e372 Initial
Run Code Online (Sandbox Code Playgroud)

现在当我想要反对我的repo origin/master并且它失败时因为squash commit直接应用于它不适用的父提交,因为它被应用于repo的根而不是我添加的时候给它的前缀子树.

如果我看一下壁球提交,原因很清楚.没有关于前缀的信息.这只是原始的mylib提交压扁在一起.只有下一个合并提交知道它的任何内容,但rebase不会在此处考虑它.

是否有任何变通方法(除了永远不会对子树提交进行重新定位)?

git git-rebase git-subtree

58
推荐指数
5
解决办法
1万
查看次数

git移植和替换有何不同?(移植物现在已被弃用吗?)

有极少数的Q&A的上的git graftsreplace.搜索[git] + grafts + replace只发现了两个与5. what-are-git-info-grafts-forgit-what-a-a-graftcommit-or-a-graft-id相关的两个.git.wiki.kernel.org:GraftPoint上还有一个注释

被移植现在完全取代replacefilter-branch,或者他们仍然需要一些特殊的情况(和向后兼容)?

一般来说,它们如何不同(例如哪些在回购之间运输),它们通常是如何相同的?我已经看到Linus似乎并不关心目前在关于提交代数的讨论(最大父母回到任何根种类)的问题"移植已经不可靠了."

编辑:找到更多信息.
搜索www.kernel.org/pub/software/scm/git/docs graft仅找到3个结果:

  1. GIT-滤波器分支(1),
  2. v1.5.4.7/GIT-滤波器分支(1),
  3. v1.5.0.7/GIT-s​​vn的(1).

稍微宽泛的搜索发现RelNotes/1.6.5.txt包含:

  • refs/replace/hierarchy被设计为可用作"移植"机制的替代,其附加优势是它可以跨存储库传输.

不幸的是,gitrepository-layout(5)还没有更新refs/replace/repository布局信息(和注释),也没有任何信息/移植的弃用说明.

这更接近支持我的想法,但我欢迎任何确认或澄清.

git

53
推荐指数
3
解决办法
1万
查看次数

Git章鱼与不相关的repositoies合并

我有一堆git存储库,每个包含一个文件.我想将它们合并在一起,最好是一步到位.我的目标是这个图:

*----¬ mergedrepo/master
| \ \ \
| | | * repoA/master
| | * repoB/master
| | |
| | * repoB/...
| * repoC/master
* repoD/master
|
* repoD/...
Run Code Online (Sandbox Code Playgroud)

我试过了git merge,但看起来章鱼策略不适用于不相交的树木

$ git merge a/master b/master c/master d/master
Unable to find common commit with a/master
Automatic merge failed; fix conflicts and then commit the result.
Run Code Online (Sandbox Code Playgroud)

我也被告git merge --squash知会有所帮助,但这也给出了同样的错误.

这会生成正确的图形,但会丢失所有文件:

$ git merge -s ours a/master b/master c/master d/master
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

git git-merge

16
推荐指数
3
解决办法
1234
查看次数

标签 统计

git ×4

git-merge ×1

git-rebase ×1

git-subtree ×1

rebase ×1