git 当我的分支和主服务器没有相关历史记录时,如何执行拉取请求?

dohp0rv5  于 2022-11-20  发布在  Git
关注(0)|答案(3)|浏览(145)

我有一个分支“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

dkqlctbz

dkqlctbz1#

我发现这个很管用,允许不相关的历史记录标志

git add .
git commit -m "message"
git pull origin main(or whatever branch) --allow-unrelated-histories
git push origin branch_x

你现在应该能够比较和公关

rfbsl7qr

rfbsl7qr2#

通过执行以下操作可以轻松实现:

  1. checkout 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_xmaster提前一个提交,你可以创建你的PR。你可能需要push --force,这取决于你是否已经推送了branch_x
xuo3flqw

xuo3flqw3#

正如在@Adil B注解中所看到的,这个解决方案的答案是在fork中创建新的branch_x2。然后,将原始repo的branch_x中代表最近提交的文件复制并替换到branch_x2。现在,您将有一个相关的历史记录,以及您要比较的文件。您可以在任何一个分支上(当在fork中时)并执行pull请求,只要该分支代表提交和您需要的文件/目录。

相关问题