0

我不记得确切的消息或它发生的原因,但是当我尝试推送我对远程仓库的更改时,我收到一条消息,上面写着类似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 有一点了解,但想确保我不会把这件事搞砸。

奖励:下次回购的提示不匹配时我该怎么办?

4

1 回答 1

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
于 2013-11-07T17:00:23.127 回答