最近在开发的时候偶然发现,同事在本地使用 git branch -a 会看到我已经删除的远程分支, git fetch 之后依然能看到,然后同事就来询问我为什么不清理掉那些久远的分支,然而我确实是执行了 git push origin --delete branchName 删除每个版本后不用的分支。当时感觉非常奇怪,然后又发现,我在本地也能看到同事已经删除的远程分支。当时我就蒙蔽了,非常蒙蔽。后来查找资料才知道,我们需要使用 git remote prune origin

先调用 git remote show origin

该命令能够获取远端分支信息,你可以看到和本地和远端不同步的地方:

$ git remote show origin
* remote origin
  Fetch URL: git@gitlab.xxx.git
  Push  URL: git@gitlab.xxx.git
  HEAD branch: master
  Remote branches:
    dev_chj                                      tracked
    dev_pr                                       tracked
    dev_pr_v13                                   tracked
    dev_wcc                                      tracked
    dev_wcc_city                                 tracked
    dev_xgm                                      tracked
    develop                                      tracked
    hofix_jingxiaoshang                          tracked
    hotfix_code_sort                             tracked
    hotfix_groupclueimport                       tracked
    master                                       tracked
    refs/remotes/origin/dev_cjc                  stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_agent            stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_brand            stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_channel_ad       stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_channel_youhua   stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_chonggouquanxian stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_dahuanxue        stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_deletegame       stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_getActivity_info stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_jiechufenghao    stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_kefuwaihu        stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_notice           stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_refreshtoken     stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_v10_0904         stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_v12              stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_v14              stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_v16              stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_v16_tmp          stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_v9               stale (use 'git remote prune' to remove)
    refs/remotes/origin/feature_youhua_shiro     stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_cardno             stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_channel_export     stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_export             stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_import_cardorder   stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_master             stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_master_sql         stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_page               stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_session_redis      stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_sql                stale (use 'git remote prune' to remove)
    refs/remotes/origin/hofix_tishixiansuo       stale (use 'git remote prune' to remove)
    refs/remotes/origin/hotfix_authc             stale (use 'git remote prune' to remove)
    release                                      tracked
    test                                         tracked
  Local branches configured for 'git pull':
    dev_chj           merges with remote dev_chj
    dev_pr            merges with remote dev_pr
    dev_wcc           merges with remote dev_wcc
    dev_wcc_city      merges with remote dev_wcc_city
    dev_xgm           merges with remote dev_xgm
    develop           merges with remote develop
    feature_dahuanxue merges with remote feature_dahuanxue
    feature_v16       merges with remote feature_v16
    master            merges with remote master
    release           merges with remote release
    test              merges with remote test
  Local refs configured for 'git push':
    dev_chj      pushes to dev_chj      (local out of date)
    dev_pr       pushes to dev_pr       (up to date)
    dev_wcc      pushes to dev_wcc      (up to date)
    dev_wcc_city pushes to dev_wcc_city (up to date)
    dev_xgm      pushes to dev_xgm      (local out of date)
    develop      pushes to develop      (local out of date)
    master       pushes to master       (local out of date)
    release      pushes to release      (up to date)
    test         pushes to test         (local out of date)
* 远程 origin
  获取地址:http://openapi2.0.git
  推送地址:http://openapi2.0.git
  HEAD分支:master
  远程分支:
    beta                         已跟踪
    develop                      已跟踪
    master                       已跟踪
    refs/remotes/origin/communal 过时(使用 'git remote prune' 来移除)
    refs/remotes/origin/lt-v1    过时(使用 'git remote prune' 来移除)
    release/1.0                  已跟踪
  为 'git pull' 配置的本地分支:
    beta    与远程 beta 合并
    develop 与远程 develop 合并
    master  与远程 master 合并
  为 'git push' 配置的本地引用:
    beta    推送至 beta    (最新)
    develop 推送至 develop (本地已过时)
    master  推送至 master  (本地已过时)

过时的就是和本地不同步的分支,本地已过时的表示你需要移除这个分支了。

这个时候你需要调用

git remote prune origin

同步远程的分支到本地,这样远程已经被删除的分支,本地就不会再看见了。

初始化: git init 连接远程仓库:git remote add origin git@github.com:yourName/repositoryname.git 从远程仓库pull文件:git pull origin master 提交代码到暂存: git add . (提交暂存) 提交代码: git commit -m (注释什么操作) 推送到远程仓库:git push -u origin master (master 默认分支) 在团队开发项目中,我们经常会存在协作开发的问题,这就会出现一种很常见的现象,有的分支在远程其实很早就被删除了,但是你在本地由于之前的缓存仍然能看到这些远程已经删除掉的分支。比如我这个代码库,可以看到我这个远程分支其实只有 develop 和 master 两个分支。,可以发现现在本地缓存的远程分支已经被删掉了,只剩下两个远程确实存在的分支信息。也能发现确实只有两个有效的远程分支了。发现我们本地其实缓存了好多远程分支。也能发现这里确实缓存了好多远程分支。 git-prune 如果ready/*模式中的任何分支超过 1 天,都将从origin删除。 任何其他分支,除了master ,如果超过 30 天,将从origin删除。 不会删除任何本地分支。 远端来源网址 从本地git存储库获取git远程源URL。 记住! 远程起源必须首先存在! 请考虑关注该项目的作者 ,并考虑为该项目以显示您的 :red_heart: 和支持。 使用安装: $ npm install --save remote-origin-url const origin = require ( 'remote-origin-url' ) ; 异步/等待 ( async ( ) => { let url = await origin ( ) ; console . log ( url ) ; // url => "https://github.com/jonschlinkert/remote-origin-url.git" } ) ( ) ; origin ( ( err , url ) => { if ( err ) return co ssh: connect to host github.com port 22: Connection timed out 解决方法: 在C:/Users/DELL/.ssh/中新建一个config文件 重新执行 $ git push -u origin master: 这个方法是从国外一个人的博客中找的,具体原理是什么我还不太清楚,但是觉得似乎有一点点风险。先占个坑,假如在后面学习过程中能够知道是什么原理了再来补上。 fatal:remote origin already exists 命令目的: 在某一建立好的本地仓库(learngit为本地仓库名)中 在你经常使用的命令当中有一个git branch –a 用来查看所有的分支,包括本地和远程的。但是时间长了你会发现有些分支在远程其实早就被删除了,但是在你本地依然可以看见这些被删除的分支。 你可以通过命令,git remote show origin 来查看有关于origin的一些信息,包括分支是否tracking。 Local refs configured for ‘git ... Git remote prune origin 同步远程分支与本地分支的改动 查看本地和远程分支可以用命令git branch -a, 将会显示包括本地和远程的所有分支。然而多个人同时维护多个分支的时候,本地分支与远程分支没有能够及时同步而出现偏差,可应用命令git remote show origin 来查看本地库与远程库的关系。 图中显示master分支已经被tracked,而两外两个分支表示已经在远程端被删除,而本地还可以看到,提示可以应用命令git remote prune移除该两个分支,保持本地分 官网下载:https://git-scm.com/downloads 下载后按照默认设置安装即可,安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功! 2.使用github仓库 创建仓库: 点击 new respository后进入下面的页面 git prune https://git-scm.com/docs/git-prune * Prune all unreachable objects from the object database unreachable objects 指的是.git\objects中没有 请查看本自述文件底部的愿望清单以了解将来的计划。 在投票选举功能。 新闻2019-08-23:我昨晚在上发布了这个项目,直到今天早上醒来并在subreddit上找到它! r / git很棒! 更多新闻2019-08-23:显然我对交叉发布也使其在一夜之间排名第3! sudo apt-get install git python3 python3-pip pip install awscli git-remote-aws 使用您的AWS密钥和机密配置awscli (如果已完成,请跳过此步骤) aws configure 配置的角色或用户应附加以下策略的子集(或全部) AmazonEC2ReadOnlyAcce git创建fork仓库和关联fork仓库 & git提交新分支之git删除本地分支和git删除远程分支——git remote prune origin同步分支 & 跨分支合并-新建分支之本地和远程仓库 跨分支合并 // ori-远程主库 origin-自己主库 git checkout -b product-v2sp10-2022-3-22(本地新建并拉取同名分支) remotes/ori/product-v2sp10-2022-3-22(主库分支) // 新建本地sp10并拉取主库s