当前位置:  开发笔记 > 运维 > 正文

没有什么可比的.无可比拟,分支是完全不同的提交历史

如何解决《没有什么可比的.无可比拟,分支是完全不同的提交历史》经验,为你挑选了2个好方法。

我的机器上安装了CMS主题.我正在通过git跟踪对它的更改,并决定在GitHub上备份它,以便我可以分享这些更改.

提供的主题也可以在GitHub上找到.在我的机器上,我将其添加为远程上游.现在,我可以使用以下命令轻松查看主服务器和远程上游之间的更改:

git diff --color master upstream/number

如果我可以在GitHub上添加远程上游,我可以轻松地共享这些更改.是否可以在GitHub上设置这种关系?

我尝试过以下方法:

git push -u origin upstreambranch

upstreambranch在GitHub上添加了一个主人.然而,尝试比较两个分支不起作用,我在GitHub上得到的结果是:"没有什么可比较的"

有比较这些的替代方法吗?



1> 小智..:
简答

看起来GitHub不会让你比较分支,因为它们实际上根本不共享任何相同的历史记录,即使它们可能共享大部分相同的文件和代码.

这是我的repo制作的临时分支的截图,我试图masterupstreambranch你进行比较,就像你描述的那样.请注意错误消息:

错误消息截图

它说:

没有什么可比的.

master并且upstreambranch是完全不同的提交历史.

答案很长

你可能已经下载了原始资源并将其添加到一个全新的仓库而不是克隆原始仓库,对吗?这样做会使你的repo 的历史与原始repo的历史完全不同,因为你的新repo将不会有任何相同的sha具有相同的sha.

您可以通过执行master分支的反向日志和以下内容来 upstreambranch查看:

# Your first commit, see commit sha
git log --reverse master
commit c548d7b1b16b0350d7fbdb3ff1cfedcb38051397 # <== HERE
Author: Padraic Stack 
Date:   Wed Apr 2 15:11:28 2014 +0100

    First commit of everything

# First commit sha of the original repo
git log --reverse upstreambranch
commit 105a12817234033c45b4dc7522ff3103f473a862 # <== THERE
Author: Jeremy Boggs 
Date:   Mon Feb 22 16:00:53 2010 +0000

    Creates repo directories for the Seasons theme.
解决方案

如果您在原始历史记录之上重做提交,那么您应该能够比较分支.您可以通过几种不同的方式重做提交,包括

git rebase --onto

git cherry-pick

如果必须,您还可以手动重做每个提交.


@Jack您的欢迎.是的,你确实提到了这一点,但是你遗漏了错误信息的其余部分,即"主人和上游***是完全不同的历史.***"这是问题的关键.
git rebase -i origin/master这对我有用.在这之后我能够比较两个分支

2> jthill..:

这看起来像github上的不良行为,但它很容易修复.您要做的是在现有历史记录中对合理(任何合理)提交重新分支您的分支.你可以做的是获取github仓库并找到其历史记录中哪棵树与你开始的那棵树最相似.从这个开始:

git remote add github u://r/l
git fetch github

myroot=`git rev-list master --max-parents=0`
root_tree=`git rev-parse $myroot^{tree}`

github_base=`git log --pretty=%H\ %T github/master | sed -n "s/$root_tree//p"`

运气好的话,会在github历史中找到一个具有你开始的确切树的提交.假设它,

git rebase --onto $github_base $myroot master 

你完成了


如果找不到匹配的树,则可以找到最接近的近似值.这是一种粗略估计差异的方法:

git log --pretty='echo %H $(git diff-tree -p -b -U0 '$myroot:' %T|wc -l)' github/master \
| sh

这将计算github/master历史记录中每个提交的树与根树之间的最小化差异中的行.希望得到一个很小的差异似乎是合理的,你可以在调用github_base提交和执行上面的rebase 之前先注意它上面的实际差异.


推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有