如何在git中创建一个干净的主题分支,只有一个提交(并且没有来自上游的拉动)

时间:2013-04-25 12:48:30

标签: git github

分叉prezto

我将来自github的sorin-ionescu / prezto(upstream)分配到我的github帐户(nasenatmer / prezto)(origin),在本地克隆它并开始配置它,添加文件,同时不断提交并将更改推回到我的github repo。

配置我的本地仓库

除此之外,我修改了一个提示主题,我现在想要回馈给项目,因此我想创建一个拉取请求。从github学习“使用pull请求”和关于gun.io的教程,我尝试创建主题分支,提交我的更改,以便我可以将它们转发为github上的pull请求。但是,与此同时,上游也有更新。

所以我有以下提交历史记录: original checkout - - many "private commits" - - - pull upstream changes

创建主题回购

因此,为了创建主题回购,我在上游最早的克隆中创建了一个分支,我称之为pristine,我不会自定义。然后,我从upstream撤出以使pristine更新。

从那时起,我分支prompt_jakob_setup(这是提示文件的名称)并将文件提交给它。

提交次数过多的问题

现在,如果我转到github从我的主题分支开始拉取请求,我总是从今天开始看two commits:拉入upstream和我的提示提交。

我认为任何维护者都不会接受这种不专业的拉取请求?

问题

创建一个干净的主题分支的正确方法是什么,该分支只有一个你想要向上游推送的提交?

1 个答案:

答案 0 :(得分:0)

如果您不想要上游合并,请git rebase upstream master

您也可以git pull --rebase upstream master。这将在fetch之前执行rebase,以便您确定自己是最新的。

这会将您的提交移到上游仓库上发生的任何提交之后。并且不显示您关注的提交消息。如果要更改当前仓库,则需要git reset --hard进行提交(从上游撤消合并),然后继续git rebase。如果您已将这些更改推送到GitHub上的自己的仓库,则可能需要执行git push --force以覆盖历史记录。 (我一般建议不要这样做,但因为它是你的回购,它应该没问题。)