从已删除的远程分支获取原点?

Chr*_*nch 409 git git-fetch

当我这样做git fetch origin并且origin有一个已删除的分支时,它似乎不会在我的存储库中更新它.当我这样做git branch -r时仍然显示origin/DELETED_BRANCH.

我怎样才能解决这个问题?

Pav*_*ili 744

您需要执行以下操作

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

这将更新远程分支的本地数据库.

  • 为了完整性:它必须与`git remote prune origin`相同,类似于http://stackoverflow.com/a/6127884/94687和http://stackoverflow.com/a中提到的`git pull --prune`/17983126/94687. (10认同)
  • 伙计们,当我这样做时,它说“ [已删除](无)-> origin / <分支名称>”,而分支仍显示在本地仓库中,为什么? (5认同)
  • 由于某种原因,你的命令不起作用,但是这个命令在我的`origin` fork中不存在的远程分支:`git fetch -p origin`当我然后执行`git branch -r`时不存在的远程分店不再出现. (4认同)
  • 我收到一条消息说我的分支已被删除,但运行`git branch`仍然显示应该删除的分支。 (3认同)
  • 这只会删除本地分支与其远程对应分支之间的跟踪设置。这里解释得很清楚:https://git-scm.com/docs/git-fetch#_pruning 本地分支在执行`git fetch -p`后保留,但由于跟踪被删除,任何稍后完成的`git push`不会影响服务器的状态。 (2认同)

小智 84

来自http://www.gitguys.com/topics/adding-and-removing-remote-branches/

有人从远程存储库中删除分支后,当用户执行git pull或git fetch时,git不会自动删除本地存储库分支.但是,如果用户希望从远程存储库中删除的本地存储库中删除所有跟踪分支,则可以键入:

git远程修剪原产地

作为一个注释,-p param git fetch -p实际上意味着"修剪".
无论您选择哪种方式,都将从本地存储库中删除不存在的远程分支.


naX*_*aXa 29

您需要执行以下操作

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

以便同步您的分支列表.在git的手册

-p,--prune
获取后,删除遥控器上不再存在的任何远程跟踪引用.如果仅由于默认标记自动跟踪或由于--tags选项而提取标记,则不对其进行修剪.但是,如果由于显式refspec而获取标记(在命令行或远程配置中,例如,如果使用--mirror选项克隆了远程),则它们也会受到修剪.

我个人喜欢使用,git fetch origin -p --progress因为它显示了进度指示器.

  • 谢谢`--progress`! (2认同)

小智 9

这对我有用.

git remote update --prune
Run Code Online (Sandbox Code Playgroud)


Von*_*onC 6

关于git fetch -p,它的行为在Git 1.9中发生了变化,只有Git 2.9.x/2.10反映了这一点.

请参阅Jeff King()提交的9e70233(2016年6月13日).(由Junio C Hamano合并- -提交1c22105,2016年7月6日)peff
gitster

fetch:文档修剪发生

这在10a6cc8中有所改变(fetch --prune:在获取之前运行修剪,2014-01-02),但似乎没有人在讨论中意识到我们明确地宣传了"之后".

所以文档现在说明:

获取之前,删除远程不再存在的任何远程跟踪引用

那是因为:

当我们有一个名为" frotz/nitfol" 的远程跟踪分支来自之前的提取,并且上游现在有一个名为" frotz" 的分支时,fetch将无法从上游删除frotz/nitfol带有" git fetch --prune" 的分支.git会通知用户使用" git remote prune"来解决问题.

fetch --prune通过在提取操作之前移动修剪操作来更改" "的工作方式.这样,它不会警告用户冲突,而是自动修复它.


Ame*_*icA 5

对于gitApple git更新的版本2.x这对我有用:

git remote prune origin
Run Code Online (Sandbox Code Playgroud)