git筆記
前言
Git 確實是很好的版本管理系統。有關其優點這里暫時不說了,網上也有很多相關資料介紹。
把這些記錄下來方便以后查閱理解。
- 一些好的Git學習資源
以下記錄一些簡單筆記,以便日后查閱,當然要想系統的學習下Git原理可以參考上面列出的學習資源
關于安裝
請移步Git安裝
當然最好能在Linux下。
創建版本庫
- 通過git init命令將你要所在的當前目錄變成Git可以管理的倉庫;在當前目錄下你能看到 .git目錄
- 一般你要將新寫好的文件要加入該倉庫管理時,用命令git add youfile
- 將上面加入倉庫的文件提交到倉庫,用命令git commit -m "your annotation information";注意:-m 參數后面記得填寫你修改的注釋說明,方便別的開發者能閱讀。
- git status命令可以隨時查看倉庫當前的狀態,如有哪些文件更改了,哪些已經提交,哪些文件沒有跟蹤.
操作遠程倉庫
一般可以自己搭建一個自己運行的Git服務器。如果沒條件,就用Github網站吧,一個提供倉庫托管服務的網站,這里你可以將Github理解為Git服務器,但是它不免費提供私有的倉庫。
所以,要是你的項目不公開的話,要么交點費用,要么自己搭建個Git服務器。
不多說
- 首先在上面注冊個賬號,我的賬號
- 然后你“Create a new repo”創建一個新的倉庫(我的新倉庫 COS-IIAPP ),按照默認情況設置就可以了。
-
關聯你的本地倉庫。注意:最好本地倉庫名字與你在Github上面新建立的倉庫名字一樣。在本地倉庫所在目錄下運行命令:
- $ git remote add origin git@github.com:yourcount/hello-world.git
其中origin即為遠程庫
-
將本地庫的所有內容 推送遠程庫
- $ git push -u origin master
當然,如果你在本地創建了其他分支(不知道什么是分支?別急,要不你先看我后面介紹的分支吧),也可以推送,將master改為你要推送的分支名稱即可。
你也可以從遠程庫clone到本地庫,效果一樣。
好了,到這步恭喜你,你現在可以看看你的github上面的是不是和你本地的項目一樣呢!媽蛋!沒有??,好了忘記下面這一步了。創建SSH Key
對了,在這之前需要創建SSH Key,因為你的本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密。
- $ ssh-keygen -t rsa -C “youremali.com”
并行開發
Git強大地方就在于它的多人共同開發了。
現在假設你的另外成員一起在分支dev開發一個項目.
- 他使用git clone git@github.com:guxiaole/COS-IIAPP.git 命令克隆到他本地倉庫
- 他要創建遠程origin的dev分支到本地,用這個命令git checkout -b dev origin/dev;
- 他很厲害,很快就在dev分支上開發了一個偉大的Idea, 推送到遠程庫 git push origin dev后他很幸福的去看蒼老師的電影了;
這個時候,你很痛苦的加班加點在dev上修改,終于搞定時候,試圖也推送到遠程庫,這個時候就會提示報錯。。次奧,那小子比我快!
原因:推送失敗,因為遠程分支比你的本地更新。
解決辦法:
- 先用git pull試圖合并; 注意:要是git pull提示“no tracking information”,則說明本地分支和遠程分支的鏈接關系沒有創建,用命令git branch --set-upstream dev origin/dev
- 如果合并有沖突,則解決沖突,并在本地提交;
- 沒有沖突或者解決掉沖突后,再用git push origin dev推送
分支的操作
-
默認master初始分支,一般比較穩定的項目版本在這個分支上,一旦開發出成熟的其他功能分支,測試穩定后再和此分支合并
-
現在你需要和其他成員開發一個新的功能,一般新建一個分支,并很愉快的在上面進行修改提交。當然,這個時候還沒有和主分支進行合并
-
這個時候,突然有人報告你發布的穩定版本master的一個bug需要修復,這個時候停下手頭上進行的dev分支;轉到master分支。
-
新建一個bugfix分支,修改提交
-
bug搞定,合并到主分支
-
回到dev 分支,繼續工作,發現dev 新功能完成,合并master分支
-
對了,忘記bugfix分支此時可以刪掉了。
-
另外
當手頭工作沒有完成時,先把工作現場git stash一下,然后去修復bug,修復后,再git stash pop,回到工作現場
小結
最常用的Git命令差不多就這么多了,隨著后面學習繼續更新吧。。當然,要想要徹底 搞清楚git原理,還是系統看看相關書籍吧。