Git入門——遠程倉庫及分支管理

關於本地版本庫的操做,請見: Git入門——本地版本庫操做
本篇提到的全部命令:  小結

前面提到,Git相對於傳統的SVN有着很大的優點,其中之一就在於集中式系統中,版本庫只能存在於中央服務器上;而在Git中,版本庫能夠克隆多個,甚至在同一臺主機中也能夠克隆多個版本庫。固然,平常開發過程當中,仍是會有一臺主機充當中央服務器的角色,做爲整個項目的總體基準。咱們能夠本身搭建一個git服務器,也能夠直接使用github所提供的免費倉庫託管服務。 在本文中咱們使用GitHub。在使用以前,須要註冊GitHub帳號,而且在本地與GitHub上設置SSH,具體操做請參照: SSH設置

1、遠程倉庫的添加與克隆
         一、關聯本地倉庫
                 首先在GitHub網站上建立倉庫


              建立完成後,咱們能夠選擇將這個庫克隆至本地,也能夠將本地已經建立好的庫關聯至遠程庫,這裏咱們關聯。

                        a、使用git remote add origin 倉庫地址命令將遠程庫與本地庫關聯
                                            倉庫地址有兩種形式,https形式: https://github.com/zhuwq585/ DataStructure-JavaScript.git
                                                                                            ssr形式: git@github.com:zhuwq585/ DataStructure-JavaScript.git
                                            使用https形式則每次須要輸入用戶名密碼且速度慢,使用ssr形式就直接調用先前配置的ssr密鑰進行認證,無需輸入用戶名密碼。
                        b、使用git push -u origin master命令將本地倉庫推送至遠程庫
           
              這時就能夠在github上看到推送的文件了

         二、從遠程倉庫克隆
              仍是老辦法,先在GitHub上創建倉庫。使用git clone 遠程庫地址命令克隆倉庫。
              
              以後添加文件,提交併使用git push命令推送至遠程倉庫便可。
            

2、分支管理
         分支是一個在多人協做開發中很是有用的功能,開發不一樣部分的人能夠建立各自的分支,在不影響別人的狀況下工做,待開發完成後再合併至主分支。Git的分支功能很是高效。每次commit操做都會生成一個新的版本,各個版本按照時間的順序串接起來就是一條版本時間線。當建立了分支以後,咱們能夠擁有並行的多條時間線,並在合適的時候把其它的分支合併到總分支(master)上,這就是分支的功能。  關於分支的概念, http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001375840038939c291467cc7c747b1810aab2fb8863508000 中的圖畫的很是形象
         一、 建立分支
                  使用 git branch 分支名 建立分支
                   使用 git branch 查看分支 標註*的是當前分支
                  使用 git checkout 分支名 切換分支
               使用 git branch -d 分支名 刪除分支
     
             ·可使用git checkout -b 分支名 建立分支並直接切換至該分支
             ·當前分支沒法被刪除
         二、合併分支
                   使用git merge 分支名 命令將所選分支合併到當前分支上
              
              這裏建立了test1分支,並在此分支上添加並提交了test.txt文件。此時切換至master分支,咱們會發現剛纔添加的test.txt文件不見了。使用merge命令合併分支以後,剛纔添加的文件又回來了。

              直接使用merge命令會默認用Fast forward模式進行合併,等因而將另外一分支的下一個版本直接指向當前的提交。這樣的話,一旦刪除分支以後,該分支信息便會丟失。  如果在合併分支的時候加上--no-ff參數,則會強制禁用Fast forward模式,合併時會生成一個新的提交,將兩個分支的下一版本指向該提交。這樣便不會丟失分支信息。

         三、解決衝突
              在合併分支的時候,若兩個分支都對同一個文件的同一部分進行了修改提交,則會發生衝突。這個時候就須要用戶手動解決衝突,再行合併。這裏咱們添加一個test.txt文件,創建兩個分支,在這兩個分支上同時修改該文件並嘗試提交合並:
   
              這個時候git會提示咱們發生了衝突,沒法合併分支,衝突發生在test.txt中。status命令能夠看到更多詳情。這個時候,文件系統中的test.txt文件也已經標出了衝突位置。以下圖:  git使用<<<<<<< ======= >>>>>>>進行衝突位置提示
            其中<<<<<<<與=======之間的部分是當前分支的修改,=======與>>>>>>>之間是其它分支的提交。
   
這個時候,咱們把衝突位置修改成正確的文本,再進行合併:
  
使用log命令能夠看到分支合併的狀況。使用 git log --graph命令能夠看到分支合併圖:
  
         四、工做區暫存
              有時候,咱們在進行手頭工做的時候,會忽然轉向其它緊急工做,好比Bug修復等等,這個時候由於手頭工做還沒有完成,不能進行提交。而Git中是必須提交後才能切換分支進行工做的。這個時候工做區暫存功能就很是有用。咱們可使用git stash命令儲存工做區狀態。 待其它工做完成後,再使用git stash apply恢復工做區,使用git stach drop刪除工做區暫存文件。使用git stach list能夠查看儲存的工做現場。能夠暫存多個工做區狀態,這個時候就須要在apply等命令後加上list命令中查詢到的暫存文件名。
  
              恢復工做區與刪除暫存文件能夠用一條命令git stach pop直接完成。

3、分支與遠程庫
         可使用git remote命令查看遠程庫信息     
  
         一、將分支推送至遠程庫
              使用git push origin 分支名將本地分支上的全部提交推送到遠程庫。
  
         二、從遠程庫抓取分支
              建立遠程分支的本地分支,使用git checkout -b 分支名 origin/分支名命令,一樣的,這條命名能夠分紅branch和checkout兩步命令。有時須要將本地分支與遠程分支創建連接,這時使用git branch --set-upstream 分支名 origin/分支名命令。
              當連接創建完畢後,有時須要將遠程分支的最新提交抓取到本地,這時使用git pull命令,將遠程分支提交抓取至本地並嘗試合併。

本篇提到的命令:
命令 說明
git remote add origin 倉庫地址 將遠程庫與本地當前庫關聯
git push -u origin master 將本地倉庫推送至遠程倉庫
git clone 遠程庫地址 將遠程倉庫克隆至本地
git branch 分支名 建立分支
git branch 查看分支列表
git checkout 分支名 切換分支
git checkout -d 分支名 刪除分支
git checkout -b 分支名 建立並切換至分支
git merge 分支名 將分支合併至當前分支
git log --graph 查看分支合併圖
git stash 暫存工做區
git stash apply 恢復工做區
git stach drop 刪除工做區狀態暫存文件
git stach list 查看工做區狀態暫存文件列表
git stach pop 恢復工做區狀態並刪除暫存文件
git remote 查看遠程庫信息 (-v 查看詳細信息)
git push origin 分支名 將本地分支提交至遠程庫
git checkout -b 分支名 origin/分支名 建立遠程庫分支的本地分支
git branch --set-upstream 分支名 origin/分支名 將本地分支與遠程庫分支創建連接
git pull 將遠程分支抓至本地並試圖合併
相關文章
相關標籤/搜索