gpt4 book ai didi

git - 在不丢失更改的情况下 merge 上游的正确方法是什么?

转载 作者:太空狗 更新时间:2023-10-29 13:48:27 26 4
gpt4 key购买 nike

我有点难过。

几个月前,我开始开发一个 repo 的分支。我做了一些改变。我正准备将我的代码作为 pull 请求推送回 master,但我意识到在此期间发生了相当多的变化......

所以,following the instructions at Github在“引入上游更改”下,我尝试了:

$ git remote add upstream ...  # savon/httpi
$ git fetch upstream
$ git merge upstream/master
$ git push origin/master # coldnebo/httpi

但是,现在我的 fork 很乱。我仍然是 git 的新手,所以我不会试图猜测术语是什么,而是简单地向您展示我得到的和我期望的:

这就是我想要的差异。有没有什么方法可以在不丢失我的更改的情况下 rebase /还原并执行此操作?

真是一团糟。

也许 git pull 会更好?

变化不多,所以如果它无法恢复,我总是可以手动 diff 并重新制作它,但我正在寻找 future 的“正确方法”。

最佳答案

您应该始终为您创建的每个 merge 请求创建新分支。在将其推送到 github 以创建请求之前,您应该将分支重新设置为最新的上游分支。

Github 说你为此使用 git merge,如果没有太多变化,我更喜欢使用 git rebase upstream/master,这将阻止 merge提交


有时 rebase 不能继续,因为你改变的东西已经在上游分支改变了。例如,假设您有一个 text.txt 文件,例如:

Lorem ipsum

您创建一个 PR 以将其更新为 Lorem ipsum! 并且上游分支已将其更改为 Hello World 如果您进行 rebase ,则使您的代码达到创建请求之前的日期,您会遇到 merge 冲突。该文件使用冲突标记更新,您可以选择要使用的版本,甚至可以对其进行编辑,在我们的示例中,我们在 text.txt 中获取:

<<<<<<< YOUR_PR_BRANCH
Lorem Ipsum
=======
Hello World
>>>>>>> THE_UPSTREAM_BRANCH

在此之后,使用git add 添加更新的文件并执行git rebase --continue

关于git - 在不丢失更改的情况下 merge 上游的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com