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

Sar*_*pps 151 git

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

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

git fetch branchname,而且git pull branchname不工作.我收到的消息是" 最新的 "但是,我的本地版本与服务器的版本不匹配.

git pull origin/branchname给我一个" 未找到 "的错误.

kni*_*ttl 241

首先,在当前位置创建一个新分支(如果您需要旧的"搞砸"历史记录):

git branch fubar-pin
Run Code Online (Sandbox Code Playgroud)

更新远程分支列表并同步新提交:

git fetch --all
Run Code Online (Sandbox Code Playgroud)

然后,将分支重置为origin/branch指向的点:

git reset --hard origin/branch
Run Code Online (Sandbox Code Playgroud)

小心,这将删除工作树中的任何更改!

  • +1但你可能想要在重置之前添加一个提醒来执行`git fetch origin` (2认同)

Cas*_*all 58

当我弄乱我的本地分支时我做的是我只是重命名我的破坏的分支,并再次检查/分支上游分支:

git branch -m branch branch-old
git fetch remote
git checkout -b branch remote/branch
Run Code Online (Sandbox Code Playgroud)

然后,如果您确定不需要旧分支中的任何内容,请将其删除:

git branch -D branch-old
Run Code Online (Sandbox Code Playgroud)

但通常我会把旧分支留在本地,以防我在那里有东西.

  • 这似乎是最好的答案.它有助于创建一个备份副本以防万一,似乎很可能导致本地分支是远程副本的精确副本. (4认同)

Wes*_*ker 5

您的本地分支可能对您要丢弃的进行了修改。为此,您需要使用git reset将分支头重置为与上游存储库分支分开的最后一个位置。使用git branch -v发现上游分支的SHA1 ID,并使用重置您的分支它它git reset SHA1ID。然后你应该能够做一个git checkout丢弃它在你的目录中留下的更改。

注意:始终在备份存储库上执行此操作。这样你就可以保证你是自己它工作正常。或者,如果没有,您有一个备份可以恢复。