應用場景
對於我們開發人員來說,熟練使用Git是最基本的技能之一。SourceTree又是一款比較好的Git UI工具,是 Windows 和Mac OS X 下免費的 Git 和 Hg 客戶端,主要依賴可視化界面操作,省去繁瑣復雜不容易理解的終端命令。
使用工具
Git工具 / SourceTree客戶端
安裝Git工具(如果電腦有Git可跳過此步驟)
git官網下載地址:https://git-scm.com/download
一·

二·

三·
雙擊安裝包安裝

如果出現打開(可能是因為沒有權限)

按住control並雙擊解決,點擊打開按鈕

四·
打開之后直接點擊繼續下一步就OK,如果需要更改Git存放地址直接更換即可。

五·

六·
測試是否安裝成功,打開Mac終端輸入git命令,出現下圖即代表安裝成功。

> 安裝SourceTree客戶端
- 下載
- 登錄SourceTree官網 : https://www.sourcetreeapp.com/ (因為是國外網站,下載時間可能比較長,可使用VPN翻牆下載)
- 附百度雲網盤SourceTree 3.0下載地址: 鏈接:https://pan.baidu.com/s/1aM-VS1FtbXAoya6WlK-39A 密碼:p3ok
- 解壓后安裝


- 安裝
一·

點擊安裝時點擊"轉到我的Atlassian",3.0版本sourceTree直接點擊左邊按鈕,直接跳轉注冊按鈕。
二· 有賬號的可以登錄,沒有可以直接注冊:

注意:注冊需要翻牆進行人機驗證。翻牆之后呈現效果:

三· 注冊完成之后登錄會自動跳轉到SourceTree客戶端,此時可以點擊繼續下一步(不注冊或者登錄,繼續按鈕為灰質無法繼續)。
四· 登錄成功之后,需要進行一些基礎配置,在這里配置之后后面使用會比較方便。

五· 創建完成之后就差不多安裝完成了。
六· 然后使用Git創建公鑰/密鑰,使用SSH進行代碼管理管理時需要。
a) 檢查SSH key --- 打開Mac終端,運行cd ~/.ssh 如果顯示路徑下無文件,則執行b步驟
b) 生成SSH key --- 打開Mac終端執行:ssh-keygen -t rsa -C xxxxx@xxx.com (這個是你的郵箱)
c) 打開Mac終端,輸入open ~/.ssh,查看id_rsa.pub這個文件並打開拷貝key值
d) 打開coding官網,登錄成功后,點擊賬戶-SSH公鑰,輸入c步拷貝的值,標題最好設置一個容易區分的,避免混淆(最好別用中文),點擊保存
e) 執行完之前步驟,后面就可以使用公鑰/密鑰進行代碼托管
f) 使用HTTPS地址操作,進行代碼管理時會填寫好多賬號密碼, 個人感覺使用SSH地址來對代碼進行管理還是比較方便的
g) 設置Git全局用戶名/郵箱,可以省去每次配置郵箱密碼:
git config --global user.name ""
git config --global user.email "@qq.com"
- SourceTree使用
一· 安裝完成之后的主頁面是這樣的,其中你的的遠端倉庫所顯示的就是 安裝->第四步 配置的code平台

二· 新建按鈕解釋


三· 使用客戶端管理自己的代碼

1.提交:Commit 指本地倉庫的文件提交到本地倉庫保存
2.拉取:Pull 從關聯賬號的托管平台(比如github)的眾多遠程倉庫中下載一個倉庫到本地,前提是你得賬號里創建的有倉庫
3.推送:Push 將本地倉庫源文件提交到本地並更新到托管平台的遠程倉庫中,即本地和原唱倉庫都保存此時倉庫中的所有內容(如果不配置ignore忽略文件的話)
4.抓取:Fetch 從遠程倉庫抓取本倉庫的更新內容(比如這個項目是團隊開發,別人也可能Push代碼到這個倉庫,這時候你可能就需要更新一下)並更新到本地倉庫
5.分支: branch 分支本質上其實就是一個指向某次提交的可變指針HEAD,指向當前默認分支master或者上一分支.我們之所以需要創建分支分兩種情況:
一種是當團隊開發時,為了各自干自己的活不相互影響,這時候每個哥們兒都可以從主分支上建立一個屬於自己的分支出來,並在自己的分支開發,當開發完畢時,再合並到主分支即可
另一種情況是個人開發,你需要集成某個功能但你又不確定自己是否可以集成成功且不影響源碼,這時可以建立新分支,然后再開發,如果集成失敗了,又把分支源碼搞的亂七八糟,你還可以直接回滾到主分支,重新再來
6.合並:merge 這個當然是在有分支的前提下進行了,只有創建了分支,在分支上開發完畢后,就可以把當前分支合並到主分支或上一分支了
7.暫存:git stash 好像是吧,這個英語怎么寫我JB也不會.你可以理解為暫時保存,即當你修改項目時,SourceTree會檢測出你哪些文件更改了,並顯示到未暫存文件列表中,為什么不直接顯示在已暫存文件中呢?這就好比你編輯一個word文檔,在你寫的時候是屬於未暫存的word文件,當你不點保存就關閉word時,它會提醒你要不要保存,你點保存才會成為已暫存文件
四· 忽略某些不必要文件的提交
- 按步驟打開並編輯.gitignore文件


- 按照忽略規則編寫文件保存即可(以下列出部分說明)
# 表示此為注釋,將被Git忽略
*.a 表示忽略所有 .a 結尾的文件
!lib.a 表示但lib.a除外
/TODO 表示僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
build/ 表示忽略 build/目錄下的所有文件,過濾整個build文件夾;
doc/*.txt 表示會忽略doc/notes.txt但不包括 doc/server/arch.txt
bin/: 表示忽略當前路徑下的bin文件夾,該文件夾下的所有內容都會被忽略,不忽略 bin 文件
/bin: 表示忽略根目錄下的bin文件
/*.c: 表示忽略cat.c,不忽略 build/cat.c
debug/*.obj: 表示忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: 表示忽略/foo,a/foo,a/b/foo等
a/**/b: 表示忽略a/b, a/x/b,a/x/y/b等
!/bin/run.sh 表示不忽略bin目錄下的run.sh文件
*.log: 表示忽略所有 .log 文件
config.php: 表示忽略當前路徑的 config.php 文件
/mtk/ 表示過濾整個文件夾
*.zip 表示過濾所有.zip文件
/mtk/do.c 表示過濾某個具體文件
被過濾掉的文件就不會出現在git倉庫中(gitlab或github)了,當然本地庫中還有,只是push的時候不會上傳。
需要注意的是,gitignore還可以指定要將哪些文件添加到版本管理中,如下:
!*.zip
!/mtk/one.txt
唯一的區別就是規則開頭多了一個感嘆號,Git會將滿足這類規則的文件添加到版本管理中。為什么要有兩種規則呢?
想象一個場景:假如我們只需要管理/mtk/目錄中的one.txt文件,這個目錄中的其他文件都不需要管理,那么.gitignore規則應寫為::
/mtk/*
!/mtk/one.txt
假設我們只有過濾規則,而沒有添加規則,那么我們就需要把/mtk/目錄下除了one.txt以外的所有文件都寫出來!
注意上面的/mtk/*不能寫為/mtk/,否則父目錄被前面的規則排除掉了,one.txt文件雖然加了!過濾規則,也不會生效!
----------------------------------------------------------------------------------
還有一些規則如下:
fd1/*
說明:忽略目錄 fd1 下的全部內容;注意,不管是根目錄下的 /fd1/ 目錄,還是某個子目錄 /child/fd1/ 目錄,都會被忽略;
/fd1/*
說明:忽略根目錄下的 /fd1/ 目錄的全部內容;
/*
!.gitignore
!/fw/
/fw/*
!/fw/bin/
!/fw/sf/
說明:忽略全部內容,但是不忽略 .gitignore 文件、根目錄下的 /fw/bin/ 和 /fw/sf/ 目錄;注意要先對bin/的父目錄使用!規則,使其不被排除。
溫馨提示:
如果你不慎在創建.gitignore文件之前就push了項目,那么即使你在.gitignore文件中寫入新的過濾規則,這些規則也不會起作用,Git仍然會對所有文件進行版本管理。簡單來說出現這種問題的原因就是Git已經開始管理這些文件了,所以你無法再通過過濾規則過濾它們。所以大家一定要養成在項目開始就創建.gitignore文件的習慣,否則一但push,處理起來會非常麻煩。
全文完!
