SourceTree 程式碼庫管理工具
1、SourceTree
2、使用方法
2.1 Clone 專案到本地
開啟 SourceTree,點選 New Repository => Clone from URL, 然後複製倉庫地址到 SourceTree 中的 Source URL 中,本地倉庫的位置和名稱可以隨意修改。點選 clone 即可。這樣就能把遠端倉庫中的專案 clone 到本地了。
2.2 SourceTree 主介面
clone 專案完成後,SourceTree 中看到如下:
上面的工作列分別有 commit(提交)、Pull(更新程式碼)、Push(推送程式碼)、Fetch(抓取程式碼),Branch(新建分支)、Merge(合併程式碼)、Stash(暫存程式碼狀態)。
左側中的 WORKSPACE 表示本地的工作區,File status 中可以看到本地檔案的改變狀態,History 中是 commit 歷史。下面的 BRANCHES 顯示的是本地的分支。REMOTES 顯示的是遠端的分支。
下方的狀態列顯示本次提交的修改檔案。以及修改檔案中修改的程式碼。
2.3 建立新專案
如果上述是別人的一個專案,那麼此時你就可以在本地進行開發了。但是如果是你自己要在遠端建立自己的專案,那麼下面你要在本地先建立一個專案。以 Xcode 建立一個 iOS 專案為例,建立的專案名稱為UseSourceTree_iOS. 然後把該專案拖入到 clone 下來的本地倉庫中。拖入完成後,SourceTree 就顯示如下。
可以在 SourceTree 中可以看到工作區中的改變,比如哪些檔案被修改,以及修改的內容。
2.4 暫存檔案
本地做了修改後,可以看到檔案都還是在 Unstaged files 中,勾選你要提交的檔案,然後檔案就會到 Staged file 中,這個操作對應的命令就是 git add ,即把檔案從工作區放到暫存區。操作完成後,如下所示。
2.5 Commit 提交程式碼
此時就可以進行 commit 操作了。點選左上角的 commit。在 commit 的時候強烈推薦寫上註釋。
完成 commit 之後,提交歷史就會變成如下所示。1 ahead 表示本地提交比遠端提交領先一次 commit。
來到不同的分支,比如 master 分支,點選不同的 commit History,可以檢視到檔案的修改,非常的方便。視覺化工具對於 code review 非常有利。
2.6 Pull 更新程式碼
本地完成 commit 之後,就需要向遠端倉庫提交程式碼了,個人建議,在 Push 之前,先進行 Pull。
但是要注意,pull = fetch + merge,你拉取程式碼的時候選擇的是 pull 還是 fetch,還是使用 rebase,這個要根據你的個人習慣,最主要的是要根據你團隊的 Git 工作流來操作。個人的建議是用 git pull --rebase 命令,相當於使用 git fetch + git rebase 命令,而不是使用 merge,這主要是為了保持樹結構和歷史的乾淨(推薦去了解一下 git merge 和 git rebase 的區別)。
如果其他開發者向遠端倉庫提交了程式碼,那麼在你的 SourceTree 中就會顯示如下。
在你本地的 master 分支下,可以看到 1 behind,表示你本地的分支已經落後於遠端分支 1 commit 了,可以選擇 Pull 來更新程式碼。
點選上方的 Pull 拉取程式碼。
在進行 PUll 的時候,可以選擇遠端的分支,同時如果勾選了最後一個 Rebase instead of merge,表示使用 rebase 命令,而不是 merge。
2.7 Push 推送程式碼
完成更新程式碼後,就可以向遠端提交程式碼了。點選上方的 Push,彈出如下對話方塊。
在提交的時候,選擇要提交的分支即可。此時可能需要你輸入 Github 或者其他的遠端的使用者名稱和密碼,輸入即可。
注意:此時輸入的使用者名稱和密碼與 .git 配置裡面的 name 和 email 不是同一個概念。此時要你輸入的使用者名稱和密碼只和你的遠端伺服器有關,和 git 無關,因為你要向伺服器推送程式碼,必然要有許可權,這個使用者名稱和密碼相當於許可權。但是 .git 裡面的 name 和 email 只是作為你 git 這個工具標記而已,和遠端伺服器沒有關係。
Push 完程式碼後,可以在提交歷史中看到自己和別人的提交。
此時,本地和遠端已經保持了同步,所以原來的 1 aHead 就消失了。來到 Github 中,發現程式碼已經成功提交了。
2.8 檢出遠端分支
如果遠端倉庫有其他的分支,那麼需要 checkout(檢出)遠端分支到本地,如圖,遠端有 dev 分支,雙擊左側遠端的 dev 分支,即可檢出。檢出的時候還可以重新命名本地該分支的名字。
checkout 完成後,本地也就有 dev 分支了。
2.9 推送分支
當你在本地新建某個分支的時候,也可以推送到遠端,然後遠端就會有該分支了。如下所示,在 SourceTree 中新建了 release 分支,但是遠端沒有 release 分支。我把該分支進行 Push。
然後就發現遠端也有 release 分支了。你要確定是否有某個分支,你也可以去 Github 或者其他遠端伺服器檢視。
2.10 切換分支
- 在 SourceTree 中經常會出現 track 這個詞,表示“跟蹤”,表示本地某個分支跟蹤遠端某個對應的分支。所以,判斷是 ahead 還是 behind commit 的時候,都是去和 track 的那個分支進行比較的。雙擊本地的某個分支即可完成分支切換。
2.11 刪除分支
當然你也可以在 SourceTree 中刪除本地或者遠端的一個分支,刪除分支是個很謹慎的操作,需要慎重。