Rebase 或 cherry pick 这些提交?
Rebase or cherry pick these commits?
不久前我尝试了变基,结果把自己搞砸了。
经过一些中止的尝试后,我的文件处于所需的状态,但是当我在 github:
上准备拉取请求时,我的提交历史看起来很丑陋
我想在打开 PR 之前将所有内容压缩为一次提交,但不知道如何操作。如果我尝试 git rebase -i HEAD~5
我会得到列表中显示的其他人的提交(可能是因为我在某个时候从 master 合并?)
我不能轻易地挑选,因为那里有合并提交,而且我不知道如何实现它,涉及合并的挑选。
正如我提到的,如果我现在打开一个 PR,文件应该是它们应该的样子,但我知道回购经理会要求我压缩那个历史。我正在寻找有关做什么的建议?
编辑:为了响应更多信息的请求,这是来自我的 git 客户 sourcetree 的图表。希望它有所帮助(我意识到我没有 post 获取 100% 的信息,也不一定期待答案的灵丹妙药,但我希望有一种方法。)
哇,在 post 中看起来一点都不好。
Here's the link to the image
啊,如果手头没有完整的历史记录等,这真的很难弄清楚,但我认为 HEAD~5
是罪魁祸首。你回到历史太远了——据我所知,你的实际分支上只有 3 次提交。您可以通过明确指定提交哈希来尝试变基吗?例如
git rebase -i <parent-of-d9e6a34>
你当然会用实际的提交哈希替换 <parent-of-d9e6a34>
。
编辑:git rebase -i d9e6a34~1
也应该这样做。
I'd like to squash all that to a single commit
那你就不需要rebase
了,直接用reset
和commit
就可以了。
git reset --soft origin/master
git commit
git reset --soft
会将您当前的分支更新为与 origin/master
相同的提交,但不会更新您的索引或工作树,因此在此之后,您的所有更改仍在索引中并准备就绪再次提交。
不久前我尝试了变基,结果把自己搞砸了。
经过一些中止的尝试后,我的文件处于所需的状态,但是当我在 github:
上准备拉取请求时,我的提交历史看起来很丑陋我想在打开 PR 之前将所有内容压缩为一次提交,但不知道如何操作。如果我尝试 git rebase -i HEAD~5
我会得到列表中显示的其他人的提交(可能是因为我在某个时候从 master 合并?)
我不能轻易地挑选,因为那里有合并提交,而且我不知道如何实现它,涉及合并的挑选。
正如我提到的,如果我现在打开一个 PR,文件应该是它们应该的样子,但我知道回购经理会要求我压缩那个历史。我正在寻找有关做什么的建议?
编辑:为了响应更多信息的请求,这是来自我的 git 客户 sourcetree 的图表。希望它有所帮助(我意识到我没有 post 获取 100% 的信息,也不一定期待答案的灵丹妙药,但我希望有一种方法。)
哇,在 post 中看起来一点都不好。 Here's the link to the image
啊,如果手头没有完整的历史记录等,这真的很难弄清楚,但我认为 HEAD~5
是罪魁祸首。你回到历史太远了——据我所知,你的实际分支上只有 3 次提交。您可以通过明确指定提交哈希来尝试变基吗?例如
git rebase -i <parent-of-d9e6a34>
你当然会用实际的提交哈希替换 <parent-of-d9e6a34>
。
编辑:git rebase -i d9e6a34~1
也应该这样做。
I'd like to squash all that to a single commit
那你就不需要rebase
了,直接用reset
和commit
就可以了。
git reset --soft origin/master
git commit
git reset --soft
会将您当前的分支更新为与 origin/master
相同的提交,但不会更新您的索引或工作树,因此在此之后,您的所有更改仍在索引中并准备就绪再次提交。