Git: 重新命名分支 (branch)
近來凍仁開始使用 Git 來管理些瑣碎的事情,不管是上班會用到的 code 還是自己的環境設定,也曾在前公司約 50 台的 Server 上實作 pull 同步 [1],但在大量使用 branch 的情況就很容易遇見命名衝突的問題。
在 branch 已有 dev 的情況下是無法建立 dev/hello 的。
其本機的 branch 要更名是很簡單的,但 remote (遠端) 的部份就棘手許多,而且與 remote branch 名稱重複時是無法 push 上去的,以下為凍仁實作過可行的解法,其原理就是先行將 remote branch 砍掉再上傳新的 branch。
1. 列出所有的 branch (local & remote)。
2. 重新命名本機 branch 前,記得 checkout 離預更名的 branch,此範例裡就是得 checkout 至 master。
3. 刪除遠端的 branch。
4. 上傳本機的 branch 至遠端的 branch。
5. 完成。
[ jonny@precise ~ ]
$ git branch [Enter]
dev
* master
其本機的 branch 要更名是很簡單的,但 remote (遠端) 的部份就棘手許多,而且與 remote branch 名稱重複時是無法 push 上去的,以下為凍仁實作過可行的解法,其原理就是先行將 remote branch 砍掉再上傳新的 branch。
1. 列出所有的 branch (local & remote)。
[ jonny@precise ~ ]
$ git branch -a [Enter]
dev
* master
origin/HEAD -> origin/master
origin/dev
origin/master
2. 重新命名本機 branch 前,記得 checkout 離預更名的 branch,此範例裡就是得 checkout 至 master。
[ jonny@precise ~ ]
$ git branch -m dev dev/hello [Enter]
3. 刪除遠端的 branch。
[ jonny@precise ~ ]
$ git push origin :dev [Enter]
4. 上傳本機的 branch 至遠端的 branch。
[ jonny@precise ~ ]
$ git push origin dev/hello [Enter]
5. 完成。
[ jonny@precise ~ ]
$ git branch -a [Enter]
dev/hello
* master
origin/HEAD -> origin/master
origin/dev/hello
origin/master
延伸閱讀:
★ [1] IBM solidDB 6.3 and IBM solidDB Universal Cache 6.3 Information Center
★ [Book] Unix 與 Linux 自動化管理
資料來源:
★ Renaming your 'master' branch
- Plurk 上的討論
回覆刪除記得 checkout 離預更名的 branch,
記得 checkout 離開預備被更名的 branch,