清理 Git 个不需要的提交和无关分支的分支

Cleaning up a Git branch of unneeded commits and extraneous branches

我怎样才能摆脱一切,只留下底部的最后一次提交? a28fe12 之后的所有内容都是可消耗的。

我已经尝试使用 git rebasegit reset HEAD~n,因为我已经做了数百次,但似乎在途中出了点问题,我陷入了困境,我进入 master 分支的 "clean" 状态。

git reset --hard cd3a8cb 产生以下结果:

在此先感谢您的帮助。

git reset --hard cd3a8cb 会将您的分支重置为第一次提交。上面的所有内容都将被丢弃。

您已经在本地完成了。现在您需要将其推送到远程存储库。

origin/masterjvk-github/master 向您显示主分支在远程存储库中的位置 originmaster 您上次查看。如果您 git fetch origingit fetch jvk-github 您将获得更新的视图。

您需要将更新推送到这些遥控器。 git push --force-with-lease origingit push --force-with-lease jvk-github--force-with-lease is a safer --force.

然而,这意味着丢失所有其他提交,包括添加屏幕截图和删除冗余依赖项。只有 origin/master 似乎搞砸了,可能是变基和拉取的某种组合的结果。

jvk-github/master 看起来不错。我建议将您的 master 移动到 jvk-github/master 并将其推送到 origin.

git checkout master
git reset --hard jvk-github/master
git push --force-with-lease origin master

最后,为了防止此类问题,我建议使用 rebase 进行拉取。默认情况下 git pullgit fetch 加上 git merge。如果分支在推送后被重新定位,这可能会导致重复,就像 origin/master.

中发生的那样

相反,更新为 git pull --rebase。您的本地工作将基于远程工作进行重新调整。我建议通过设置 pull.rebase = merges.

将其设置为默认值