'git fetch -p'后删除了分支

时间:2015-10-18 11:58:42

标签: git version-control git-branch git-fetch

我尝试从项目中删除几个分支:

leo:Project leo$ git push origin --delete effects
To https://github.com/gituser/Project.git
 - [deleted]         effects
leo:Project leo$ git push origin --delete viewport
To https://github.com/gituser/Project.git
 - [deleted]         viewport

但在fetch --prune之后说

  

获取后,删除不再有的任何远程跟踪引用   存在于遥控器上。

我仍然在本地计算机上删除了分支:

leo:Project leo$ git fetch -p
leo:Project leo$ git branch -a
  develop
  effects
* master
  viewport
  remotes/origin/HEAD -> origin/master
  remotes/origin/develop
  remotes/origin/master

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

该命令完全按照它所说,它删除了“远程跟踪引用”。这意味着连接到远程存储库上的分支的任何本地分支都将断开连接,仅此而已。这尤其意味着本地分支在之后仍然存在。

要删除分支,请使用git branch -D <branchname>,或者首先查看分支的内容,确保不会丢失任何提交。

答案 1 :(得分:2)

git fetch --prune仅删除工作树中远程删除的远程引用。远程引用位于remotes/*下(例如,remotes/origin/master)。

git fetch --prune不会删除本地分支 - 即使本地分支跟踪远程引用它也不会被删除(例如,通过设置git branch --set-upstream-to=origin/master master)。这是有意的。想象一下,你有一个本地分支,其上有一些提交,然后有人删除了远程分支,你的本地更改就消失了。

但是,要删除本地分支机构问题git branch -D NAME,请让您不要在该分支机构上提交您想要保留的内容。