制作書簽簡單又漂亮seo網(wǎng)站優(yōu)化怎么做
前言
寫這篇文章的原因是組內(nèi)的產(chǎn)品和美術(shù)同學(xué),開始參與到git工作流中,但是網(wǎng)上又沒有找到一個比較詳細(xì)的使用教程,所以干脆就自己寫了一個[doge]。文章的內(nèi)容比較基礎(chǔ),介紹了Git內(nèi)的一些基礎(chǔ)概念和基本操作,適合零基礎(chǔ)的人作為入門指南。
Git常見的一些概念
1.倉庫(repository/repo):代碼和資源的倉庫,Git分為本地倉庫和遠(yuǎn)程倉庫,Git在啟動和主動拉取的時候會將遠(yuǎn)程倉庫的內(nèi)容同步到本地。遠(yuǎn)程倉庫是托管在服務(wù)器上,僅會有一份,并且時刻保持最新。本地倉庫則是可以有多份,每個人的本地倉庫是互不影響的,而且可以斷網(wǎng)進(jìn)行修改。
2.克隆(Clone):當(dāng)遠(yuǎn)程倉庫已經(jīng)建好,并且沒有本地倉庫的時候。需要將遠(yuǎn)程倉庫Clone到本地,剛完成克隆的時候,本地倉庫與遠(yuǎn)程是完全相同的。
3.分支(Branch):一個倉庫里在初始化提交的時候會生成一個初始的主分支。之后可以在這個主分支上創(chuàng)建其他新的分支。 當(dāng)你需要做一些操作并且不想影響到其他人時,可以單獨創(chuàng)建一個分支,在分支上開發(fā)完功能,最后再合并(Merge)到主干上。
分支同樣存在本地和遠(yuǎn)程的區(qū)別,遠(yuǎn)程分支記錄的是遠(yuǎn)程倉庫該分支的內(nèi)容。本地分支則是保存了你本地倉庫修改的內(nèi)容。如果存在遠(yuǎn)程分支,但是沒有對應(yīng)的本地分支的情況,可以檢出(Checkout)獲得一個本地分支。
在GitKraken左側(cè)可以看到所有的本地(Local)和遠(yuǎn)程(Remote)的分支。同時在中間的主面板也可以看到遠(yuǎn)程和本地分支的情況,遠(yuǎn)程的分支顯示為一個圓形的圖標(biāo),本地則為一個小電腦的圖標(biāo)
GitKraken界面介紹
主界面
GitKraken的主界面如下,頂部顯示為當(dāng)前的工程。中間為圖形化的Git提交記錄,可以看到當(dāng)前項目的提交情況,左側(cè)為本地/遠(yuǎn)程分支和貯藏等區(qū)域。右側(cè)則為文件修改區(qū)
Git文件修改區(qū)
文件修改區(qū),當(dāng)有文件產(chǎn)生變化的時候,會出現(xiàn)如下的提示
點擊View change會切換到如下界面,處理當(dāng)前的修改
右側(cè)的文件修改區(qū)可以看到幾種不同的文件狀態(tài)
黃色為該文件進(jìn)行過修改(本地與遠(yuǎn)程不同)
紅色為該文件已經(jīng)被刪除(遠(yuǎn)程存在,本地不存在)
綠色為該文件為新增文件? (本地存在,遠(yuǎn)程不存在)
這里需要注意一點如果本地沒有任何修改的時候,修改區(qū)是不會顯示的
左鍵點擊右側(cè)修改區(qū)的文件時,進(jìn)入修改預(yù)覽界面??梢钥吹骄唧w文件修改情況。側(cè)邊欄有文件修改情況的縮略圖,可以拖動后找到對應(yīng)的修改位置。左側(cè)則是實際的修改情況。查看完畢后可以選擇暫存該文件或者關(guān)閉預(yù)覽
GitKranken基礎(chǔ)操作
丟棄修改(Discard)
如果不想要本地的修改了,可以選擇將本地修改丟棄,具體操作如下
(1)丟棄單個修改
在修改區(qū)內(nèi),如果想要某個修改,可以右鍵點擊該文件,選擇Discard changeds
之后頂部會出現(xiàn)一個確認(rèn)彈窗,點擊Discard Unstaged changeds按鈕,即可還原到修改前的狀態(tài)
修改和刪除的文件都可以進(jìn)行Discard操作。如果是新增的文件,想要還原,需要右鍵點擊Delete file。
(2)丟棄文件夾內(nèi)修改
想要丟棄某個文件內(nèi)的所有修改,需要先將修改區(qū)切換成Tree模式,這樣修改區(qū)的文件就會以樹狀結(jié)構(gòu)出現(xiàn)
然后右鍵選擇需要丟棄的文件夾,點擊Discard all changes in folder
然后點擊頂部彈窗的Reset Files
(3)丟棄所有修改
如果想要忽略所有修改,則可以點擊左上角的垃圾桶
之后頂部會出現(xiàn)一個彈窗,點擊Reset All即可清空整個修改區(qū)
貯藏(Stash)
點擊頂部的Stash會將當(dāng)前修改區(qū)內(nèi)所有的修改貯藏起來。
對應(yīng)的修改會放在下圖中的一個小抽屜里。并且會自動按照分支對該Stash進(jìn)行命名。在develop上貯藏的message就會自動命名為WIP on develop
如果想要修改Stash的名字,可以點擊這個小抽屜,點擊右側(cè)Stash Message框,修改這個Message
后續(xù)如果想要恢復(fù)這個Stash內(nèi)的修改,可以右鍵點擊小抽屜所在的那一行記錄,然后選擇Pop Stash即可
提交修改(Commit)
Git可以完成離線的開發(fā)工作,所有的提交內(nèi)容可以先提交(Commit)到本地的分支中,此時并不影響遠(yuǎn)程分支。
具體操作是鼠標(biāo)移動到修改的文件處,點擊右側(cè)的StageFile,即可暫存(Stage)該文件
可以看到文件移動到了下方的Staged Files區(qū)域
如果想要暫存所有文件可以點擊右上角的Stage all changes
按文件夾暫存則是右鍵文件夾,然后選擇Stage folder
所有需要暫存的文件都放入暫存區(qū)后,在Commit Message填寫修改日志,點擊Commit changes就可以將修改提交到本地倉庫
提交修改之后,可以看到主界面會有一條對應(yīng)日志的提交記錄。
拉取(Pull)
當(dāng)有其他人提交一些更改到遠(yuǎn)程分支時,需要通過Pull操作將其他人的修改同步到本地。Pull的操作十分簡單,只需要點擊頂部的Pull按鈕即可
在進(jìn)行Pull之前,有兩類本地分支的狀態(tài):
第一類最簡單,本地和遠(yuǎn)程都處在同一條線上。代表本地未commit任何文件,但是其他人Push了一些修改到遠(yuǎn)程分支
此時進(jìn)行Pull操作之后,遠(yuǎn)程和本地分支的標(biāo)識都在同一個地方,說明Pull成功,本地和遠(yuǎn)程的分支完全一致。
第二類情況是,本地進(jìn)行修改并且Commit之后,沒有推送到遠(yuǎn)端。
此時本地和遠(yuǎn)程兩條分支在兩條線上并且本地和遠(yuǎn)程分支沒有匯合到一起。當(dāng)遠(yuǎn)程分支的修改時間在本地Commit之后,遠(yuǎn)程分支顯示在本地分支上方
反之遠(yuǎn)程分支顯示在本地分支下方
直接點擊Pull即可進(jìn)行拉取。Pull完成后,可以看到雖然遠(yuǎn)程代碼和本地依然是在兩條線上,但是遠(yuǎn)程分支匯聚到了本地分支上,代表Pull成功。
推送(Push)
當(dāng)需要將本地分支的修改推送到遠(yuǎn)程分支時,就需要進(jìn)行推送(Push)操作,需要注意的時,在Push之前需要先進(jìn)行Pull操作,將遠(yuǎn)程分支的內(nèi)容同步到本地才可以進(jìn)行Push。
Push操作也十分簡單,點擊頂部的Push即可
Push成功之后,可以看到小圓點和小電腦此時處在同一行。說明Push 成功,本地和遠(yuǎn)程的分支完全一致。
創(chuàng)建分支(Create Branch)
右鍵希望創(chuàng)建分支的位置,選擇Create branch here
之后在左側(cè)會出現(xiàn)一個enter branch name的彈窗,輸入分支名后,點擊Enter即可創(chuàng)建分支
這里輸入的分支名為testBranch,可以看到創(chuàng)建后會有一個小電腦的圖標(biāo),代表本地分支
檢出分支(Checkout)
當(dāng)想要從一個分支切換到另外一個分支的時候,可以通過Checkout進(jìn)行切換,具體操作是右鍵點擊需要切換的分支,選擇"Checkout 分支名稱"。(該操作也可以化簡為直接雙擊分支)
當(dāng)切換到該分支時,可以看到分支左側(cè)有一個“打鉤”的圖標(biāo).
Checkout可以選擇切換到本地分支,或者遠(yuǎn)程分支。如果不存在本地分支,可以直接雙擊遠(yuǎn)程分支的所在的圓點。
會自動生成一個本地分支。
如果已經(jīng)存在本地分支,并且本地分支和遠(yuǎn)程和分支不在相同的位置,選擇Checkout遠(yuǎn)程分支,會出現(xiàn)以下提示。如果選擇Reset Local Here,相當(dāng)于將本地分支全部重置,并且同步到遠(yuǎn)程分支所在的位置。(特別注意,該操作會將本地未Push的Commit全部丟棄,不要輕易執(zhí)行該操作)如果不希望重置本地分支,可以選擇Cancel取消。大多數(shù)情況下,如果存在本地分支,都是先Checkout本地分支,然后Pull更新到最新。
合并分支(Merge)
不同的分支之間可以進(jìn)行Merge操作,比如你在自己分支上進(jìn)行了一些修改之后,希望將修改同步到主干上時,可以進(jìn)行Merge操作。同時也可以把主干的修改同步到自己的分支上。
具體的操作是,先切換到目標(biāo)分支,然后右鍵點擊需要合并的源分支,選擇"Merge 源分支 into 目標(biāo)分支"。這樣就可以把來源分支的內(nèi)容合并的目標(biāo)分支上。
Merge成功后會自動產(chǎn)生一條合并的日志。并且源分支所代表的那根線也匯聚到目標(biāo)分支上了
采用提交(Cherry Pick Commit)
有時候你在某個分支上做了多個修改,比如“添加圖片”(A),"修改圖片參數(shù)"(B),“修改代碼”(C)。這時候,你想要在另外一個目標(biāo)分支上應(yīng)用A修改,但是又不想其他修改也合并到目標(biāo)分支,這時候就可以通過Cherry pick commit實現(xiàn)該操作。
具體步驟是,右鍵點擊需要采用的提交,然后選擇Cherry pick commit
操作完成之后可以看到目標(biāo)分支上出現(xiàn)了一條跟采用提交相同的日志
恢復(fù)提交(Revert Commit)
如果一個已經(jīng)提交的修改,希望將它恢復(fù)到提交之前的狀態(tài),就可以使用Revert Commit操作。只需要右鍵點擊需要恢復(fù)的提交,選擇Revert commit即可
操作完成之后會自動生成一個Revert日志
處理沖突(Resolve Conflict)
處理沖突是git工作流中最為麻煩的。一般原因是兩個分支同時對一個文件進(jìn)行了修改。下面舉一個簡單的例子,來模擬這樣一個情況。分支BranchA和分支BranchB都有個文件TestScript.cs,里面的內(nèi)容就是聲明了一個變量a,一開始a的值是0。
XML |
然后在BranchA把a(bǔ)的值改成100,在BranchB的值改成50。然后嘗試將BranchB Merge到BranchA上。
可以看到左下角會彈出一個Merge Failed的提示
并且頂部同樣會有一個黃色的提示,文件修改區(qū)的Conflicted Files會顯示哪個文件出現(xiàn)沖突。
點擊沖突區(qū)的文件,會進(jìn)入處理沖突的界面??梢钥吹?jīng)_突界面有三塊區(qū)域
左上角為BranchA的內(nèi)容
右上角為BranchB的內(nèi)容
底部為輸出區(qū)域的內(nèi)容
這時候如果想要采用BranchA的提交可以點擊出現(xiàn)沖突那一行左側(cè)的勾選框
可以看到下方的輸出區(qū)域的內(nèi)容也跟著變成跟BranchA相同的修改
這時候沖突便解決完畢了??梢渣c擊右上角的Save按鈕,退出處理沖突界面。
此時可以看到TestScript.cs從沖突區(qū),移動到了下方的暫存區(qū)。并且自動填入了Commit Message。如果確定采用這次的沖突處理,可以點擊左側(cè)的Commit and Merge就完成了整個合并沖突的流程
主界面上也會出現(xiàn)這條Merge成功的Commit信息
實際在操作的過程中會發(fā)生單個文件會有多個沖突出現(xiàn)的情況??梢钥吹捷敵鰠^(qū)域Output,會顯示conflict n of m。n代表當(dāng)前查看的是第n個沖突,m代表一共有幾個沖突??梢渣c擊右側(cè)的箭頭在不同的沖突之間切換。
有時候會出現(xiàn)單個文件的沖突特別多的情況。或者由于修改prefab或者場景導(dǎo)致不知道如何去一條一條地處理沖突。這時候可以直接點擊頂部兩個勾選框,選擇直接采用哪個分支的文件。比如點擊左側(cè)A的勾選框,代表直接采用BranchA上的文件,完全忽略BranchB上的修改。后續(xù)可以等待沖突處理完之后再手動將BranchB上的修改添加回來。
在處理沖突直接采用哪個文件時,建議大家按照以下的原則進(jìn)行選擇
(1)、優(yōu)先采用其他人修改的文件
(2)、優(yōu)先采用遠(yuǎn)程分支的文件
(3)、優(yōu)先采用修改較多的文件
在處理沖突的時候還有一種簡單粗暴的處理方式,就是在Conflicted Files選擇Mark all resolved
這樣GitKranken會把所有沖突標(biāo)記為已經(jīng)解決。但是實際上文件的內(nèi)容并不是正確的,比如前面那個修改a值的例子,選擇Mark all resolved的輸出內(nèi)容是下圖這個樣子。同時把兩個分支的內(nèi)容都填進(jìn)去了,并且還有
Git自動輸出的提示“<<< Head? ===? >>> branchA”,最后還是需要手動地去解決。
GitKranken操作流程
1.清空修改區(qū)
在進(jìn)行Pull或者切換分支的操作之前,需要先清空修改區(qū)。
清空有幾種方式:
(1)丟棄修改(Discard)
(2)貯藏(Stash)
(3)提交修改(Commit)
具體操作可以查看上一個章節(jié)中對應(yīng)基本操作
2.確定分支
清空完修改區(qū)后,需要確定是在哪個分支上進(jìn)行操作。之后需要切換到對應(yīng)分支??梢韵炔榭幢镜厥欠裼性摲种?。(左側(cè)Local欄),如果存在。直接雙擊該分支即可切換到該分支上。如果該分支本地倉庫不存在,可以直接雙擊遠(yuǎn)程分支,這樣就可以在本地Checkout了一個對應(yīng)的分支,并完成切換。
3.同步遠(yuǎn)程分支
切換到對應(yīng)分支后需要進(jìn)行Pull的操作,將遠(yuǎn)程倉庫的修改同步到本地。點擊Pull按鈕,可以完成Pull操作
4.本地進(jìn)行修改
在進(jìn)行本地修改的時候,可以自由地創(chuàng)建本地分支,貯藏,或者提交到本地。
點擊完貯藏按鈕后可以看到頂部出現(xiàn)一個小抽屜的圖標(biāo),本地所有的修改都臨時保存在這個貯藏中
之后再次拉取最新的分支,驗證最終效果。
如果發(fā)現(xiàn)仍有需要修改的情況,可以直接在最新的分支上修改。也可以根據(jù)情況恢復(fù)貯藏的內(nèi)容,右鍵剛剛貯藏的小抽屜,選擇Pop Stash,恢復(fù)修改。
常見問題處理
1.文件被其他程序使用
在進(jìn)行文件操作的時候,(比如Stash,Discard等)可能會出現(xiàn)如下彈窗,導(dǎo)致無法進(jìn)行操作。原因是,有文件被其他程序使用了,比如播放器,圖片瀏覽器等。這時候,需要把占用該文件的程序關(guān)閉,即可順利進(jìn)行操作。(如果實在找不到是哪個程序,可以重啟電腦)
2.切換分支失敗Checkout Failed
在進(jìn)行分支切換的時候,有時會因為修改區(qū)未清空出現(xiàn)如下報錯。清空修改區(qū)后再切換分支即可。
創(chuàng)作不易,如果覺得這篇文章對你有所幫助,可以動動小手,點個贊哈,?( ′・?・` )比心