IDEA中git的更新、提交、還原方法以及沖突解決

一、git更新操作

第一步:

在提交項目之前必須先對項目進行更新,此項特別重要,如果不進行更新,別人有項目提交到服務器上,那么你的項目將會提交不上去,使用git解決沖突會比較麻煩,即使你解決了沖突,但是有時候不注意會沖掉別人寫的代碼,不像svn使用那么簡單,所以提交自己項目前必須進行更新(特別重要);如圖1:選擇pull進行更新代碼操作;

1.jpg

第二步:

更新后的結果如圖2、3;其中圖2:表示從服務器上更新下來的代碼;圖3:表示服務器上沒有需要更新的代碼,當服務器上沒有需要更新到本地的代碼時,則可以放心的進行提交代碼的操作;

2.jpg
3.jpg

第三步:

1.當確定第二步操作完之后,此時可以進行提交代碼的操作,圖4中表示中紅色的項目表示新創建的項目{注:如果是藍色,表示修改過的項目}(紅色和藍色都表示待提交項目),如果是紅色的,則選擇圖5:add,如果項目是藍色,則選擇圖5.1 :commit file;

4.jpg
5.jpg
  • 2.當add操作完成之后項目顏色會變成綠色,如圖6,紅色表示為進行add操作;


    6.jpg
  • 3.進行commit Directory操作 如圖7:


    7.jpg
  • 4.當出現如圖8的窗口時,綠色和藍色表示待提交項目,在這里可以進行相應的勾選,下面的commit message區域填寫,模塊名稱或者提交代碼的相應信息,下面的下拉菜單選擇commit and push,如紅色8區域;


    8.jpg
  • 5.如圖9:當出現下面窗口時,選擇紅色區域9部分的push按鈕,進行提交項目操作,至此項目提交所以操作完成,需要等幾秒鐘會有相應提交成功或者是提交失敗的提示,如果提交失敗則表示,你本地項目沒有進行更新,和服務器上的項目有沖突,需要解決沖突,然后才能提交(注:當pull失敗時,說明服務器上的代碼和本地代碼有沖突,這時則需要把本地有沖突的代碼備份,然后還原,再pull,這時pull成功后,再把自己備份的代碼部分,拷入相應的代碼中,這時候再進行push就可以了)。

9.jpg

第四步:

還原操作:如圖選擇10區域按鈕:revert進行還原操作;

10.jpg

二、Git沖突解決

在idea開發工具中使用Git時,主要用到的快捷按鈕如下五個:

image

這五個按鈕的使用說明及在idea中如何配置和使用git可參考https://github.com/DayThink/IntelliJ-IDEA-Tutorial/blob/newMaster/vcs-introduce.md

本文主要講解在Idea中利用git遇到的兩種沖突(提交代碼時發生沖突和更新代碼時發生沖突)以及解決方法,無論是那種沖突,只要發生沖突了,idea都會彈出一個圖形化的merge對話框,在merge對話框上引導用戶去解決沖突。

1.提交commit沖突:

image

如上圖所示,當提交代碼時發生沖突,此時操作步驟如下

image
image

在這里我們希望將本地沖突代碼和服務端的代碼都保留,此時在上圖中點擊中間的兩個紅色按鈕后即可將本地和服務端的沖突代碼全部保留,在中間一欄result中科院預覽到沖突解決后的代碼情況,沖突處理完成后如下圖

image

在上圖merge對話框中點擊右下角的apply時,一般會在idea的右下角出現如下的Push rejected提示對話框

image

上圖對話框提示我們,在push的時候發生了失敗,此時要注意,將本地代碼更新提交到服務端,需要經歷兩個步驟:commit和push,commit相當于提交到了本地庫,而push則是將本地庫提交更新到服務端。根據上圖提示push rejected,我們可以發現沖突已經在本地庫commit時解決了,我們只需push一次即可,因此后續操作只需要push一次即可,如下:

在沖突的文件上,右鍵

image

push完成后即可將本地庫的文件提交到服務端。

2.更新update沖突

image

如上圖所示,點擊更新按鈕時發現沖突,提示用戶如下所示的merge頁面上進行沖突的處理,比如此處我們希望將本地修改和遠端服務器的修改均保留,因此按照如下圖所示的紅色1和2操作,合并到中間的result一欄中。

image

沖突解決后,如下所示:

image

至此,更新沖突就已解決完成。

三、Git命令的全家福手冊

image

三、idea中查看遠程Git倉庫的地址

有時我們需要將本地的代碼與遠程Git倉庫脫離綁定關系或重新綁定到另一個Git倉庫上,此時在idea中查看或刪除本地代碼對應Git倉庫的方法:

image

如果本地的倉庫綁定了兩個遠端的Git倉庫,那么在彈出的Remotes對話框中會有兩條遠端Git倉庫的記錄。

四、idea中查看本地Git倉庫的地址

查看與遠程Git倉庫綁定的本地目錄,有時候本地目錄和子目錄都會綁定到一個遠端的Git倉庫。

image

五、用Git命令行(不在idea操作)上傳本地倉庫到Git遠程倉庫

如果是新項目,創建 git 倉庫:

[java] view plaincopy

<embed id="ZeroClipboardMovie_1" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. mkdir SpringBootInAction
  2. cd SpringBootInAction
  3. git init
  4. 將當前目錄下的所有文件添加到git倉庫

  5. git add .
  6. git commit -m "first commit"
  7. 首先要建好一個遠端倉庫(URL),如https://xxx/SpringBootInAction.git

  8. git remote add origin https://xxx/SpringBootInAction.git
  9. git push -u -f origin master

如果是已有項目

[java] view plaincopy

<embed id="ZeroClipboardMovie_2" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. cd existing_git_repo
  2. git remote add origin https://xxx/SpringBootInAction.git
  3. git push -u origin maste

六、Git版本回退

首先,根據git提交的歷史記錄中確定回退的版本

image

將上述拷貝的Revision Number記錄下來,如:4b91ea12de20cdf97eccb6bc9125bbc2fef79b17

備注:后面兩步在idea中好似不能圖形化操作界面,只能用命令行了

其次,恢復到指定的commit hash
git reset --hard resetVersionHash

eg:git reset --hard 4b91ea12de20cdf97eccb6bc9125bbc2fef79b17

最后,把當前分支強制提交到遠程
git push -f origin currentBranch

eg: push -f origin master

以上三步操作后,就將本地和git遠端的代碼從2017-8-12 18:45回退到了2017-8-12 17:01。

七、分支操作

7.1.新建分支

1.首先在本地新建一個分支,如dev;


image

2.執行git push origin dev:dev;或git push origin dev;
上面命令表示,將本地的dev分支推送到origin主機的dev分支,如果后者不存在,則會被新建。
git push命令用于將本地分支的更新,推送到遠程主機,它的格式如下:
$ git push <遠程主機名> <本地分支名>:<遠程分支名>
如果省略遠程分支名,則表示將本地分支推送與之存在”追蹤關系”的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。
$ git push origin master
上面命令表示,將本地的master分支推送到origin主機的master分支,如果后者不存在,則會被新建。
如果省略本地分支名,則表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支。
$ git push origin :master

等同于

$ git push origin --delete master
上面命令表示刪除origin主機的master分支。
如果當前分支與遠程分支之間存在追蹤關系,則本地分支和遠程分支都可以省略。
$ git push origin 上面命令表示,將當前分支推送到origin主機的對應分支。 如果當前分支只有一個追蹤分支,那么主機名都可以省略。 $ git push 最后需要注意與git pull的區別,從遠程分支名拉到(合并)本地分支名上: $ git pull <遠程主機名> <遠程分支名>:<本地分支名>

7.2.本地與origin分支的對應設置

查看本地分支與遠端origin的分支對應情況 $ git remote show origin設置本地分支與遠端分支的對應關系,如:將本地dev分支與遠端的dev分支進行綁定 git branch --set-upstream dev origin/dev

7.3分支合并

如下所示,將feature分支合并到dev分支,之后將合并后的dev分支push一次到origin即可。

image

7.4.遠端origin分支查看及操作

[java] view plaincopy

<embed id="ZeroClipboardMovie_3" src="https://csdnimg.cn/public/highlighter/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

  1. git remote -v
  2. git remote add origin_didi git@git.xiaojukeji.com:sec/ews-parent.git
  3. git remote -v
  4. git remote --help
  5. git remote remove origin
  6. git remote -v
  7. git remote rename origin_didi origin
  8. git remote -v
  9. git push origin master

參考文章地址:

IDEA中Git的更新、提交、還原方法

Idea中Git的使用和兩種類型的沖突解決

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,718評論 4 54
  • Git 基礎 基本原理 客戶端并不是只提取最新版本的文件快照,而是把代碼倉庫完整的鏡像下來。這樣一來,任何一處協同...
    __silhouette閱讀 15,958評論 5 147
  • Git常用語法 [TOC] Git簡介 描述 ? Git(讀音為/g?t/。)是一個開源的分布式版本控制系統,...
    君惜丶閱讀 3,604評論 0 13
  • 人性本質是主動而非被動;不僅能消極選擇反應;更能主動創造有利環境。 采取主動并不表示要強求;惹人厭或具侵略性;只是...
    zhoujia閱讀 468評論 0 0
  • 彩茹寶貝閱讀 269評論 0 0