以 下面的兩個前提爲例:
- 用戶名:[email protected]
- 對應用戶名:xiaowang
- 服務器爲:192.168.2.06
- 倉庫名:teststo
- 倉庫teststo已包含分支:master 、test_t1、test_t2
0. 安裝git工具
- windows上可安裝git bash客戶端
- ubuntu上使用apt-get安裝git
- 可視化輔助工具(可選):
- gitk,如果不支持則安裝該工具(linux/windows均可使用)
- TortoiseGit,和svn的Tortoisesvn幾面類似(windows上可用)
1. 從服務器clone代碼
git clone [email protected]:/proj/teststo
2. 檢出開發要基於的遠端分支到本地
2.1 查看所有分支(含local端、remote端):
git branch -a
2.2 創建並檢出同名本地分支:
** eg. 檢出遠端的test_t1到本地,並命名爲同名本地分支test_t1 **
git checkout -t origin/test_t1
*** 或者:eg. 檢出遠端的test_t1到本地名爲xx_tt1本地分支 ***
git checkout -b xx_tt1 origin/test_t1
3. 修改代碼
4. 添加提交內容,並填寫提交說明
4.1 查看該路徑下的所有修改:
git status .
4.2 添加修改的指定文件file1和file_n
git add file1 file_n
或者將當前路徑下的所有修改都add上
git add .
4.3 添加提交說明(建議最佳方式)
git commit -s
建議commit的格式(三部分)
如:
【FD協議】: 修改xx
(空行)
修改了什麼;爲什麼修改;如何驗證;說清楚一些東西,以便後續查看;
(空行)
signed by:“[email protected]” (本行是commit 跟了-s參數自動生成的)
重要提示
追加提交: git commit --amend要常用
每次修改一個功能,不是一蹴而就的,只要沒有git push,這個提交就是可以再次進行修改的, 如下示意amend何時使用:
5. 推送到服務器
若本地分支名和想提交到的分支是名字相同的,直接push即可:
git push
或者:git push origin HEAD
若名字不同(以想推送到遠端分支test_t1爲例):
git push origin HEAD:test_t1
6. 附:其他常用指令
6.1 配置用戶名、郵箱(commit -s要使用的提交簽名):
git --config–global user.email “[email protected]”
git --config–global user.name “xiaowang”
6.2 免密碼輸入:
ssh-keygen
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
ssh 192.168.2.06
6.3 統計總的歷史提交的commit總數:
git rev-list --all --count
6.4 刪除分支:
eg. 刪除xxx分支: git branch -D xxx
6.5 查看提交記錄
可以帶各種參數
git log
git log --online
git show xxx_hash_id
6.6 查看差異
git diff filename_xx
git diff filename_xx hash_id1 hash_idx
6.7 製作補丁、打補丁
git format-patch -nx (x表示製作git log能看到的近來n各提交, 針對的是當前local分支的最後一個commit,補丁名字分別以0001~ x開頭)
git format-patch xxhash_id -nx (x表示製作git log能看到的從xxhash_id往前的n個提交, 針對的是當前local分支的最後一個commit,補丁名字分別以0001~ x開頭)
git am xxx.patch
6.8 創建遠端分支
6.8.1 先創建一個本地分支
(本地分支和遠端分支同名爲例,當然可以不同)
git checkout -b test_t3
(僅跟本地分支名,則新的分支,是基於checkout前使用的本地分支所指向的遠端分支,來創建的本地分支的)
6.8.2 將這個本地分支推送到遠端(創建新分支,同名的新的遠端分支)
git push origin test_t3:test_t3
使用git branch -a即可看到遠端已包含該新分支
6.9 忽略不在版本控制中的文件
使用.gitignore
注意只能忽略沒有被track的文件,如果某個文件已經是被納入版本管理的,修改.gitignore是忽略不掉該文件的。
自己創建要給.gitignore文件:按簡單的規則填寫過濾哪些,,然後通過下面的指令生效:
git config --global core.excludesFile .gitignore
其他還有很多
如標準的提交,一般都使用git merge相關的流程。只是我感覺比較麻煩。
不定時根據使用情況,更新本文!