我已经开始研究一个项目了,我做了一些不需要的提交,我推送到了原始主人。现在,当我尝试执行拉取请求时,Github想要提交所有先前的提交。
我的问题是,如何删除不需要的提交并提交我想要提交的更改,以便我与master保持同步?
答案 0 :(得分:34)
我认为你的起源是你想要做拉取请求的某个项目的自己的分支吗?
由于您将更改历史记录(通过重置头部),您需要使用--force标志。使用git log
找到上次提交的哈希值。
现在运行
git reset SHA
这将改变您的头,并保留自上次良好提交以来文件中的更改,您的索引也将被重置。
现在您可以更改代码并执行所需的提交。但是,您必须执行git push --force
,因为您更改了存储库的历史记录。这意味着任何分叉您的存储库的人将无法再从您那里获取更改。但是你可以向你的上游做拉取请求。
答案 1 :(得分:0)
如果您正在使用git gui,请转到git gui并可视化您的分支历史记录。 (在执行下一步之前,请备份要推送的本地更改) 右键单击分支要重置为主控的点,然后单击重置。 重置后,在命令行中键入git push -f 现在在分支中进行必要的更改,再次提交n push。 如果现在创建一个pull请求,它将在分支重置后只有新的提交。