intellidea中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服務端。

      13.Git新建本地分支與遠程分支關聯問題:git branch --set-upstream

git本地新建一個分支後,必須要做遠程分支關聯。如果沒有關聯, git 會在下面的操作中提示你顯示的添加關聯。關聯目的是如果在本地分支下操作: git pull, git push,不需要指定在命令行指定遠程的分支. 推送到遠程分支後, 你只要沒有顯示指定,git pull 的時候,就會提示你。

解決方法:

 使用命令git branch --set-upstream ;實例如下,其中debug爲創建的分支

git branch --set-upstream debug origin/debug

命令的最終修改都是針對 config 文件。

使用-- set-upstream 去跟蹤遠程分支。  

[core]
	repositoryformatversion = 0
	filemode = true
	bare = true
	logallrefupdates = true
[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = git@192.168.1.160:android2.3.5_r1.git
[branch "master"]
	remote = origin
	merge = refs/heads/master

[branch "debug"]
	remote = origin
	merge = refs/heads/debug

[receive]
denyCurrentBranch = ignore

注意倉庫.git目錄下的config文件

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章