遠程分支的刪除與同步

刪除遠程分支命令:git

1
$ git push origin :br03

或者:github

1
$ git push origin --delete br03

另外一個用戶使用git fetch並不能同步獲取到br03分支被刪除。緩存

1
$ git fetch

此命令沒有更新的顯示,說明並沒有刪除的信息。
但執行git pull時,報錯。fetch

1
2
3
$ git pull
Your configuration specifies to merge with the ref 'br03'
from the remote, but no such ref was fetched.

這確定是執行git fetch時,報錯。code

1
2
3
$ git fetch origin br03
fatal: Couldn't find remote ref br03
fatal: The remote end hung up unexpectedly

但檢查分支時,發現origin/br03還存在。ci

1
2
3
4
5
6
7
8
$ git br -a
  br01
  br02
* br03
  master
  remotes/origin/br01-remote
  remotes/origin/br03
  remotes/origin/master

這說明,remotes/origin/*這些遠程跟蹤分支,僅僅是遠程分支的一個緩存,而且,不能經過git fetch命令獲取到分支刪除的更新rem

執行命令同步

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ git remote show origin
* remote origin
  Fetch URL: git@github0123:jeremy0123/fetch.git
  Push  URL: git@github0123:jeremy0123/fetch.git
  HEAD branch: master
  Remote branches:
    br01-remote              tracked
    br02                     tracked
    br03-remote              tracked
    master                   tracked
    refs/remotes/origin/br03 stale (use 'git remote prune' to remove)
  Local branches configured for 'git pull':
    br01   merges with remote br01-remote
    br03   merges with remote br03
    master merges with remote master
  Local refs configured for 'git push':
    br02   pushes to br02   (up to date)
    master pushes to master (local out of date)

發現refs/remotes/origin/br03狀態是stale(陳舊的),而且後面有命令提示。it

1
2
3
4
$ git remote prune origin
Pruning origin
URL: git@github0123:jeremy0123/fetch.git
 * [pruned] origin/br03

或者執行io

1
2
3
4
5
6
7
$ git fetch -p
remote: Counting objects: 5, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From git@github0123:jeremy0123/fetch.git
   04a6837..d49d143  master     -> origin/master
 x [deleted]         (none)     -> origin/br03

在執行fetch以後,刪除遠程不存在的遠程跟蹤分支。

~~ EOF ~~

相關文章
相關標籤/搜索