用远程分支覆盖我的本地分支

时间:2011-06-03 16:12:24

标签: git

我已完全支持我当地的分支机构,并希望重新开始。服务器上的版本是正确的。

我不想重新开始,我想利用我的本地历史来解决我的巨大问题。 (如果必须,我可以。)

git fetch branchnamegit pull branchname不起作用。我收到的消息是“最新”但是,我的本地版本与服务器版本不匹配。

git pull origin/branchname给了我一个“ not found ”错误。

4 个答案:

答案 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

这是将您所有的本地更改恢复到原点