我已完全支持我当地的分支机构,并希望重新开始。服务器上的版本是正确的。
我不想重新开始,我想利用我的本地历史来解决我的巨大问题。 (如果必须,我可以。)
git fetch branchname
和git pull branchname
不起作用。我收到的消息是“最新”但是,我的本地版本与服务器版本不匹配。
git pull origin/branchname
给了我一个“ not found ”错误。
答案 0 :(得分:235)
首先,在当前位置创建一个新分支(如果您需要旧的'搞砸'历史记录):
git branch fubar-pin
更新远程分支列表并同步新提交:
git fetch --all
然后,将分支重置为origin / branch指向的位置:
git reset --hard origin/branch
小心,这将删除工作树中的所有更改!
答案 1 :(得分:55)
当我弄乱我的本地分支时我做的是我只是重命名我的分支,并再次检查/分支上游分支:
git branch -m branch branch-old
git fetch remote
git checkout -b branch remote/branch
然后,如果您确定不想要旧分支中的任何内容,请将其删除:
git branch -D branch-old
但通常我会把旧分支留在本地,以防我在那里有东西。
答案 2 :(得分:3)
您当地的分支机构可能会修改您想要丢弃的内容。为此,您需要使用git reset
将分支头重置为从上游repo分支中分离的最后一个位置。使用git branch -v
查找上游分支的sha1 id,并使用git reset SHA1ID
重置分支。然后你应该能够git checkout
放弃它在目录中留下的更改。
注意:始终在备份的仓库中执行此操作。这样你可以保证你自己工作正常。或者如果没有,则有备份恢复。
答案 3 :(得分:1)
git reset --hard
这是将您所有的本地更改恢复到原点