我的机器上安装了CMS主题.我正在通过git跟踪对它的更改,并决定在GitHub上备份它,以便我可以分享这些更改.
提供的主题也可以在GitHub上找到.在我的机器上,我将其添加为远程上游.现在,我可以使用以下命令轻松查看主服务器和远程上游之间的更改:
git diff --color master upstream/number
如果我可以在GitHub上添加远程上游,我可以轻松地共享这些更改.是否可以在GitHub上设置这种关系?
我尝试过以下方法:
git push -u origin upstreambranch
它upstreambranch
在GitHub上添加了一个主人.然而,尝试比较两个分支不起作用,我在GitHub上得到的结果是:"没有什么可比较的"
有比较这些的替代方法吗?
看起来GitHub不会让你比较分支,因为它们实际上根本不共享任何相同的历史记录,即使它们可能共享大部分相同的文件和代码.
这是我的repo制作的临时分支的截图,我试图master
与upstreambranch
你进行比较,就像你描述的那样.请注意错误消息:
它说:
答案很长没有什么可比的.
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
如果必须,您还可以手动重做每个提交.
这看起来像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 之前先注意它上面的实际差异.