目錄
博客鏈接:https://www.zjhuiwan.cn/info/20211014/4220282518939357.html
Sourcetree用了一段時間,記錄一些過程.
- SourceTree擁有可視化界面的項目版本控制軟件,適用于git項目管理
- 使用遠程倉庫的好處就是可以不同而地方不同的電腦直接拉取項目開發,開發完提交就行了
- 還可以進行多人協作開發
需要注意的就是,每次寫完代碼結束的時候都要把代碼提交掉,這樣電腦就算炸了,代碼還在遠程倉庫~
基礎配置
首先下載安裝好Sourcetree,官網下載即可: Sourcetree | Free Git GUI for Mac and Windows
安裝完成之后先配置一下git,下載git并安裝,官網下載地址:Git。
如需從gitlab上拉取代碼,需要配置密鑰,運行git,生成秘鑰,
命令為:ssh-keygen -t rsa,如圖:
秘鑰生成的目錄在你系統盤用戶目錄下的.ssh\id_rsa.pub
在自己的git服務器上綁定自己git公鑰;
(綁定操作:Settings --> SSH Keys --> Add key(打開本地公鑰文件粘貼里面所有內容)),如圖:
Sourcetree配置,點擊"工具-->選項-->一般",注意以下4個部分的設置,如圖:
也可以不綁定然后克隆項目的時候輸入賬號密碼驗證。
基礎操作
拉取遠程項目
- 點擊+號新增一個tab
- 點擊clone克隆遠程項目
- 輸入遠程倉庫地址
- 選擇保存在本地的位置和項目名稱
如果箭頭指向的倉庫類型表明“這不是一個標準的Git倉庫”,可能是有以下原因:項目地址獲取錯誤或者沒有項目訪問權限
- 選擇要從倉庫拉取的分支
- 克隆,完成后就把代碼拉到本地啦,可以開始進行本地開發
項目克隆完成之后是這個界面
如果有需求提交或者拉取或者推送的內容都有提示,類似下圖這樣,還很非常方便直觀的。
pull(拉取)、commit(提交) 、push(推送)
這些是日常工作最常用的功能,之前一直用git命令,在sourcetree上直接點按鈕就行
pull拉取遠程代碼到本地(將同事提交的代碼先拉到本地,再開發,防止沖突),直接點擊操作區的拉取按鈕即可將代碼拉取,如果有需要拉取的內容會顯示數字。
Commit提交自己寫的代碼到分支
Push將提交的代碼推送到遠程倉庫
注意:如果有待拉取內容,一定要先拉取再提交/****推送,避免代碼沖突
新建分支
項目克隆完成之后,我們拉取的是master分支上的代碼,由于master分支是主分支,項目多人開發的情況下,很容易造成沖突。
所以我們一般會在gitlab遠程新建一個自己的分支
這樣分支就創建了,創建完成后左側會出現,雙擊可以切換當前分支,在master分支改了代碼,切換到test20211014分支的時候不會出現master上改的代碼,互不影響,只有在開發完了,提交推送合并分支的時候生效,所以本地開發要注意當前分支。
合并分支
將兩個分支的代碼合并,比如主分支事master,然后在test分支進行開發,開發完成后需要保持master事最新版本,所以需要將test分支合并到master。具體操作如下圖:
合并完成后會有條記錄,可以看到合并內容,這樣兩個分支的代碼就合并到了master。
目錄
Git工作流
分支共有5種類型
1) master,最終發布版本,整個項目中有且只有一個
2) develop,項目的開發分支,原則上項目中有且只有一個
3) feature,功能分支,用于開發一個新的功能
4) release,預發布版本,介于develop和master之間的一個版本,主要用于測試
- hotfix,修復補丁,用于修復master上的bug,直接作用于master
當開發中需要增加一個新的功能時,可新建feature分支,用于增加新功能,并且不影響開發中的develop源碼,當新功能增加完成后,完成feature分支,將新功能合并到develop中,更新develop上的代碼
1) 新建feature。首先當前開發分支指向develop,點擊“Git工作流”
在預覽中可看到,feature分支是從develop分出的,輸入功能名稱,點擊確定,項目結構中增加feature分支,并且當前開發分支指向新建的feature分支
在dev_20211014上進行功能開發,功能開發完成后,需要同步到develop分支。
將當前分支指向dev_20211014分支,點擊“Git工作流”,選擇“完成功能”
注意:當確定開發完成并且無誤后再完成工程并刪除分支,否則可以保留開發分支
需要再增加新的功能時,重復以上操作即可
當多人協作開發時,可能會出現,不同人員對同一文件進行操作,從而引起合并沖突,比如你再dev_20211014上開發了一個功能涉及到A.java,你的同事也有個需求要開發,在feature 分支上新建了dev_20211014_2,也涉及到了A.java。開發完成你們合并的時候就有沖突產生,參照下面的沖突解決即可。
當開發到一定階段,可以發布測試版本時,可以從develop分支,建立release分支,進入預發布測試階段。點擊“Git工作流”,選擇“建立新的發布版本”
發版后線上有bug需要解決可以建立新的修復補丁:
具體操作參考上面的新建功能分支。
沖突解決
多人開發時,由于修改了同一個文件,可能會有文件沖突的情況。
拉取代碼時,會有沖突提示,解決完相關的沖突文件,重新提交即可。
可以在提交的時候先拉取代碼,然后進行提交推送,可以解決沖突,如果拉取不下來可以先暫存再拉取,拉取完之后取消暫存,再刪掉沖突代碼,然后推送。
如果代碼有沖突,在代碼上下文會出現如下內容:
<<<<<<< HEAD
Xxxxxxxx(當前代碼)
=======
Xxxxxxxx(需要合并的代碼)
自己根絕實際情況解決掉沖突代碼即可。
配置忽略文件
Sourcetree會把本地所有修改過的代碼都提示待提交,哪怕只是加了一個空格。所以對于一些編譯文件,可以選擇不提交,因為沒用。比如target下面的文件,只要進行如下配置即可忽略。
利用.gitignore過濾文件,如編譯過程中的中間文件,等等,這些文件不需要被追蹤管理。 正常情況下,管理員創建項目后需要直接將忽略文件創建好。
SourceTree&Git部分名詞解釋
- 克隆(clone):從遠程倉庫URL加載創建一個與遠程倉庫一樣的本地倉庫
- 提交(commit):將暫存文件上傳到本地倉庫(我們在Finder中對本地倉庫做修改后一般都得先提交一次,再推送)
- 檢出(checkout):切換不同分支
- 添加(add):添加文件到緩存區
- 移除(remove):移除文件至緩存區
- 暫存(git stash):保存工作現場
- 重置(reset):回到最近添加(add)/提交(commit)狀態
- 合并(merge):將多個同名文件合并為一個文件,該文件包含多個同名文件的所有內容,相同內容抵消
- 抓取(fetch):從遠程倉庫獲取信息并同步至本地倉庫
- 拉取(pull):從遠程倉庫獲取信息并同步至本地倉庫,并且自動執行合并(merge)操作,即 pull=fetch+merge
- 推送(push):將本地倉庫同步至遠程倉庫,一般推送(push)前先拉取(pull)一次,確保一致
- 分支(branch):創建/修改/刪除分枝
- 標簽(tag):給項目增添標簽
- 工作流(Git Flow):團隊工作時,每個人創建屬于自己的分枝(branch),確定無誤后提交到master分枝
- 終端(terminal):可以輸入git命令行
其他待補充
……