我有两个分支:
当地分公司(和我一起工作的那家) 远程分支(公共的,只有经过良好测试的提交才会去那里)
最近我把我当地的分公司搞得一团糟。
如何将本地分支完全替换为远程分支,以便从远程分支现在所在的位置继续工作?
我已经搜索了SO,在本地签出到远程分支没有任何影响。
我有两个分支:
当地分公司(和我一起工作的那家) 远程分支(公共的,只有经过良好测试的提交才会去那里)
最近我把我当地的分公司搞得一团糟。
如何将本地分支完全替换为远程分支,以便从远程分支现在所在的位置继续工作?
我已经搜索了SO,在本地签出到远程分支没有任何影响。
当前回答
git branch -D <branch-name>
git fetch <remote> <branch-name>
git checkout -b <branch-name> --track <remote>/<branch-name>
其他回答
丑陋但更简单的方法:删除本地文件夹,并再次克隆远程存储库。
我有点惊讶居然没有人提到这一点;我几乎每天都用它:
git reset --hard @{u}
基本上,@{u}只是当前分支正在跟踪的上游分支的简写。例如,这通常等同于origin/[my-current-branch-name]。它很好,因为它是分支不可知的。
确保git首先获取远程分支的最新副本。
附注:在大多数shell中,命令会像写的那样工作,但如果你在PowerShell或csh中使用Git,你需要先转义特殊字符,尽管我也确认了它在这两种情况下都是作为字符串工作的,例如:
git reset --hard '@{u}'
如果你想要更新当前未签出的分支,你可以这样做:
git fetch -f origin rbranch:lbranch
转到结帐。
我总是使用这个命令将本地更改替换为存储库更改。 Git签出空间。
git reset --hard
git clean -fd
这为我工作-清洁显示它删除的所有文件。如果它告诉你你会失去零钱,你需要藏起来。