Git查看、刪除、重命名遠程分支和TAG

提綱

  1. 查看遠程分支
  2. 建立分支
  3. 提交分支
  4. 刪除本地分支
  5. 刪除遠程分支和tag
  6. 刪除不存在對應遠程分支的本地分支
  7. 重命名遠程分支
  8. 把本地tag推送到遠程
  9. 獲取遠程tag

查看遠程分支

加上-a參數能夠查看遠程分支,遠程分支會用紅色表示出來(若是你開了顏色支持的話): git

1
2
3
4
5
6
7
8
9
10
# git branch -a
   master
   remote
   tungway
   v1 . 52
* zrong
   remotes / origin / master
   remotes / origin / tungway
   remotes / origin / v1 . 52
   remotes / origin / zrong

     查看本地分支: git branch 
    查看遠程分支: git branch -r

建立分支

    1 建立本地分支(創建分支後,仍停留在當前分支,切換分支:git checkout branchName)
        $ git branch branchName
    2 建立分支後切換到新分支
        $ git checkout -b branchName

提交分支

    1 提交到遠程分支
        $ git commit -a -m 'my new branch'
        git push origin branchName:branchName
    2 若是想把本地的某個分支mybranch提交到遠程倉庫,並做爲遠程倉庫的master分支
        $ git push origin mybranch:master

刪除本地分支

     刪除本地分支,強制刪除用-D
          $ git branch -d branchName
          $ git branch -D branchName    ## 強制刪除

刪除遠程分支和tag github

在Git v1.7.0 以後,可使用這種語法刪除遠程分支: fetch

1
git push origin -- delete < branchName >

刪除tag這麼用: ui

1
git push origin -- delete tag < tagname >


不然,可使用這種語法,推送一個空分支到遠程分支,其實就至關於刪除遠程分支: spa

1
git push origin : < branchName >

這是刪除tag的方法,推送一個空tag到遠程tag: ip

1
2
git tag - d < tagname >
git push origin : refs / tags / < tagname >

兩種語法做用徹底相同。 rem

刪除不存在對應遠程分支的本地分支

假設這樣一種狀況:
1. 我建立了本地分支b1並pull到遠程分支 origin/b1;
2. 其餘人在本地使用fetch或pull建立了本地的b1分支;
3. 我刪除了 origin/b1 遠程分支;
4. 其餘人再次執行fetch或者pull並不會刪除這個他們本地的 b1分支,運行 git branch -a 也不能看出這個branch被刪除了,如何處理? get

使用下面的代碼查看b1的狀態: qt

1
2
3
4
5
6
7
8
9
10
11
12
# git remote show origin
* remote origin
   Fetch URL : git @ github . com : xxx / xxx . git
   Push   URL : git @ github . com : xxx / xxx . git
   HEAD branch : master
   Remote branches :
     master                 tracked
     refs / remotes / origin / b1 stale ( use 'git remote prune' to remove )
   Local branch configured for 'git pull' :
     master merges with remote master
   Local ref configured for 'git push' :
     master pushes to master ( up to date )

這時候可以看到b1是stale的,使用 git remote prune origin 能夠將其從本地版本庫中去除。 it

更簡單的方法是使用這個命令,它在fetch以後刪除掉沒有與遠程分支對應的本地分支:

1
git fetch - p

重命名遠程分支

在git中重命名遠程分支,其實就是先刪除遠程分支,而後重命名本地分支,再從新提交一個遠程分支。

例以下面的例子中,我須要把 devel 分支重命名爲 develop 分支:

1
2
3
4
5
6
7
8
9
10
# git branch -av
* devel                              752bb84 Merge pull request #158 from Gwill/devel
   master                              53b27b8 Merge pull request #138 from tdlrobin/master
   zrong                              2ae98d8 modify CCFileUtils , export getFileData
   remotes / origin / HEAD                -> origin / master
   remotes / origin / add_build_script   d4a8c4f Merge branch 'master' into add_build_script
   remotes / origin / devel                752bb84 Merge pull request #158 from Gwill/devel
   remotes / origin / devel _qt51          62208f1 update . gitignore
   remotes / origin / master              53b27b8 Merge pull request #138 from tdlrobin/master
   remotes / origin / zrong                2ae98d8 modify CCFileUtils , export getFileData

刪除遠程分支:

1
2
3
# git push --delete origin devel
To git @ github . com : zrong / quick - cocos2d - x . git
- [ deleted ]          devel

重命名本地分支:

1
# git branch -m devel develop

推送本地分支:

1
2
3
4
5
6
7
8
# git push origin develop
Counting objects : 92 , done .
Delta compression using up to 4 threads .
Compressing objects : 100 % ( 48 / 48 ) , done .
Writing objects : 100 % ( 58 / 58 ) , 1.38 MiB , done .
Total 58 ( delta 34 ) , reused 12 ( delta 5 )
To git @ github . com : zrong / quick - cocos2d - x . git
* [ new branch ]        develop -> develop

然而,在 github 上操做的時候,我在刪除遠程分支時碰到這個錯誤:

1
2
3
4
5
# git push --delete origin devel
remote : error : refusing to delete the current branch : refs / heads / devel
To git @ github . com : zrong / quick - cocos2d - x . git
! [ remote rejected ] devel ( deletion of the current branch prohibited )
error : failed to push some refs to 'git@github.com:zrong/quick-cocos2d-x.git'

這是因爲在 github 中,devel 是項目的默認分支。要解決此問題,這樣操做:

  1. 進入 github 中該項目的 Settings 頁面;
  2. 設置 Default Branch 爲其餘的分支(例如 master);
  3. 從新執行刪除遠程分支命令。

把本地tag推送到遠程

1
$ git push -- tags

獲取遠程tag

1
$ git fetch origin tag < tagname >
相關文章
相關標籤/搜索