1.下載並註冊SourceTree
註冊sourcetree對應的賬號,就可以免費使用SourceTree.網不太好的話可以用藍燈(免費)
我是用github賬戶關聯的,當然你也可以用另外兩種賬戶
2.SourceTree詳細操作步驟
賬戶操作
建立本地和遠端倉庫
-
建立本地倉庫 : 點選建立本地倉庫按鈕,選擇倉庫地址,填寫倉庫名稱,型別選git
-
建立遠端倉庫 : 將同時建立遠端倉庫打鉤,即可同時建立本地和遠端倉庫
克隆程式碼以及檢出分支
-
克隆程式碼
- 在自己的github專案中,複製url地址,然後克隆專案
- 在檢出分支中,選擇想要檢出的分支.我這裡檢出的不是master分支.
-
專案克隆不下來
檢查url是否正確,若url正確,網路也正常,則有可能你將要克隆的專案是私有庫,而你本地沒有登入對應的私有庫賬號或者沒有對應許可權的公鑰. 複製程式碼
-
解決方案:
檢查賬號是否正確或者本地是否有對應的私有庫專案公鑰或者自己的許可權是否足夠下載此專案
因為我自己的放在github上的是開源專案,克隆的時候不需要公鑰,工作的電腦本地裝公司專案公鑰就行了,自己電腦配的是碼雲私有庫,所以也是一個公鑰,不需要多公鑰管理.多公鑰管理可以參考:
複製程式碼
-
檢出分支
通常專案是三種分支型別: master主分支,穩定的版本; develop分支,日常開發分支,每個專案版本穩定之後,合併到master分支; fix分支,線上緊急bug.從master建立fix分支,修復測試通過後,合併到master主分支. 複製程式碼
如果上一步你檢出的是master分支,可以在origin中,檢出其他分支到本地
暫存、丟棄、移除檔案
![image](http://upload-images.jianshu.io/upload_images/2835144-72eaeb8c909dc10b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
複製程式碼
-
暫存檔案 : 打鉤未暫存檔案,會將檔案放在已暫存檔案框中
-
丟棄檔案 : 放棄此更改項
最新版SourceTree中,已暫存檔案框,只有移除檔案選項,沒有丟棄檔案選項;未暫存檔案框中有移除檔案和丟棄檔案選項
-
移除檔案
###不是放棄此更改項,而是刪除此檔案,刪除此檔案,刪除此檔案(重要的事情說三遍)
比如你在一個txt檔案裡面增加了兩句話,用丟棄檔案,就只是刪除你剛才增加的那兩句話;如果選擇移除檔案,那就是說把這個txt檔案刪除了,所以要慎重選擇移除檔案.
本地提交以及拉取、推送
-
本地提交(commit) : 提交已暫存檔案框中的檔案,並在下面的輸入框中填寫本次提交的描述,然後點提交按鈕 ###本地提交之後,先拉取,後推送,養成良好的習慣 雖說SourceTree中不拉取,直接推送,工具會檢測如果程式碼衝突會讓你修改衝突之後再提交,不過我沒試過,這樣的習慣不好;假設養成這種壞習慣,用SVN的話,就會直接覆蓋的,那就很酸爽了,當然版本是可以回退的
-
拉取 : 點拉取按鈕,把專案中這個分支的遠端倉庫程式碼拉到本地合併處理
-
推送 : 點選推送按鈕,把本地這個分支合併後的程式碼,推送到遠端倉庫
第一次用的話,推送可能會讓你輸入你的github賬戶名和密碼
拉取與抓取+變&^基(rebase)的區別
- 拉取 : 把遠端倉庫的程式碼拉下來,與你本地提交的程式碼進行合併,合併到你的本地倉庫
抓取 : 僅僅是把遠端倉庫的程式碼拉下來
變&^基(rebase) : 將抓取到的程式碼與本地倉庫進行合併,且變&^基修改了提交歷史,使得提交記錄保持線性(美觀).git變&^基細說
我個人認為沒必要為了線性提交記錄美觀而刻意去變&^基.從結果來看,抓取+變&^基和拉取沒什麼區別,甚至如果遇到衝突,解決的時候也不會因為變&^基而少解決衝突,就是提交線性(美觀).而且拉取一步操作,抓取加+變&^基兩步操作,還多一步操作.
分支與合併
-
分支
選擇想要建立分支的地方,建立分支
目前建立的只是本地分支,如果想把該分支也放在遠端倉庫,則需要推送並且在當前分支上打對勾,遠端倉庫就會有這個分支了
-
合併
如上例子,將AAA分支合併到master分支:雙擊master切換分支,當前是master分支,單機AAA分支,右鍵"合併AAA至master"
打鉤包括被合併提交的資訊內容,就是在AAA分支提交時.提交的描述也會體現到master記錄中
-
刪除分支
打鉤刪除遠端分支,就會把遠端倉庫的分支也刪掉;如果刪除有問題,刪不掉,再打鉤強制刪除來強制刪除分支
衝突與解決
- 多人修改同一檔案,提交程式碼或合併會造成衝突;
- 提示檔案衝突,去檔案狀態中找帶感嘆號的檔案,在Find中顯示;開啟檔案,cmd+f,搜尋"<<<",我當前是master分支,B&%B&%B分支合併進來造成的衝突,所以"<<<< HEAD"和"===="中是同一檔案我修改的部分;"====="和">>>>>B&%B&%B"中間的是B&%B&%B分支修改的內容;
- 根據實際情況刪掉一部分或者都保留,然後刪除"<<<<< HEAD"、"======="、">>>>>>>B&%B&%B",如果同一檔案有多處衝突,同樣這麼修改;
- 解決所有衝突後,選中衝突檔案,標記為衝突已解決,然後本地提交,再推送到遠端倉庫
程式碼回退(回gun)以及將master重置到這次提交的區別
- 回退(回gun) : 撤銷此次提交的更改
- 將master重置到這次提交 : 將版本變為這個選中版本
- 區別 :
- A->B->C版本,回退(回gun)操作B的話,會變成A->C,相當於B的操作被撤銷了;
- 重置這次提交操作B,會將最新版本重置為B,即A->B;
- 重置到這次提交,只能操作提交到遠端倉庫的程式碼,且不可操作最新版本程式碼;
- 回退(回gun)不僅可以回退(回gun)本地提交程式碼,也可以回退(回gun)提交到遠端倉庫的程式碼
新增標籤以及顯示遠端伺服器、在Finder中顯示
- 新增標籤 : 切換到正確分支,選中想要新增標籤的記錄,然後右鍵選擇分支,填寫標籤名稱,打鉤推送標籤,推送標籤到遠端倉庫;移除標籤同樣操作,點刪除標籤,選擇對應的標籤,刪除
- 其他操作
- 顯示遠端伺服器 : 瀏覽器開啟該專案地址
- 在Find中顯示 : 會跳轉到本地專案地址
基本上以上操作就夠用了,至於遴選、高階自定義配置檔案,我也沒嘗試過.如果有描述有錯誤的地方,歡迎指出錯誤.