對於初學者,從使用上先入手,每每學的最快,並從中汲取教訓,再回頭更深刻的學習,效果尤佳。linux
安裝git自沒必要說,mac已經內置了git,linux下一個命令就能搞定,windows下須要下載一個客戶端安裝,一切盡在官方網站:
http://git-scm.com/git
# 配置用戶名和密碼,標識用戶,且能夠爲後續提交鉤子發送郵件, 必填 git config --global user.name "Jayfeng" git config --global user.email jayfeng@gmail.com
假設服務器IP是192.168.1.18:windows
git clone git@192.168.1.18:~/git-repo/ANDROID_CODE.git
# 提交到暫存區(什麼是暫存區,下篇會細說) git add . # 提交到本地倉庫(有本地倉庫,難道還有遠程倉庫,是的,就是服務器咯) git commit . # 把本地倉庫的提交推送到遠程倉庫 git push origin master
# 拉取代碼 git pull # 更建議使用如下方式更新代碼 # 拉取代碼,但不合並 git fetch origin master # 合併本地代碼和最新拉取的代碼 git rebase origin/master
在上步中,頗有可能會衝突,解決衝突的步驟以下bash
# 假設上步在執行git rebase origin/master的時候發生了衝突 # 查看當前衝突的狀態 git status # ... ... # 打開衝突的文件 # 查找">>>",定位到衝突的地方,而後解決衝突 # ... ... # 把解決衝突以後的文件添加到暫存區 git add . # 繼續上步衝突的合併操做,便可rebase成功 git rebase --continue # 若是想放棄此次合併,--continue換成--abort git rebase --abort # 若是衝突了無論,--continue換成--skip git rebase --skip
標籤,也叫里程碑,顧名思義,就是一個重要的標示,以commit的形式存在。服務器
# 添加tag git tag -a 1.0.3 -m 'publish a version 1.0.3' # 顯示tag git show 1.0.3 # 合併標籤到遠程版本庫 # 推送某個標籤到遠程版本庫 git push origin 1.0.3 # 推送全部標籤到遠程版本庫 git push origin --tags # 檢出標籤 git checkout -b myTagBranch 1.0.3
分支,至關於獨立承載另外需求的代碼副本,經常使用於區分管理不一樣版本的代碼。學習
# 基於當前分支建立dev分支 git checkout -b dev # 推送本地dev分支到遠程分支 git push origin dev:dev # 刪除dev分支 git branch -D dev
git的分支功能是很是強大和靈活的,可以提供多個代碼副本共存的方便,大大節省了維護多版本的人力成本。fetch
回退到某個版本。網站
// 回到到324214130的tree index,默認參數--mixed, 保留源碼,代碼狀態回退到工做區 git reset 3242a4130142478023231225551a9b7dcb4441e3 // 另外兩個參數分別是--soft、--hard, 分別是比--mixed回退的更少一步和更完全一步。 // 放到下篇文章繼續深講。
回退某個版本,注意區分和reset的不一樣。revert是屬於commit級別的操做。code
// 回退324214130的commit,至關於把這個commit的改動再反向操做了一次 git revert 3242a4130142478023231225551a9b7dcb4441e3
revert只針對這個提交,對它的前面和後面的提交沒有直接的影響(相對於reset來講)。同時git會把revert操做當成一個新的commit,能夠在git log中看的到。ip
本篇把基本使用git的一些命令一一講解了一番,以期初學者能上手實用起來。而有些地方則是走馬觀花,未做深刻,由於咱們還有最後一章深刻篇,敬請期待!
同步發佈:http://www.jayfeng.com/2015/07/25/記一次小團隊Git實踐(中)/