一、名詞解釋
- 克隆(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指令行
某大佬寫的git一些比較實用的指令(并非基礎指令)
二、分支類型
- master,最終釋出版本,整個項目中有且隻有一個
- develop,項目的開發分支,原則上項目中有且隻有一個
- feature,功能分支,用于開發一個新的功能
- release,預釋出版本,介于develop和master之間的一個版本,主要用于測試
- hotfix,修複更新檔,用于修複master上的bug,直接作用于master
對分支類型的改變解說詳細,包括多人合作沖突的問題
git送出規範
commit規範
三、SourceTree基本術語講解
在對git一知半解的時候,SourceTree裡面又增添的新的術語,或者使用中文跟git指令英文還對不上号,下面這篇文章解決了很多疑問,可以多看看
關于git(SourceTree)的幾個疑問及解答
四、其他操作
1、合并多次commit
git rebase 把多次commit合并成一個(git原始指令)
2、本地沒有建立自己的分支,在master上直接添加了代碼,但未送出
從遠端倉庫拉下來的時候,沒有建立自己的分支,直接在master上修改了。但當要推送的時候不能直接這麼推吧。
先将修改的代碼送出到本地倉庫,但不推送。建立分支(這時候本地倉庫送出但未推送的修改就在這個分支裡被儲存),将本地master分支(了解為不純淨的分支)強制删除,再将遠端master分支拉取到本地。最後再推送。
上述過程可能有細節上的偏差(比如漏了某些檢出操作?),也可能有自己了解上的偏差,但線作為存檔記錄一下。
3、遠端倉庫的另一條分支修改了,本地的一條分支想擷取這些修改
假設本地分支A是自己的寫的代碼,A是從develop分支延申的,遠端分支B也是從develop分支延伸的。現在B作了些修改,要在本地A分支上擷取/合并這些修改:如果A分支有修改的話,先送出這些修改到本地倉庫,并不用上傳到遠端倉庫。然後點選合并按鈕,會顯示要将哪個分支合并到目前(A)分支,點選B分支并點确定。這時候最新的那個點,如果有檔案沖突的話會顯示沖突檔案。回到VS Code,将沖突檔案關閉再打開,就會有藍色、綠色代碼顯示沖突部分,解決好沖突就行了(之後操作就沒有個人親自體驗過了)。
4、遠端倉庫的A分支被修改了,本地A分支也被修改了,此時送出本地分支A
這時候A分支的修改隻能被送出到本地倉庫,如果要送出到遠端倉庫,會顯示出錯。這時候需要從遠端倉庫拉取,使一緻才行。拉取一下,會出現沖突檔案的提示,對沖突檔案進行修改。
本案例并未親身體驗,僅參考:SourceTree使用教程(四)—沖突解決
5、從遠端分支checkout時出現的問題
如果遠端分支已經是feature/A這個樣子了,那我隻能在這個分支上重新checkout一個feature/A_myVersion,而不能feature/A/myVersion,這樣做之後推送會出現推不上去的情況。
6、有代碼送出了,但還未推送。這時候要撤回這個送出的動作
選中你想復原到的送出記錄,右擊->将(所在分支)重置到這次送出->強行合并->确定。這時候會出現提示該操作會丢失所有工作副本,注意如果确定的話,要撤回的那些改動過的代碼都會不存在了,至于恢複到什麼樣子我還不确定,因為有一些還未送出的好像仍有?是以最好在做這部工作前,先對代碼進行複制備份。

五、倉庫 克隆Clone/添加Add 操作等
在+号new tab頁,可以進行的操作有Local,Remote,Clone,Add,Create
1、添加Add
當本地有本地倉庫,即檔案夾中有.git檔案,但是在Source Tree中沒有将本地倉庫和遠端倉庫連接配接起來。發生這種情況是本來本地在老賬戶使用source tree已經完成本地與遠端倉庫的連接配接,但是建立了新使用者後,本地檔案仍在(一模一樣),但是本地與遠端倉庫的連接配接斷了。
點選Add按鈕,“工作副本路徑”選擇有.git的檔案夾,它會顯示“這是一個git倉庫”,然後點選“添加”按鈕即可建立連接配接
六、ERROR錯誤彙總
! [new branch] dev -> origin/dev (unable to update local ref)
error: some local refs could not be updated; try running ‘git remote prune origin’ to remove any old, conflicting branches
猜測原因:本地庫原本是克隆的遠端庫,但之後遠端庫上有些分支被删除了,但本地庫并沒有被删除,就出現了這個錯誤。就按照它的提示運作一下那個語句就可以解決問題。
聊下 git remote prune origin,有使用git指令檢視本地分支和遠端分支的比對、更新update、tracking情況