我有一个分支“branch_x”,它与master属于同一个存储库。但是,我愚蠢地在branch_x上开始开发,而没有从master checkout 。因此,master和branch_x之间没有共同的祖先,当我尝试向master发出拉取请求时,我只得到:没有可比较的内容。master和分支_x是完全不同的提交历史记录。
因为这个错误,我创建了一个仓库的fork,我试图把分支_x的提交合并到fork的master分支中,然后我尝试在原始仓库和fork之间请求一个pull(因为现在它们有一些共同的历史),但是,我不知道如何把branch_x从原始仓库合并到fork的master分支中。
这篇文章是类似的,但我不认为“git rebase -onto”会有多大帮助:There isn't anything to compare. Nothing to compare, branches are entirely different commit histories
3条答案
按热度按时间dkqlctbz1#
我发现这个很管用,允许不相关的历史记录标志
你现在应该能够比较和公关
rfbsl7qr2#
通过执行以下操作可以轻松实现:
branch_x
以进行处理:git checkout branch_x
1.将soft重置为
master
,这样branch_x
就和master
在git历史记录中的位置相同了,但是你所有的修改都被暂存了(reset --soft
不会接触工作目录中的文件,甚至直接将修改添加到暂存区):git reset --soft master
1.提交文件,以便创建一个仅包含
branch_x
中所做更改(与master
相比)的提交git commit
现在
branch_x
比master
提前一个提交,你可以创建你的PR。你可能需要push --force
,这取决于你是否已经推送了branch_x
xuo3flqw3#
正如在@Adil B注解中所看到的,这个解决方案的答案是在fork中创建新的branch_x2。然后,将原始repo的branch_x中代表最近提交的文件复制并替换到branch_x2。现在,您将有一个相关的历史记录,以及您要比较的文件。您可以在任何一个分支上(当在fork中时)并执行pull请求,只要该分支代表提交和您需要的文件/目录。