我合并而不是拉,如何解决

时间:2013-09-21 15:59:41

标签: git

我有一个凌乱的git树,我想知道解决它的最佳方法。

*   3f599ff - (HEAD, origin/enterprise-options, enterprise-options) Merge branch
|\
| * 5087bec - (upstream/master) Remote Change (2 days ago)
| * 6705b5f - Remote Change (2 days ago)
* | 880c0a6 - New Feature (3 hours ago)
|/
* 312968b - Blah (4 weeks ago)

我应该在提交新功能880c0a6之前进行任何更改,但我没有。我决定合并上游/主人5087bec。如何恢复合并提交3f599ff,拉动更改然后重新发送?

或者这棵树是否合适?我正在为一个开源项目做贡献,这就是我的拉取请求目前的样子。

1 个答案:

答案 0 :(得分:2)

只要您没有推送到远程存储库,就可以撤消合并并提取更改。

git reset --hard 880c0a6
git pull --rebase

这将删除远程提交,并将您的repo重置为上次本地提交。然后,您可以使用--rebase选项提取更改以获得线性历史记录。只有在未将更改推送到远程仓库时才执行此操作。你正在改变历史,这是一种不好的做法。您必须执行git push -f,并且使用遥控器的任何其他人在从远程更新时都会遇到问题

否则这样的合并提交通常是无害的。