一、建立遠端倉庫(github)
2.由於本地git倉庫和github倉庫之間的傳輸是通過ssh加密的,所以,需要如下設定:
第1步:建立ssh key。在使用者主目錄下(例如:c:\users\administrator\),看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個檔案,如果已經有了,可直接跳到下一步。如果沒有,開啟shell(windows下開啟git bash),建立ssh key:
$ ssh-keygen -t rsa -c "[email protected]"
你需要把郵件位址換成你自己的郵件位址,然後一路回車,全部使用預設值即可;
如果一切順利的話,可以在使用者主目錄裡找到.ssh目錄,裡面有id_rsa和id_rsa.pub兩個檔案,這兩個就是ssh key的秘鑰對,id_rsa是私鑰,不能洩露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
第2步:登陸github,開啟「account settings」,「ssh keys」頁面,然後,點「add ssh key」,填上任意title,在key文字框裡貼上id_rsa.pub檔案的內容,最後點選「add key」按鈕完成。
說明:為什麼github需要ssh key呢?因為github需要識別出你推送的提交確實是你推送的,而不是別人冒充的,而git支援ssh協議,所以,github只要知道了你的公鑰,就可以確認只有你自己才能推送。當然,github允許你新增多個key。假定你有若干電腦,你一會兒在公司提交,一會兒在家裡提交,只要把每台電腦的key都新增到github,就可以在每台電腦上往github推送了。
二、新增遠端庫
1.登入github**,並按**要求建立乙個新的倉庫;
2.根據github**提示,可以從這個倉庫轉殖出新的倉庫,也可以把乙個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到github倉庫。
3.本地倉庫與github上相應的倉庫建立關聯,**如下:([email protected]:wheeky/zcontrols.git為我新建的倉庫路徑)
$ git remote add origin [email protected]:wheeky/zcontrols.git
新增後,遠端庫的名字就是origin,這是git預設的叫法,也可以改成別的,但是origin這個名字一看就知道是遠端庫。
4.把本地庫的內容推送到遠端庫上,用git push
命令,實際是把當前分支master
推送到遠端。
$ git push -u origin master
由於遠端庫是空的,我們第一次推送master
分支時,加上了-u
引數,git不但會把本地的master
分支內容推送的遠端新的master
分支,還會把本地的master
分支和遠端的master
分支關聯起來,在以後的推送或者拉取時就可以簡化命令(不用帶-u引數)。
當你第一次使用git的clone或者push命令連線github時,會得到乙個警告,這是因為git使用ssh連線,而ssh連線在第一次驗證github伺服器的key時,需要你確認github的key的指紋資訊是否真的來自github的伺服器,輸入yes
回車即可。
5.通過github上的倉庫來轉殖出新的本地倉庫,**如下:(轉殖出新的本地倉庫資料夾為:zcontrols)
$ git clone [email protected]:wheeky/zcontrols.git
git支援多種協議,預設的git://
使用ssh,但也可以使用https
等其他協議,使用https
除了速度慢以外,還有個最大的麻煩是每次推送都必須輸入口令,但是在某些只開放http埠的公司內部就無法使用ssh
協議而只能用https
。
三、分支管理
1.分支的作用:建立乙個屬於你自己的分支,別人看不到,還繼續在原來的分支上正常工作,而你在自己的分支上幹活,想提交就提交,直到開發完畢後,再一次性合併到原來的分支上,這樣,既安全,又不影響別人工作。
2.建立分支(dev):
$ git checkout -b dev //git checkout命令加上-b引數表示建立並切換,相當於以下兩條命令:$ git branch dev
$ git checkout dev
用git branch
命令檢視當前分支,git branch命令會列出所有分支,當前分支前面會標乙個*號。
用git checkout命令切換分支,如下**,切換到master分支:
$ git checkout master
3.合併分支:(用git merge命令合併指定分支到當前分支)
$ git merge dev //預設啟用fast forward模式,若合併後再刪除分支,則刪除分支後,會丟掉分支資訊$ git merge --no-ff -m "merge with no-ff" dev //使用--no-ff引數,表示禁用fast forward模式,git就會在合併時生成乙個新的commit,這樣,從分支歷史上就可以看出分支資訊。
4.刪除分支:
$ git branch -d dev //若需要強制刪除,則-d引數應改變為大寫,如:git branch -d dev
5.檢視分支合併情況:
git log --graph
6.臨時隱藏工作區:(常見的場景是,當我們需要臨時處理其它事情【如:解決bug】時而不得不暫時中斷目前的主要開發任務)
$ git stash //隱藏目前工作區$ git checkout master //切換到需要建立臨時分支的分支,比如:master
$ git checkout -b issue-101 //建立並切換到臨時分支,issue-101
$ git add file //新增到暫存區
$ git commit -m "fix bug 101" //提交到臨時分支倉庫
$ git checkout master //回到master分支
$ git merge --no-ff -m "merged bug fix 101" issue-101 //合併臨時分支,這裡禁用fast foward模式,保留提交記錄以便日後可查或恢復
$ git branch -d issue-101 //刪除臨時分支
檢視被隱藏的工作區資訊:
$ git stash list
恢復工作區:
$ git stash pop //相當於以下兩條命令$ git stash drop //清除隱藏區
7.檢視遠端庫:
$ git remote$ git remote -v //加上-v引數可以檢視詳細資訊
8.推送分支到遠端庫分支:
$ git push origin 分支名
9.建立本地分支並關聯遠端分支:
$ git checkout -b 分支名 origin/分支名 //origin/dev為遠端分支路徑
$ git branch --set-upstream 分支名 origin/分支名 //若本地已有分支,可通過該命令來關聯遠端分支
10.解決衝突:
10.1若是本地多分支之前合併產生衝突,可以先用git status命令檢視原因,並依據提示修改相應的檔案後,再重試即可;
10.2若是多人協作,向遠端推送提交時產生衝突,則需先用git pull把最新的提交從origin/dev抓下來,然後,在本地合併,解決衝突,再推送,如下:
$ git pull //從遠端獲取分支$ git commit -m "marge files" //本地更新合併
$ git push origin dev //推送提交到遠端分支
Git學習筆記(二)
1.忽略檔案 git提供了一種可配性很強的機制來允許使用者將制定的檔案或目錄排除在版本控制之外,它會檢查 倉庫的根目錄下是否存在乙個名為.gitignore的檔案,如果存在的話就去一行一行的讀取這個檔案裡邊的內容並把每一行指定的檔案或目錄排除在版本控制之外。注意.gitignore中指定的檔案或目錄...
Git學習筆記(二)
1 分支 git branch m master mymaster m引數告訴git要執行分支移動 重新命名 操作。另外兩個引數分別是分支原名稱和新名稱。git branch 檢視分支。該命令沒有引數,git顯示本地版本庫中所有的本地分支名稱。結果中,前面帶星號的分支是當前檢出的分支,即當前工作目錄...
Git學習筆記 二
小白一枚。學習筆記。僅供參考。歡迎指錯。二 基本的git概念 git版本庫不僅儲存庫中所有檔案的完整副本,而且儲存版本庫本身的副本。git維護的兩個主要的資料結構 物件庫 object store 索引 index 索引 臨時的 動態的二進位制檔案,它描述的是版本庫的目錄結構。更準確地說,索引捕獲專...