記一次小團隊Git實踐(中)

對於初學者,從使用上先入手,每每學的最快,並從中汲取教訓,再回頭更深刻的學習,效果尤佳。linux

安裝git

安裝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

分支(branch)和標籤(tag)

標籤,也叫里程碑,顧名思義,就是一個重要的標示,以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

重置(reset)

回退到某個版本。網站

// 回到到324214130的tree index,默認參數--mixed, 保留源碼,代碼狀態回退到工做區
git reset 3242a4130142478023231225551a9b7dcb4441e3
// 另外兩個參數分別是--soft、--hard, 分別是比--mixed回退的更少一步和更完全一步。
// 放到下篇文章繼續深講。

反悔/撤銷(revert)

回退某個版本,注意區分和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實踐(中)/

相關文章
相關標籤/搜索