Git基礎與常見問題


基礎介紹與常用功能

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配置文件提交到遠端

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM