文章目錄
環境準備
開始前請配置一下相關軟件(並不要求版本一致):
OS: Windows7
Git:2.19.1
IDEA: 2017.2.2
注意:本案例源碼GitHub倉庫
本地Git安裝與SSH祕鑰
GitHub祕鑰配置
頭像下拉箭頭–>Setting–>SSH and GPG keys–>new SSH Key,將
標題隨便寫,key放入Git生成的SSH公鑰。
注意:id_rsa.pub直接用文本編輯器打開即可。
IDEA配置Git
File–Other Setting–>Default Settings–>Version Control–>Git
- 配置本地安裝Git所在目錄
- 選擇使用本地Git SSH祕鑰文件
- 測試是否成功。
推送本地項目到GitHub
新建測試項目
創建本地倉庫
對新建項目使用Git版本管理控制工具:
注意:項目的本地Git倉庫默認位置爲項目路徑下。
項目提交本地倉庫
- 將項目加入到Git版本管理中:項目右鍵–>Git–>Add
- 提交到本地倉庫:項目右鍵–>Git–>Commit Directory
填寫提交信息
提交成功,IDEA右下角彈出成功提示
推送至GitHub
如果遠程倉庫沒有對應倉庫:
如果遠程倉庫有對應倉庫:項目右鍵–>Git–>Repository–>Push;
指定對應Repository,然後Push.
URL:對應GitHub上Repository的URL
從GitHub上檢出項目
VCS–>Checkout from Version Control–>Git
問題一:在檢出項目時出現以下提示,解決方案。
問題二:Maven項目src下的代碼不顯示,解決方案。
提交和下拉
提交
當我們對本地代碼有修改時,如增加、修改、刪除等,爲了讓同事知道我們的最新代碼,我們就需要將代碼上傳至Git遠程倉庫中,代碼從本地上傳至遠程倉庫就需要push,步驟如下:
- 提交至本地倉庫–>commit
- 推送到遠程倉庫–>push
例如我們在項目中增加一個HelloWorld類,並且修改README.md文件的內容;
將新增文件提交到本地倉庫:項目右鍵–>Git–>Commit Directory
填寫提交信息,點擊commit
推送到遠程倉庫:項目右鍵–>Git–>Repository–>Push
可以看到本地提交了幾次,這裏我不小心多提交了次。確認無誤點擊push;
IDEA右下角會出現以下提示,說明成功推送到遠程倉庫中:
查看GitHub中,文件成功上傳至GitHub並且有了本次提交記錄:
下拉
考慮一個問題,如果同事也修改了README.md文件,那麼我們直接推送就會覆蓋他的代碼,爲了避免這個問題,我們需要在push之前將遠程倉庫上最新的代碼下拉至本地,這就是pull.
我們在新檢出的項目IDEA_Git02中下拉IDEA_Git剛剛推送的代碼:項目右鍵–>Git–>Repository–>Pull
分支操作
創建分支
在IDEA中創建新的分支:項目右鍵–>Git–>Repository–>Branches…–>New Branch
填寫分支名稱,點擊OK
點擊IDEA右下角:Git:dev就可以知道分支已經建好,且當前分支是dev;
注意:此時分支是在本地存在,遠程倉庫並不存在,因此我們需要利用我們前面講的提交,推送到遠程倉庫。
推送後我們可以在遠程倉庫中看到dev分支:
分支切換
點擊IDEA右下角:Git:dev我們可以看到本地有dev和master兩個分支且當前分支爲dev;
點擊master分支上的小箭頭,選擇Checkout就會切換到master分支上。
分支合併
當我們在dev分支上做了修改,那麼我們要把dev上的修改合併到master分支上:
將當前分支切換至master
選擇dev分支–>Merge
這裏分Merge的意思是將選中分支合併到IDEA當前所在分支。
查看master分支,發現已經合併。
分支刪除
在某些情況下我們需要刪除某些分支,那麼我們需要在IDEA中刪除本地分支,再推送至遠程倉庫:
我新建一個uat分支,我們刪除這個分支。
點擊uat分支–>Delete
刪除成功。
遠程倉庫版本回退
在IDEA中操作GIt倉庫遠程版本回退步驟如下:
- 修改相關文件並提交作爲版本回退測試:
- 打開Git歷史提交記錄:項目右鍵–>Git–>Show History
3. 複製版本號:複製要回退到的舊版本號和當前最新版本號
版本號右鍵–>Copy Revision Number
當前版本號:4bd216941c9fb973ba1d65c9950e1cab1cf2cd2f
舊版本號:d35a96ba85a27a4e78c17c60478e6bbc806d1b78
4. 版本回退:右鍵項目–>Git–>Repository–>Reset HEAD…
在這裏我們需要了解Reset Type:hard、soft、mixed的區別
此時沒有改變提交,但是Push會提示衝突錯誤,解決辦法如下兩種方法:
方法一:使用Hard會退本地代碼,使用Git命令強制提交,本方法會將原有提交記錄全部抹除
git push -f
重新使用Hard回退操作,會退回最新版本,並且push到遠程倉庫。
方法二:先使用Hard操作回退本地代碼,再使用Mixed操作回退至新版本,再提交push。該方法本質上相當於一次修改提交而已。
使用Mixed將版本號回退到最新版本號
文件對比
在Eclipse中我們可以很方便的與本地和遠程分支對比文件的改變,IDEA中也可以做到這樣的功能,不過不同的一點是,Eclipse中是實時維護本地遠程分支與遠程分支的信息,而IDEA不是,需要手動Fetch遠程倉庫分支的索引。
首先在IDEA_Git02修改文件並提交到遠程分支:
切換回IDEA_Git:
- 執行fetch更新本地遠程分支代碼索引:右鍵項目–>Git–>Repository–>Fetch
- 進行文件對比:右鍵項目或右鍵要對比的文件–>Git
這裏需要解釋在四個選項的含義:
- Compare with the Same Repository Version:與本地倉庫相同版本比較
- Compare with Latest Repository Version:與本地倉庫最新版本比較,注意這裏的本地倉庫維護這遠程倉庫的索引信息,如果Fetch後的最新版本就是遠程倉庫的最新版本。
- Compare with…:與選擇的版本比較
- Compare with Branch:與選擇的分支比較
瞭解了以上四個選項的意義就可以自由的對比了,無論是與遠程版本對比還是本地版本對比。我們這裏主要使用第四個選項與遠程master分支比較。
我們可以在文件對比工具中進行提前合併等等操作。
衝突文件處理
首先我們在IDEA_Git並提交至遠程倉庫:
IDEA_Git02上修改同一文件並提交至本地倉庫:
在IDEA_Git02上pull文件,出現文件合併工具,根據需要選擇:
根據差異進行合併,並提交至遠程倉庫。