我有两个分支:
当地分公司(和我一起工作的那家) 远程分支(公共的,只有经过良好测试的提交才会去那里)
最近我把我当地的分公司搞得一团糟。
如何将本地分支完全替换为远程分支,以便从远程分支现在所在的位置继续工作?
我已经搜索了SO,在本地签出到远程分支没有任何影响。
我有两个分支:
当地分公司(和我一起工作的那家) 远程分支(公共的,只有经过良好测试的提交才会去那里)
最近我把我当地的分公司搞得一团糟。
如何将本地分支完全替换为远程分支,以便从远程分支现在所在的位置继续工作?
我已经搜索了SO,在本地签出到远程分支没有任何影响。
当前回答
这就像三步一样简单:
删除本地分支:git branch -d local_branch 获取最新的远程分支:git Fetch origin remote_branch 基于远端分支重建本地分支: Git checkout -b local_branch origin/remote_branch
其他回答
它可以通过多种方式完成,继续编辑这个答案,以传播更好的知识视角。
1)硬复位
如果你从远程开发分支工作,你可以重置HEAD到远程分支上的最后一次提交,如下所示:
git reset --hard origin/develop
2)删除当前分支,并从远程存储库再次签出
考虑到,你正在本地回购中开发分支,这与远程/开发分支同步,你可以这样做:
git branch -D develop
git checkout -b develop origin/develop
3) 中止合并
如果你正处于一个糟糕的合并(错误地使用了错误的分支)之间,并且想要避免合并以返回到最新的分支,如下所示:
git merge --abort
4)取消重置
如果你处于一个糟糕的重基之间,你可以中止重基请求,如下所示:
git rebase --abort
git branch -D <branch-name>
git fetch <remote> <branch-name>
git checkout -b <branch-name> --track <remote>/<branch-name>
你可以像@Hugo of @Laurent说的那样做,或者你可以使用git rebase删除你想要摆脱的提交,如果你知道是哪些。对于这种操作,我倾向于使用git rebase -i head~N(其中N是一个数字,允许您操作最后N次提交)。
git reset --hard
git clean -fd
这为我工作-清洁显示它删除的所有文件。如果它告诉你你会失去零钱,你需要藏起来。
如果你想要更新当前未签出的分支,你可以这样做:
git fetch -f origin rbranch:lbranch