清理 Git 个不需要的提交和无关分支的分支
Cleaning up a Git branch of unneeded commits and extraneous branches
我怎样才能摆脱一切,只留下底部的最后一次提交? a28fe12
之后的所有内容都是可消耗的。
我已经尝试使用 git rebase
和 git reset HEAD~n
,因为我已经做了数百次,但似乎在途中出了点问题,我陷入了困境,我进入 master 分支的 "clean" 状态。
git reset --hard cd3a8cb
产生以下结果:
在此先感谢您的帮助。
git reset --hard cd3a8cb
会将您的分支重置为第一次提交。上面的所有内容都将被丢弃。
您已经在本地完成了。现在您需要将其推送到远程存储库。
origin/master
和 jvk-github/master
向您显示主分支在远程存储库中的位置 origin
和 master
您上次查看。如果您 git fetch origin
和 git fetch jvk-github
您将获得更新的视图。
您需要将更新推送到这些遥控器。 git push --force-with-lease origin
和 git 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 pull
是 git fetch
加上 git merge
。如果分支在推送后被重新定位,这可能会导致重复,就像 origin/master
.
中发生的那样
相反,更新为 git pull --rebase
。您的本地工作将基于远程工作进行重新调整。我建议通过设置 pull.rebase = merges
.
将其设置为默认值
我怎样才能摆脱一切,只留下底部的最后一次提交? a28fe12
之后的所有内容都是可消耗的。
我已经尝试使用 git rebase
和 git reset HEAD~n
,因为我已经做了数百次,但似乎在途中出了点问题,我陷入了困境,我进入 master 分支的 "clean" 状态。
git reset --hard cd3a8cb
产生以下结果:
在此先感谢您的帮助。
git reset --hard cd3a8cb
会将您的分支重置为第一次提交。上面的所有内容都将被丢弃。
您已经在本地完成了。现在您需要将其推送到远程存储库。
origin/master
和 jvk-github/master
向您显示主分支在远程存储库中的位置 origin
和 master
您上次查看。如果您 git fetch origin
和 git fetch jvk-github
您将获得更新的视图。
您需要将更新推送到这些遥控器。 git push --force-with-lease origin
和 git 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 pull
是 git fetch
加上 git merge
。如果分支在推送后被重新定位,这可能会导致重复,就像 origin/master
.
相反,更新为 git pull --rebase
。您的本地工作将基于远程工作进行重新调整。我建议通过设置 pull.rebase = merges
.