關於本地版本庫的操做,請見:
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 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 |
將遠程分支抓至本地並試圖合併 |