一肖油、git更新操作
第一步:
在提交項(xiàng)目之前必須先對(duì)項(xiàng)目進(jìn)行更新,此項(xiàng)特別重要臂港,如果不進(jìn)行更新森枪,別人有項(xiàng)目提交到服務(wù)器上,那么你的項(xiàng)目將會(huì)提交不上去审孽,使用git解決沖突會(huì)比較麻煩县袱,即使你解決了沖突,但是有時(shí)候不注意會(huì)沖掉別人寫的代碼瓷胧,不像svn使用那么簡(jiǎn)單显拳,所以提交自己項(xiàng)目前必須進(jìn)行更新(特別重要);如圖1:選擇pull進(jìn)行更新代碼操作搓萧;
第二步:
更新后的結(jié)果如圖2杂数、3;其中圖2:表示從服務(wù)器上更新下來(lái)的代碼瘸洛;圖3:表示服務(wù)器上沒(méi)有需要更新的代碼揍移,當(dāng)服務(wù)器上沒(méi)有需要更新到本地的代碼時(shí),則可以放心的進(jìn)行提交代碼的操作反肋;
第三步:
1.當(dāng)確定第二步操作完之后那伐,此時(shí)可以進(jìn)行提交代碼的操作,圖4中表示中紅色的項(xiàng)目表示新創(chuàng)建的項(xiàng)目{注:如果是藍(lán)色石蔗,表示修改過(guò)的項(xiàng)目}(紅色和藍(lán)色都表示待提交項(xiàng)目)罕邀,如果是紅色的,則選擇圖5:add,如果項(xiàng)目是藍(lán)色养距,則選擇圖5.1 :commit file;
-
2.當(dāng)add操作完成之后項(xiàng)目顏色會(huì)變成綠色诉探,如圖6,紅色表示為進(jìn)行add操作棍厌;
-
3.進(jìn)行commit Directory操作 如圖7:
-
4.當(dāng)出現(xiàn)如圖8的窗口時(shí)肾胯,綠色和藍(lán)色表示待提交項(xiàng)目竖席,在這里可以進(jìn)行相應(yīng)的勾選,下面的commit message區(qū)域填寫敬肚,模塊名稱或者提交代碼的相應(yīng)信息毕荐,下面的下拉菜單選擇commit and push,如紅色8區(qū)域;
5.如圖9:當(dāng)出現(xiàn)下面窗口時(shí)艳馒,選擇紅色區(qū)域9部分的push按鈕憎亚,進(jìn)行提交項(xiàng)目操作,至此項(xiàng)目提交所以操作完成鹰溜,需要等幾秒鐘會(huì)有相應(yīng)提交成功或者是提交失敗的提示虽填,如果提交失敗則表示,你本地項(xiàng)目沒(méi)有進(jìn)行更新曹动,和服務(wù)器上的項(xiàng)目有沖突斋日,需要解決沖突,然后才能提交(注:當(dāng)pull失敗時(shí)墓陈,說(shuō)明服務(wù)器上的代碼和本地代碼有沖突恶守,這時(shí)則需要把本地有沖突的代碼備份,然后還原贡必,再pull兔港,這時(shí)pull成功后,再把自己備份的代碼部分仔拟,拷入相應(yīng)的代碼中衫樊,這時(shí)候再進(jìn)行push就可以了)。
第四步:
還原操作:如圖選擇10區(qū)域按鈕:revert進(jìn)行還原操作利花;
二科侈、Git沖突解決
在idea開發(fā)工具中使用Git時(shí),主要用到的快捷按鈕如下五個(gè):
這五個(gè)按鈕的使用說(shuō)明及在idea中如何配置和使用git可參考https://github.com/DayThink/IntelliJ-IDEA-Tutorial/blob/newMaster/vcs-introduce.md
本文主要講解在Idea中利用git遇到的兩種沖突(提交代碼時(shí)發(fā)生沖突和更新代碼時(shí)發(fā)生沖突)以及解決方法炒事,無(wú)論是那種沖突臀栈,只要發(fā)生沖突了,idea都會(huì)彈出一個(gè)圖形化的merge對(duì)話框挠乳,在merge對(duì)話框上引導(dǎo)用戶去解決沖突权薯。
1.提交commit沖突:
如上圖所示,當(dāng)提交代碼時(shí)發(fā)生沖突睡扬,此時(shí)操作步驟如下
在這里我們希望將本地沖突代碼和服務(wù)端的代碼都保留盟蚣,此時(shí)在上圖中點(diǎn)擊中間的兩個(gè)紅色按鈕后即可將本地和服務(wù)端的沖突代碼全部保留,在中間一欄result中科院預(yù)覽到?jīng)_突解決后的代碼情況卖怜,沖突處理完成后如下圖
在上圖merge對(duì)話框中點(diǎn)擊右下角的apply時(shí)刁俭,一般會(huì)在idea的右下角出現(xiàn)如下的Push rejected提示對(duì)話框
上圖對(duì)話框提示我們,在push的時(shí)候發(fā)生了失敗韧涨,此時(shí)要注意牍戚,將本地代碼更新提交到服務(wù)端,需要經(jīng)歷兩個(gè)步驟:commit和push虑粥,commit相當(dāng)于提交到了本地庫(kù)如孝,而push則是將本地庫(kù)提交更新到服務(wù)端。根據(jù)上圖提示push rejected娩贷,我們可以發(fā)現(xiàn)沖突已經(jīng)在本地庫(kù)commit時(shí)解決了第晰,我們只需push一次即可,因此后續(xù)操作只需要push一次即可彬祖,如下:
在沖突的文件上茁瘦,右鍵
push完成后即可將本地庫(kù)的文件提交到服務(wù)端。
2.更新update沖突
如上圖所示储笑,點(diǎn)擊更新按鈕時(shí)發(fā)現(xiàn)沖突甜熔,提示用戶如下所示的merge頁(yè)面上進(jìn)行沖突的處理,比如此處我們希望將本地修改和遠(yuǎn)端服務(wù)器的修改均保留突倍,因此按照如下圖所示的紅色1和2操作腔稀,合并到中間的result一欄中。
沖突解決后羽历,如下所示:
至此焊虏,更新沖突就已解決完成。
三秕磷、Git命令的全家福手冊(cè)
三诵闭、idea中查看遠(yuǎn)程Git倉(cāng)庫(kù)的地址
有時(shí)我們需要將本地的代碼與遠(yuǎn)程Git倉(cāng)庫(kù)脫離綁定關(guān)系或重新綁定到另一個(gè)Git倉(cāng)庫(kù)上,此時(shí)在idea中查看或刪除本地代碼對(duì)應(yīng)Git倉(cāng)庫(kù)的方法:
如果本地的倉(cāng)庫(kù)綁定了兩個(gè)遠(yuǎn)端的Git倉(cāng)庫(kù)澎嚣,那么在彈出的Remotes對(duì)話框中會(huì)有兩條遠(yuǎn)端Git倉(cāng)庫(kù)的記錄疏尿。
四、idea中查看本地Git倉(cāng)庫(kù)的地址
查看與遠(yuǎn)程Git倉(cāng)庫(kù)綁定的本地目錄币叹,有時(shí)候本地目錄和子目錄都會(huì)綁定到一個(gè)遠(yuǎn)端的Git倉(cāng)庫(kù)润歉。
五、用Git命令行(不在idea操作)上傳本地倉(cāng)庫(kù)到Git遠(yuǎn)程倉(cāng)庫(kù)
如果是新項(xiàng)目颈抚,創(chuàng)建 git 倉(cāng)庫(kù):
[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;">
- mkdir SpringBootInAction
- cd SpringBootInAction
- git init
-
將當(dāng)前目錄下的所有文件添加到git倉(cāng)庫(kù)
- git add .
- git commit -m "first commit"
-
首先要建好一個(gè)遠(yuǎn)端倉(cāng)庫(kù)(URL),如https://xxx/SpringBootInAction.git
- git remote add origin https://xxx/SpringBootInAction.git
- git push -u -f origin master
如果是已有項(xiàng)目
[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;">
- cd existing_git_repo
- git remote add origin https://xxx/SpringBootInAction.git
- git push -u origin maste
六踩衩、Git版本回退
首先,根據(jù)git提交的歷史記錄中確定回退的版本
將上述拷貝的Revision Number記錄下來(lái)贩汉,如:4b91ea12de20cdf97eccb6bc9125bbc2fef79b17
備注:后面兩步在idea中好似不能圖形化操作界面驱富,只能用命令行了
其次,恢復(fù)到指定的commit hash
git reset --hard resetVersionHash
eg:git reset --hard 4b91ea12de20cdf97eccb6bc9125bbc2fef79b17
最后匹舞,把當(dāng)前分支強(qiáng)制提交到遠(yuǎn)程
git push -f origin currentBranch
eg: push -f origin master
以上三步操作后褐鸥,就將本地和git遠(yuǎn)端的代碼從2017-8-12 18:45回退到了2017-8-12 17:01。
七赐稽、分支操作
7.1.新建分支
1.首先在本地新建一個(gè)分支叫榕,如dev;
2.執(zhí)行g(shù)it push origin dev:dev;或git push origin dev;
上面命令表示浑侥,將本地的dev分支推送到origin主機(jī)的dev分支,如果后者不存在晰绎,則會(huì)被新建寓落。
git push命令用于將本地分支的更新,推送到遠(yuǎn)程主機(jī)荞下,它的格式如下:
$ git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
如果省略遠(yuǎn)程分支名伶选,則表示將本地分支推送與之存在”追蹤關(guān)系”的遠(yuǎn)程分支(通常兩者同名),如果該遠(yuǎn)程分支不存在尖昏,則會(huì)被新建仰税。
$ git push origin master
上面命令表示,將本地的master分支推送到origin主機(jī)的master分支抽诉,如果后者不存在陨簇,則會(huì)被新建。
如果省略本地分支名掸鹅,則表示刪除指定的遠(yuǎn)程分支塞帐,因?yàn)檫@等同于推送一個(gè)空的本地分支到遠(yuǎn)程分支。
$ git push origin :master
等同于
$ git push origin --delete master
上面命令表示刪除origin主機(jī)的master分支巍沙。
如果當(dāng)前分支與遠(yuǎn)程分支之間存在追蹤關(guān)系葵姥,則本地分支和遠(yuǎn)程分支都可以省略。
$ git push origin 上面命令表示句携,將當(dāng)前分支推送到origin主機(jī)的對(duì)應(yīng)分支榔幸。 如果當(dāng)前分支只有一個(gè)追蹤分支,那么主機(jī)名都可以省略矮嫉。 $ git push 最后需要注意與git pull的區(qū)別削咆,從遠(yuǎn)程分支名拉到(合并)本地分支名上: $ git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
7.2.本地與origin分支的對(duì)應(yīng)設(shè)置
查看本地分支與遠(yuǎn)端origin的分支對(duì)應(yīng)情況 $ git remote show origin設(shè)置本地分支與遠(yuǎn)端分支的對(duì)應(yīng)關(guān)系,如:將本地dev分支與遠(yuǎn)端的dev分支進(jìn)行綁定 git branch --set-upstream dev origin/dev
7.3分支合并
如下所示蠢笋,將feature分支合并到dev分支拨齐,之后將合并后的dev分支push一次到origin即可。
7.4.遠(yuǎn)端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;">
- git remote -v
- git remote add origin_didi git@git.xiaojukeji.com:sec/ews-parent.git
- git remote -v
- git remote --help
- git remote remove origin
- git remote -v
- git remote rename origin_didi origin
- git remote -v
- git push origin master