我有一个凌乱的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,拉动更改然后重新发送?
或者这棵树是否合适?我正在为一个开源项目做贡献,这就是我的拉取请求目前的样子。
答案 0 :(得分:2)
只要您没有推送到远程存储库,就可以撤消合并并提取更改。
git reset --hard 880c0a6
git pull --rebase
这将删除远程提交,并将您的repo重置为上次本地提交。然后,您可以使用--rebase
选项提取更改以获得线性历史记录。只有在未将更改推送到远程仓库时才执行此操作。你正在改变历史,这是一种不好的做法。您必须执行git push -f
,并且使用遥控器的任何其他人在从远程更新时都会遇到问题
否则这样的合并提交通常是无害的。