git工作原理:
- 分佈式,每個克隆或更新遠程倉庫的用戶都擁有⼀一份最新的完整的倉庫。
- 分支結構,不要直接操作remote的遠程分支,應該首先checkout⼀一份到本地分支。遠程分 支是指與遠程倉庫上同步的分支。而你所有的操作應該是在你的本地分支上操作。
- 時刻記得你在那個分支下工作,因爲你切換到任何分支都不會改變本地目錄
- “origin”代表遠程倉庫,爲默認的遠程倉庫別名
- git的分支僅僅是⼀一個提交的標記,而不是目錄,與svn的目錄式分支結構不同
- 倉庫的意義是整個代碼倉庫,本地分支/遠程分支,都是你本地倉庫中的分支
git常用操作命令及解釋
注:以下所有以$開頭的,爲命令行操作,$之後的是命令, #號之後是註釋
1.克隆一個倉庫
$ git clone [email protected]:project.git #相當於svn checkout
|
然後進入倉庫目錄,運行如下命令來忽略git對於文件權限的檢查
$ git config core.filemode false
|
然後設置你的帳戶和郵箱
$ git config user.name = "Terry"
|
$ git config user.email = "[email protected]"
|
2.抽取⼀一個分支以及切換到⼀一個分支(切記,要得到⼀一個分支,應該先抽取它,把它抽取到 本地,生成⼀一個本地分支)
命令格式 git checkout 本地分支名 origin/遠程分支名,通常,本地分支名和遠程分支名⼀一 樣,當然,也可以不⼀一樣。
$ git checkout release /0 .2 origin /release/0 .2
|
$ git checkout master origin /master
|
$ git checkout master #切換分支也是使用checkout,只不過不再輸入遠程分支信息
|
3.查看分支,注意,*號在那個分支名前面,就說明你目前處在那個分支下。
查看本地分支:
$ git branch |
查看所有分支,包括你倉庫中的遠程分支:
$ git branch -a |
更新你本地倉庫的所有分支和遠程倉庫的分支保持⼀一致,主要是 刪掉本地倉庫中與遠程倉庫相比較,已經不存在的分支:
$ git remote prune origin |
4.本地倉庫分支的創建和刪除
$ git branch 分支名 #創建⼀一個本地分支
|
$ git branch -d 分支名 #刪除⼀一個本地分支,參數 -D 強制刪除,刪除前要先切換到其它分支
|
5.更新倉庫但不將修改合併分支的修改
$ git fetch |
6.更新倉庫且將修改合併到本地分支,這個最常用,相當於svn up
$ git pull |
7.查看狀態,是否有提交,刪除,更新等信息,如果看到大批文件權限有更新,請使用“git config core.filemode false” 來忽略權限檢查
$ git status |
8.提交,注意:提交僅僅是將你的修改提交到你本地的倉庫,而非遠程
$ git commit -m “提交註釋” |
如果之前未使用 git add 將修改的文件加入暫存區,可再加⼀一個參數 -a 來將所有未暫存的修 改提交
9.推送到遠程倉庫,只有將你的修改或分支推送到遠程倉庫,其它人才能從該遠程倉庫獲取
$ git push origin #推送當前分支到遠程倉庫,前提是遠程倉庫有這個分支
|
命令格式 git push origin 本地分支名:遠程分支名,本地和遠程分支名可以不⼀一樣,遠程分支 名是推送到遠程倉庫的分支名
10.刪除遠程倉庫中的分支
$ git push origin :遠程分支名 |
工作流程
- 生成你的公鑰和私鑰,將公鑰發給git倉庫管理員
- 克隆一個倉庫
- 檢出一個遠程分支到本地分支
- 在本地分支上進行開發工作並提交
- 將你的提交推送到遠程倉庫
- 要經常更新你的本地分支 git pull
- 對於開發人員,不要在develop分支上直接開發,創建feature分支並publish協同開發。
- 對於開發人員,要經常合併常規開發分支develop到你的feature分支上,以降低衝突的積累。
- 第7、8條參照git-flow分支模型來規劃。