52

我已经开始从事一个项目,并且我做了一些不需要的提交,我将这些提交推送给了原始大师。现在,当我尝试执行拉取请求时,Github 想要提交所有以前的提交。

我的问题是,如何删除不需要的提交并提交我想要提交的更改,以便我与 master 保持同步?

4

2 回答 2

34

我假设您的来源是您自己的某个项目的分支,您也想做一个拉取请求?

由于您将更改历史记录(通过重置头部),您需要使用 --force 标志进行推送。使用git log.

现在运行

git reset SHA

这会将您的头更改为该 sha 并保留自上次良好提交以来文件中的更改,您的索引也将被重置。

现在您可以更改您的代码并执行您想要的提交。但是您必须这样做,git push --force因为您更改了存储库的历史记录。这意味着任何分叉您的存储库的人将无法再从您那里提取更改。但是您将能够向上游发出拉取请求。

于 2012-01-24T17:56:13.530 回答
0

如果您使用 git gui,请转到 git gui 并可视化您的分支历史。(在进行下一步之前,备份您要推送的本地更改)右键单击分支要重置为主的点,然后单击重置。重置后,在命令行中输入 git push -f 现在在分支中进行必要的更改,再次提交 n push。如果您现在创建一个拉取请求,它将只有分支重置后的新提交。

于 2013-01-24T04:32:19.653 回答