1. 程式人生 > >git的基本使用(2)

git的基本使用(2)

從遠端倉庫抓取資料使用命令: $ git fetch [remote-name]
此命令會到遠端倉庫中拉取所有你本地倉庫中還沒有的資料。執行完成後,你就可以在本地訪問該遠端倉庫中的所有分支,將其中某個分支合併到本地,或者只是取出某個分支,一探究竟。如果是克隆了一個倉庫,此命令會自動將遠端倉庫歸於 origin 名下。所以,`git fetch origin` 會抓取從你上次克隆以來別人上傳到此遠端倉庫中的所有更新(或是上次 fetch 以來別人提交的更新)。有一點很重要,需要記住,fetch 命令只是將遠端的資料拉到本地倉庫,並不自動合併到當前工作分支,只有當你確實準備好了,才能手工合併。
如果設定了某個分支用於跟蹤某個遠端倉庫的分支,可以使用 'git pull` 命令自動抓取資料下來,然後將遠端分支自動合併到本地倉庫中當前分支。在日常工作中我們經常這麼用,既快且好。實際上,預設情況下 'git clone` 命令本質上就是自動建立了本地的 master 分支用於跟蹤遠端倉庫中的 master 分支(假設遠端倉庫確
實有 master 分支)。所以一般我們執行 'git pull`,目的都是要從原始克隆的遠端倉庫中抓取資料後,合併到工作目錄中的當前分支。
十七,推送資料到遠端倉庫
將本地倉庫中的資料推送到遠端倉庫。實現這個任務的命令很簡單: 'git push [remote-name] [branch-name]'。如果要把本地的 master 分支推送到'origin'伺服器上(再次說明下,克隆操作會自動使用預設的 master 和 origin 名字),可以執行下面的命令:
$ git push origin master
只有在所克隆的伺服器上有寫許可權,或者同一時刻沒有其他人在推資料,這條命令才會如期完成任務。如果在你推資料前,已經有其他人推送了若干更新,那你的推送操作就會被駁>回。你必須先把他們的更新抓取到本地,合併到自己的專案中,然後才可以再次推送。
十八,檢視遠端倉庫資訊
我們可以通過命令 'git remote show [remote-name]' 檢視某個遠端倉庫的詳細資訊。比如要看所克隆的 'origin'倉庫,可以執行:
$ git remote show origin
十九,遠端倉庫的刪除和重新命名
在新版 Git 中可以用 'git remote rename'命令修改某個遠端倉庫在本地的簡稱,比如想把 'pb'改成'paul',可以這麼執行:
$ git remote rename pb paul
注意,對遠端倉庫的重新命名,也會使對應的分支名稱發生變化,原來的 'pb/master' 分支現在成了 'paul/master
如果要刪除遠端倉庫,可以執行 'git remote rm'命令,例如:"$ git remote rm paul"
二十,列顯已有的標籤
列出現有標籤的命令非常簡單,直接執行'git tag'。顯示的標籤按字母順序排列,所以標籤的先後並不表示重要程度的輕重。我們可以用特定的搜尋模式列出符合條件的標籤。在 Git 自身專案倉庫中,有著非常多標籤,如果你只對 1.4.2 系列的版本感興趣,可以執行下面的命令:
$ git tag -l 'v1.4.2.*'
二十一,新建標籤
Git 使用的標籤有兩種型別:輕量級的(lightweight)和含附註的(annotated)。輕量級標籤就像是個不會變化的分支,實際上它就是個指向特定提交物件的引用。而含附註標籤,實際上是儲存在倉庫中的一個獨立物件,它有自身的校驗和資訊,包含著標籤的名字,電子郵件地址和日期,以及標籤說明,標籤本身也允許使用 GNU Privacy Guard (GPG) 來籤
署或驗證。一般我們都建議使用含附註型的標籤,以便保留相關資訊;當然,如果只是臨時性加註標籤,或者不需要旁註額外資訊,用輕量級標籤也沒問題。
二十二,含附註的標籤
建立一個含附註型別的標籤非常簡單,用'-a'(譯註:取'annotated'的首字母)指定標籤名字即可:
$ git tag -a v1.4 -m 'my version 1.4'
而 '-m'選項則指定了對應的標籤說明,Git 會將此說明一同儲存在標籤物件中。如果沒有給出該選項,Git 會啟動文字編輯軟體供你輸入標籤說明。
可以使用 'git show'命令檢視相應標籤的版本資訊,並連同顯示打標籤時的提交物件。例如: $ git show v1.4
二十三,簽署標籤
如果你有自己的私鑰,還可以用 GPG 來簽署標籤,只需要把之前的'-a'改為'-s'(譯註: 取 'signed'的首字母)即可
$ git tag -s v1.5 -m 'my signed 1.5 tag'
二十四,輕量級標籤
輕量級標籤實際上就是一個儲存著對應提交物件的校驗和資訊的檔案。要建立這樣的標籤,直接給出標籤名稱即可,不用任何選項。例如:
$ git tag v1.4-lw
二十五,驗證標籤
可以使用 'git tag -v [tag-name]' (譯註:取'verify'的首字母)的方式驗證已經簽署的標籤。此命令會呼叫 GPG 來驗證簽名,所以你需要有簽署者的公鑰,存放在 keyring 中,才能驗證。如果沒有公鑰,會提出錯誤。
二十六,後期加註標籤
你可以在後期對前期的某次提交加註標籤,比如下面的提交歷史:
$ git log --pretty=oneline
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support
        9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile
        964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo
我們忘了在提交 “updated rakefile” 後為此專案打上版本號 v1.2,沒關係,現在也能做。只要在打標籤的時候跟上對應提交物件的校驗和(或前幾位字元)即可:
        $ git tag -a v1.2 9fceb02
二十七,分享標籤
預設情況下,'git push'並不會把標籤傳送到遠端伺服器上,只有通過顯式命令才能分享標籤到遠端倉庫。其命令格式如同推送分支,執行 'git push origin [tagname]' 即可:
$ git push origin v1.5
如果要一次推送所有本地新增的標籤上去,可以使用'--tags'選項:
$ git push origin --tags