基礎介紹與常用功能
Git是一個開源的分布式版本控制系統
優點:
1、本地倉庫即為一個完整的項目,方便我們進行獨立開發
2、絕大多數操作只需要本地即可完成,即使暫時沒有網絡, 也可以進行開發工作,只需要之后進行合並即可
3、便於對代碼的歷史版本的掌控,隨時可以回退到任意版本,且歷史提交與修改記錄完整保存
4、便於迭代的管理,可以創建不同分支可以代表不同的功能用途(例如:master,dev,qa,release_1.x等等)
常用功能:
1、從遠程倉庫克隆完整的項目到本地進行開發
2、在本地創建分支,提交代碼到本地/遠程倉庫
3、從遠程倉庫拉取最新的分支
4、在本地合並分支
5、在本地解決代碼沖突
等等…………
基本操作(以IDEA中的操作為例)
克隆項目(clone)
拉取分支與切換分支(checkout)
克隆遠程倉庫后,右下角會顯示當前分支信息,點開當前分支,會展示本地倉庫分支(Local)和遠程倉庫分支(Remote)。
若當前獲取到的遠程分支不統一的話,可以點上面的刷新,或者菜單欄中VCS—>Git—>Fetch,拉取遠程倉庫的最新內容。
選中對應的分支,選中Checkout即可切換選中的分支到當前工作目錄下,如果是本地分支則會直接檢出,如果是遠程分支,並且沒有本地分支與之對應,那么會讓你新建一個本地分支與之對應。
一般情況下,本地代碼應該先提交后再進行切換,否則切換分支的時候可能會遇到以下情況,Smart Checkout會將本地變更帶到切換的分支上,Force Checkout不會,如果切換過程中有沖突,可能會需要解決,解決沖突操作同第5點。
提交代碼(commit與push)
選擇菜單欄VCS—>Commit/Git—>Push,或者idea右上角的Commit即可,會出現以下窗口,填寫Commit Message后點擊Commit,或者直接Commit and Push。
如果在push前沒有進行過pull操作的話,push過程中同樣可能會遇到需要merge或者解決沖突的情況,操作詳見第4/5點。
代碼與分支合並(pull,merge與rebase)
遠程與本地合並
git pull是拉取遠程分支上的變更,並且與本地分支合並的操作,在沒有沖突的情況下,一般直接pull就行了。
在idea中,默認操作是Update Project,其中可以選擇合並方式是merge或者rebase,視情況選擇,但一般使用merge即可。
merge與rebase的區別可以參考網上資料。
不同的分支之間的合並
和切換分支類似,點擊右下角當前分支名稱,選擇需要合並到當前分支的分支,點擊Merge into Current或者Rebase Current onto Selected,將選中的分支合並到當前的分支。
沖突解決
主要會在以下幾種情況時,出現沖突需要解決,但所有情況下,在Idea里面的合並操作步驟都是相同的。
在pull的過程中遇到代碼沖突
push過程中的沖突
合並分支時產生的沖突
切換分支時產生的沖突
以上所有情況,在有沖突的時候,都會出現如下提示,一般情況下不會選擇Accept Yours(全部接受你當前的改動)/Accept Theirs(全部接受該分支當前的改動)。
選擇Merge,會出現以下合並的彈窗,左邊是你的版本,右邊的當前遠程分支的版本,中間為合並后的結果,如果都是自己的變動那就直接改,不然就需要和對方溝通后,把需要的代碼合並到中間這個版本,完成后Apply即可,在本地確認編譯運行無誤后,再push到遠程倉庫即可。
常見問題(以IDEA中的操作為例)
commit后撤銷本地暫存
選中對應commit(未提交到遠程倉庫的),undo Commit。
想要回滾到某一個版本
1、revert(回退一次commit,會產生提交記錄,但是需要一條一條commit來回退,對於只回退某一/幾次提交的情況下比較好用)
2、reset(直接回退到某一次commit的情況,之后的提交記錄會消失)
cherry pick
可以將某一次或多次提交,引入當前分支。
.gitignore文件
git提交時會默認忽略此文件中配置的一些文件或目錄,建議配置,否則可能會將本地idea配置文件提交到遠端