(七)Intellij 中的git操作
git原理以後會分章節介紹,本次主要說一下intellij怎樣操作git。intellij有很好的git操作介面,可以拉取程式碼,拉取分支詳情,提交程式碼到本地倉庫,提交程式碼到遠端倉庫,可以merge本地分支,merge遠端分支,可以自由的切換分支,可以解決merge帶來的衝突問題。總之可以完成基本的git操作,詳情如下。
1、 更新程式碼
ctrl+T,更新的是遠端倉庫的程式碼。(ps:預設更新選擇的是branch default 和using stash,可以研究一下其他的選項哦)
2、提交程式碼
ctrl+K,如果原生代碼沒有改變,會提示,no changes detected(檢測到沒有改變)。如果原生代碼有改變,則可以進行提交,對於git提交,首先是提交到本地倉庫(commit),然後再提交(push)到遠端倉庫中,和svn比起來,相當於加上一層“快取”,同時加上一層安全。如下圖所示,還有一些其他的細節,一些按鈕,可以探究一下哦。
3、兩個分支的之間的切換
intellij的右下角有git相關的資訊,如下圖所示。
Git:xhf_buanch_test代表的是當前分支,一般情況下我們的當前分之是master。Local Branches:表示本地倉庫中的分支,本地的分支都是從Remote Branches中checkout而來的,選擇想要下載的遠端分支,右鍵選擇check out as new local branch,然後選擇ok,在Local Branches中就會增加一個本地分支。
但是分支之間怎麼切換呢,提交程式碼的時候提交到的是哪個分支呢?
當前分支是什麼預設提交到的就是哪個分支,所以想要修改哪個分支,就切換到本地的哪個分支,但是在分支切換的時候會出現一些問題,為了避免這些問題的出現,最好保證如下點。
3.1切換之前ctrl+k,確保沒有未提交到本地倉庫的檔案
3.2切換之前先更新,把這個分支更新為最新的code。
然後選擇Local Branches中的分支切換為當前分支。可能會出現如下問題,比如分支A_1和分支A_2 兩個分支,當A_1中添加了一些檔案,但是還沒有commit的時候,這時候切換分支到A_2 , A_2中也會有A_1中未提交的檔案。
當有時候會出現從A_1分支切換到A_2分支上,需要merge,我們可以選擇smart merge,當smart merge沒有解決問題的時候,我們可以手動merge,merge result的結果,就是把這些檔案放到你要切換到的分支上,所以最安全的方式是選擇Merge這個按鈕。
accept Yours是接受A_1分支上的改變,Accept Theirs是接受A_2分支的改變。
4、新建分支
點選git框的new Branch,然後輸入自己分支的名稱,按照本公司的分支命名規則哦。然後會自動切換到當前分支,然後再push到遠端倉庫中。
5、同步遠端分支
可能有人新建了遠端分支,但是在本地上的Remote Branches中並沒有遠端分支,所以需要右鍵選擇git fetch。
6、merge遠端分支。
A merge B是把A中的改動放到B分支上,B merge A是把B中的改動merge到A中,例如把master分支上的改動移到分支fb_xhf上,可以這樣merge。
6.1 轉到master分支上,然後更新master最新更新。
6.2 再轉到fb_xhf上,然後在Local Branches中選擇master分支,選擇merge,這樣就把本地的master merge到 本地倉庫的fb_xhf上,然後再選擇git push ,這樣就把遠端master merge到 fb_xhf上, 並會提示: Merged master to fb_xhf。
7、檔案恢復
本地的檔案修改後,想要恢復到本地git倉庫上次的提交,可以右鍵選擇git revert。
8、 cherry pick
就像摘櫻桃一樣,在changes列表中,可以看到其他分支提交的動態,如果想要把某次的變化放到當前分支上,可以右鍵選擇cherry pick,這就是摘櫻桃。
9、如果不小心不應該merge的時候merge了,怎樣退回到上一次狀態?
在changes中選中最新的提交,然後右鍵選擇reset current branch to here。。然後彈框如下
選擇Hard會返回上一狀態,其他的選項,可以看看哦。
10、顏色變化
git 在未add到git管理的時候是褐色,add後的顏色是綠色,提交之後的顏色是正常色,有修改之後的顏色是藍色。
11、如何刪除某些已經提交到本地git倉庫和遠端倉庫上的內容呢?
可以使用git命令:
11.1 git rm -r --cached File-or-FolderName (ps:要刪除的檔案或目錄, 本地git庫快取的檔案.) 11.2 git commit -m "Removed folder from repository" (ps:提交到本地) 11.3 git push origin master (ps: 把刪除提交到遠端分支上.)在intellij中可以在執行完第一個步驟之後ctrl+K commit和push。
12、intellij去除非程式碼提交
修改 。gitignore檔案,並提交到git上。如下修改
/target
/.idea
*.iml
*.ipr
*.iws
.idea
*/*.log
*/target/
*.DS_Store
*.classpath
*.settings
*.project
擴充套件:git http://my.oschina.net/pengfeix/blog/191897?p=1#OSC_h3_3 http://www.51itong.net/git-commit-amend-commit-8551.html
ps:如果測試的話,可以在github上測試,這樣就省去了本地安裝git服務端。
總結:
git的博大精深還需要本公主多次研究和實踐,還有很多功能木有用到。總結一下基本的使用和坑,算是拋磚引玉了。