我不记得确切的消息或它为什么会发生,但是当我试图推动我对远程仓库的更改时,我收到了一条消息,上面写着tip/head pointers were not in sync
之类的消息,我需要先拉出来然后推。我做到了,现在这就是我所拥有的:
观察当前状态:
* commit 7f82d39
| comment 3
|
* commit f4d754b
|\ Merge: aadc751 328b900
| |
| | Merge branch 'master' of https://github.com/myrepo
| |
| * commit 328b900
| |
| | comment 2
| |
* | commit aadc751
|/
| comment 1
|
* commit aa65fee
请注意,我是所有这些提交的作者,并未涉及其他作者。我想以这样的方式来修改它,以便销毁GitHub有的任何错误/无意的更改,并且只保留在我的本地机器上的repo上进行的提交。有效地将分支合并为一个。然后将本地回购推送回GitHub覆盖任何GitHub。
换句话说,我希望有一个分支行,没有分割和合并,我可以丢弃或合并任何GitHub发起的提交,只使用我的本地仓库作为“真”分支,没有丢失任何东西。
如何?
我对rebase有点了解,但是想确保我不要搞砸了。
奖金:下次回购提示不符合我该怎么办?
答案 0 :(得分:0)
步骤如下: 1.给你的“一个真正的分支”一个名字并检查出来 2.修复你的历史 3.应用合并后的最后一次提交
转换为:
git checkout -b onetrue aadc751
git rebase 328b900
git cherry-pick 7f82d39
你已经完成了。您现在有一个名为“onetrue”的分支,它具有您想要的历史记录。如果你喜欢它,请保留它。如果您可能已经使用了另一个不再需要的分支,例如“master”,则可以将其删除:
git branch -D master
如果您希望现在将新分支称为master,请将其重命名为:
git branch -m onetrue master
回答奖金,为了避免将来这种情况,请在拉动时包含“rebase”标志:
git pull --rebase