概念
丟棄:放棄未暫緩區的所有修改(工作區中的修改不會添加到版本控制,就是修改的東西不想提交,就直接丟棄)
移除:直接刪除文件
克隆(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命令行
拉取倉庫及提交
可以看到,沒有暫存的文件無法提交
更新到本地
方法1、先獲取再合並 fetch + merge
1、在服務器端修改Commit Test.txt文件,添加內容
服務器端修改文件1
2、從服務器獲取
遠程倉庫對本地倉庫來說是否有更新,本地倉庫並不會改變
3、合並遠程倉庫更新到本地
4、本地文件內容發生改變
方法2、直接拉取 pull= fetch + merge
1、再服務器端修改Commit Test.txt文件,文件內容
服務器端修改文件1
服務器端修改文件1
2、從遠程倉庫拉取代碼
3、本地文件內容發生改變
拉取(pull)和獲取(fetch)的區別
1、命令式解釋:
pull = fetch + merge。
2、文字解釋:
- 拉取會把你本地倉庫沒有 而遠程倉庫有的更新寫到你本地中;
- 獲取的用處更多的是用來查看對於你本地倉庫的狀態來說遠程倉庫是否有更新,僅此而已,並不會使你的本地倉庫發生改變
沖突解決
配置外部比較工具BeyondCompare,安裝破解自行搞定(需要自己安裝,非SourceTree自帶)
沖突解決方法1(常用方法)
1、構造沖突
遠程倉庫:修改Commit Test.txt文件內容為
服務器端修改文件1
服務器端修改文件2
本地倉庫:修改Commit Test.txt文件內容為
服務器端修改文件2
服務器端修改文件1
SourceTree先提交到本地倉庫
然后獲取遠程倉庫
結果會形成本地需要推送遠程,遠程的需要拉取到本地
先拉取遠程倉庫內容剛到本地
選擇本地已暫存的沖突文件,解決沖突,打開外部合並工具
2、解決沖突
(1)在本地副本的已暫存文件 —-> 右鍵 —-> 解決沖突 —-> 打開外部合並工具。
(2)接着關閉Beynod Compare工具,沖突的那個感嘆號沒有了,並且會有一個 .orig 的文件生成。接着選中那個.orig文件,單擊右鍵 —-> 移除。
接着 commit、push。
push完成,沖突解決完畢
沖突解決方法2(沖突非常少的情況)
1、構造沖突
遠程倉庫:修改Commit Test.txt文件內容為
服務器端修改文件2
服務器端修改文件2
本地倉庫:修改Commit Test.txt文件內容為
服務器端修改文件1
服務器端修改文件1
SourceTree先提交到本地倉庫
然后獲取遠程倉庫,然后拉取遠程倉庫,解決沖突
暫存行:表示保留該內容
丟棄行:表示刪除該內容
備注:區分於第一種方式,使用第一種方法解決時,不要點擊”已暫存文件”,否則可能無法打開沖突文件
分支操作
使用sourcetree創建和使用分支是很方便的,不像之前使用的TortoiseGit只能在當前代碼處創建分支,使用sourcetree的方便之處:
1、可以選擇特定的某版本創建分支
2、代碼檢出時可以按照分支進行檢出
分支的添加很簡單
1、可以在當前的版本下創建分支
2、選擇指定的提交創建分支
3、點擊“創建分支”
分支提交到服務器:
在sourcetree右側內容中的分支列表中,選中創建的分支,右鍵提交
分支合並:
1、分支合並功能和分支添加功能類似,這里不再詳述,需要注意的是首先要切換到被合並的分支上,再進行合並操作。
2、分支合並時,可以選擇具體的某提交進行合並,同時主分支可以合並到子分支;子分支可以合並到主分支;子分支之間也可以進行合並。