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

謙虛的天下發表於2015-09-21

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

安裝git

安裝git自不必說,mac已經內建了git,linux下一個命令就能搞定,windows下需要下載一個客戶端安裝,一切盡在官方網站:
http://git-scm.com/

配置自定義資訊

# 配置使用者名稱和密碼,標識使用者,且可以為後續提交鉤子傳送郵件, 必填
git config --global user.name "Jayfeng"
git config --global user.email jayfeng@gmail.com

同步倉庫程式碼

假設伺服器IP是192.168.1.18:

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

衝突

在上步中,很有可能會衝突,解決衝突的步驟如下

# 假設上步在執行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的分支功能是非常強大和靈活的,能夠提供多個程式碼副本共存的方便,大大節省了維護多版本的人力成本。

重置(reset)

回退到某個版本。

// 回到到324214130的tree index,預設引數--mixed, 保留原始碼,程式碼狀態回退到工作區
git reset 3242a4130142478023231225551a9b7dcb4441e3
// 另外兩個引數分別是--soft、--hard, 分別是比--mixed回退的更少一步和更徹底一步。
// 放到下篇文章繼續深講。

反悔/撤銷(revert)

回退某個版本,注意區分和reset的不同。revert是屬於commit級別的操作。

// 回退324214130的commit,相當於把這個commit的改動再反向操作了一次
git revert 3242a4130142478023231225551a9b7dcb4441e3

revert只針對這個提交,對它的前面和後面的提交沒有直接的影響(相對於reset來說)。同時git會把revert操作當成一個新的commit,可以在git log中看的到。

小結

本篇把基本使用git的一些命令一一講解了一番,以期初學者能上手實用起來。而有些地方則是蜻蜓點水,未作深入,因為我們還有最後一章深入篇,敬請期待!

同步釋出:http://www.jayfeng.com/2015/07/25/記一次小團隊Git實踐(中)/

相關文章