Git中的Reference及其refspec概述
1)本地分支的Reference格式:refs/heads/<local_branch_name>
如refs/heads/master,在保證唯一的情況下可以簡寫為master
2)遠端追蹤分支的Reference格式:refs/remotes/<remote_repository>/<remote_branch_name>
如refs/remotes/origin/master,在保證唯一的情況下可以簡寫為origin/master
3)tag的Reference格式:refs/tags/<tag_name>
如refs/tags/v1.0.1,在保證唯一的情況下可以簡寫為v1.0.1
補充:一些Git保留使用的特殊refs:
- HEAD,指向當前本地分支的當前commit狀態
- FETCH_HEAD,指向當前本地分支在最近一次fetch操作時得到的commit狀態
- ORIG_HEAD,指向任何merge或rebase之前的剛剛檢出時的commit狀態
在執行push或fetch操作時,refspec用以給出本地Ref和遠端Ref之間的對映關係,通常是本地分支或本地tag與遠端庫中的分支或tag之間的對映關係。
refspec格式:
+<src_ref>:<dst_refs>
其中的+是可選的,表示強制更新
典型的push refspec為HEAD:refs/heads/master
典型的fetch refspec為refs/heads/*:refs/remotes/origin/*