我开始着手一个项目,不小心提交了一些多余的代码并把它们推到了主分支(origin master)。现在,当我尝试发起一个合并请求时,Github会把所有之前的不必要的提交也包含进去。
我的问题是,我该如何删除不必要的提交,并提交我想要提交的更改,以便与主分支保持同步?
我开始着手一个项目,不小心提交了一些多余的代码并把它们推到了主分支(origin master)。现在,当我尝试发起一个合并请求时,Github会把所有之前的不必要的提交也包含进去。
我的问题是,我该如何删除不必要的提交,并提交我想要提交的更改,以便与主分支保持同步?
我猜你的起点是你自己fork的某个项目,然后想要向该项目发起pull request请求?
由于您将更改历史记录(通过重置head),因此需要使用--force标志进行推送。 使用git log
查找您最后一个良好提交的哈希。
现在运行
git reset SHA
这将更改你的头指向该SHA并保留自那个最后好的提交以来文件中的更改,你的索引也将被重置。
现在,您可以更改代码并执行所需的提交。但是,由于更改了存储库的历史记录,您必须执行git push --force
。这意味着任何分叉您的存储库的人将无法再从您那里拉取更改。但是您将能够对上游发起拉取请求。
如果您正在使用git gui,请转到git gui并可视化您的分支历史。 (在执行下一步之前,备份要推送的本地更改) 右键单击要重置为主分支的点,然后单击重置。 重置后,在命令行中输入git push -f 现在在分支中进行必要的更改,再次提交n push。 如果现在创建拉取请求,则分支重置后仅具有新提交。