使用Git退回撤銷命令

修改Git的遠(yuǎn)程GitHub地址

git remote origin set-url URL

一、 介紹需要用到的命令

  • git checkout
    是撤銷當(dāng)前文件的修改暖哨,將文件回退到上次提交的狀態(tài);將沒有暫存的工作區(qū)域的內(nèi)容凰狞,撤銷回來篇裁;
  • git reset HEAD
    是當(dāng)前的目錄文件還原至上次提交的狀態(tài),會(huì)將暫存的文件回退到未跟蹤狀態(tài)赡若,將暫存區(qū)的內(nèi)容移除达布;
  • git clean -df
    是講未跟蹤的文件刪除清理,配合git reset HEAD使用逾冬,刪除本地版本黍聂;
  • git revert [commit id]
    反轉(zhuǎn),對(duì)gitHub上的提交版本進(jìn)行更改粉渠,如果一次提交是添加3個(gè)文件分冈,那么反轉(zhuǎn)就是減去3個(gè)文件

二、以test_Git項(xiàng)目為例霸株,進(jìn)行checkout命令的案例分析雕沉;

1.項(xiàng)目初始狀態(tài)

一共有三次版本提交:

  • 第一次:項(xiàng)目初步建立
  • 第二次:添加一個(gè)splash.xml文件
  • 第三次:添加了兩個(gè)bean類:Boutique類和CartBean類
    項(xiàng)目初始階段AndroidStudio.jpg

    commit id 很重要后面需要
    打印git log
    項(xiàng)目初始gitLog.jpg

2.對(duì)BoutiqueBean.java進(jìn)行文件的第一次更改

在BoutiqueBean.java文件中title那行加了5個(gè)9

BoutiqueBean文件修改.jpg

此時(shí)BoutiqueBean文件從未修改狀態(tài)變?yōu)橐研薷臓顟B(tài)
BoutiqueBean從未修改狀態(tài)變?yōu)橐研薷臓顟B(tài).jpg

3. 回退對(duì)BoutiqueBean.java的修改

后面加了.表示對(duì)當(dāng)前目錄的文件

git checkout .

BoutiqueBean回退剛才的修改.jpg

回退之后的文件狀態(tài)
回退之后的文件狀態(tài).jpg

4. 對(duì)BoutiqueBean.java的文件進(jìn)行第二次修改,并將已修改狀態(tài)文件添加到暫存區(qū)域

在BoutiqueBean.java文件中title那行添加6個(gè)9去件;

BoutiqueBean再次修改.jpg

將已修改狀態(tài)的處于工作區(qū)域BoutiqueBean文件添加到暫存區(qū)坡椒,文件從已修改狀態(tài)變?yōu)闀捍鎽B(tài)

git status 
git add .
git status
BoutiqueBean已修改狀態(tài)變?yōu)闀捍鏍顟B(tài).jpg

5.此時(shí)使用checkout退回,發(fā)現(xiàn)文件并沒有回到原來沒有被修改的狀態(tài)

BoutiqueBean沒有回到修改狀態(tài).jpg

文件沒有回到原來的未修改的狀態(tài)尤溜,仍在暫存區(qū)域倔叼,處暫存狀態(tài)

git checkout .
git_checkout文件沒有回到原來的狀態(tài).jpg

6. 對(duì)BoutiqueBean.java文件進(jìn)行第三次修改,此時(shí)文件有兩種狀態(tài)

在BoutiqueBean.java文件中title那行將6個(gè)9改為3個(gè)9

BoutiqueBean第三次修改.jpg

文件有兩種狀態(tài):

一個(gè)是未提交到git倉庫的處于git暫存區(qū)域的暫存狀態(tài)的文件
另外一個(gè)是剛剛修改過的處于git工作目錄的修改狀態(tài)的文件

文件的兩種狀態(tài).jpg

7. 執(zhí)行checkout命令宫莱,那么回退的是那個(gè)紅色沒有提交到暫存區(qū)域的處于工作目錄為修改狀態(tài)的文件

變?yōu)?個(gè)9.jpg

文件狀態(tài)變?yōu)橐粋€(gè)丈攒,剩下那個(gè)在暫存區(qū)域里的暫存狀態(tài)
文件狀態(tài)變?yōu)橐粋€(gè).jpg


三、以test_Git項(xiàng)目為例,進(jìn)行reset HEAD命令的案例分析巡验;

接上面的案例的步驟繼續(xù)际插,BoutiqueBean.java文件狀態(tài)只剩下一種暫存狀態(tài),處于暫存目錄

1. 取消暫存狀態(tài)显设,文件的內(nèi)容沒有退回第二次修改的狀態(tài)

文件內(nèi)容沒有退回到原來的變化.jpg

文件的狀態(tài)從已暫存狀態(tài)變?yōu)橐研薷臓顟B(tài)框弛,文件從暫存區(qū)域到了工作目錄

git reset HEAD
git status
取消文件已暫存狀態(tài).jpg
2. 使用checkout命令,把處于工作目錄的已修改文件退回到

也就是將第二次修改的文件退回到未修改狀態(tài)

文件第二次修改已退回.jpg

工作目錄和暫存區(qū)域都沒有文件可以被操作
文件被checkout退回.jpg


四捕捂、進(jìn)行已經(jīng)提交到GitHub文件回退案例瑟枫;

1.退回第二個(gè)提交版本-添加splash.xml文件的版本
  • 查看此時(shí)在GitHub上提交的三個(gè)版本,并將第二個(gè)版的commitId復(fù)制指攒,用于命令
    復(fù)制添加splash.xml的commitId.jpg
  • 執(zhí)行checkout命令
git checkout f4e57fe12e43f02a9409c025c9c8285a36d0461a
讓項(xiàng)目退回第二個(gè)版本添加splash.xml.jpg
  • 執(zhí)行g(shù)it log,我們發(fā)現(xiàn)第三個(gè)版本添加bean已經(jīng)不存在
git log
已經(jīng)只有兩個(gè)版本.jpg
  • 執(zhí)行g(shù)it status,我們發(fā)現(xiàn)代碼處于第二個(gè)提交版本
git status
gitStatus當(dāng)前代碼位于第二個(gè)版本.jpg
  • 當(dāng)前HEAD沒有指向本地的分支
沒有指向本地分支.jpg
  • 在AndroidStudio里也沒有兩個(gè)bean類慷妙,versionControl里可以看到HEAD指向
項(xiàng)目沒有Bean類.jpg
versionControl工具HEAD指向第二版本.jpg
2.從第二個(gè)版本在再回到項(xiàng)目master分支,即最終的那個(gè)添加bean版本
git checkout master
git log
回到master.jpg

兩個(gè)bean類又出現(xiàn)在了AndroidStudio里面

AndroidStudio項(xiàng)目里面.jpg

五幽七、進(jìn)行撤銷本地版本案例

1景殷、刪除本地第三個(gè)版本
  • git reset HEAD命令 處于第三個(gè)版本,想要回到第二個(gè)版本澡屡,需要加上^
git reset HEAD^
resetHEAD命令撤回第二個(gè)版本.jpg
  • 此時(shí)查看文件狀態(tài)猿挚,會(huì)發(fā)現(xiàn)第三個(gè)版本的文件已經(jīng)變?yōu)槲锤櫸募呀?jīng)不再暫存區(qū)域了
git status
退回第二個(gè)版本的狀態(tài).jpg
  • 處于master分支
git branch
處于master分支上.jpg
  • AndroidStudio中versionControl的HEAD顯示驶鹉,兩個(gè)bean類文件處于紅色
    本地分支master處于第二個(gè)版本
    撤銷第三個(gè)版本的versioncontrol.jpg
  • 刪除本地第三個(gè)版本
git clean -df
刪除本地第三個(gè)版本.jpg
  • 此時(shí)git文件的狀態(tài)
    此時(shí)git文件的狀態(tài).jpg
2绩蜻、在此時(shí)的本地分支指向添加文件并提交給gitHub遠(yuǎn)程倉庫,執(zhí)行撤銷此次提交
git status
git add ,
git commit -m "add bean"
git push origin master

推送失敗室埋,因?yàn)楫?dāng)前本地的分支版本落后于gitHub上的分支版本办绝,兩個(gè)分支不在一起
origin master可以跟本地master平級(jí)或者在本地的下面,但是不能分叉

推送gitHub倉庫出了分支錯(cuò)誤.jpg

此時(shí)在AndroidStudio里面的版本分支的路徑發(fā)生了變化
本地的分支已經(jīng)指向了我們第四次版本姚淆,遠(yuǎn)程倉庫指向之前的第三次版本孕蝉;
分支路徑發(fā)生了變化.jpg

  • 有生成提交id
git log

提交log.jpg

撤銷此次錯(cuò)誤提交,回到添加splash.xml版本

git reset HEAD^
git status
git clean -df
git status
撤銷了錯(cuò)誤文件提交.jpg
3腌逢、回到gitHub上的分支降淮,本地的分支的版本已經(jīng)沒有添加bean了
git status
git pull

回到gitHub的分支.jpg

此時(shí)第三個(gè)版本添加bean又回來了

git log
gitLog.jpg

六、將gitHub上的提交反轉(zhuǎn)搏讶,理解為撤銷

1佳鳖、拿到項(xiàng)目提交的Log,找到要撤銷的提交的id
git log
此時(shí)的Log.jpg
2媒惕、撤銷升級(jí)這個(gè)提交系吩,回到了第三個(gè)版本添加bean
git revert ec03f259e82c26cda76866878e8f188c50878aa2
生成了一個(gè)提交頁面,退出保存
:wq
git revert升級(jí).png
3妒蔚、在AndroidStudio中可以看到版本的變化穿挨,以及本地分支的指向
本地分支的指向.jpg
4月弛、提交給gitHub,那么github的升級(jí)這次提交就被撤銷了
git push -u origin master
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市絮蒿,隨后出現(xiàn)的幾起案子尊搬,更是在濱河造成了極大的恐慌叁鉴,老刑警劉巖土涝,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異幌墓,居然都是意外死亡但壮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門常侣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜡饵,“玉大人,你說我怎么就攤上這事胳施∷莼觯” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵舞肆,是天一觀的道長焦辅。 經(jīng)常有香客問我,道長椿胯,這世上最難降的妖魔是什么筷登? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮哩盲,結(jié)果婚禮上前方,老公的妹妹穿的比我還像新娘。我一直安慰自己廉油,他們只是感情好惠险,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著抒线,像睡著了一般班巩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上十兢,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天趣竣,我揣著相機(jī)與錄音,去河邊找鬼旱物。 笑死遥缕,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宵呛。 我是一名探鬼主播单匣,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了户秤?” 一聲冷哼從身側(cè)響起码秉,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸡号,沒想到半個(gè)月后转砖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲸伴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年府蔗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片汞窗。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姓赤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出仲吏,到底是詐尸還是另有隱情不铆,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布裹唆,位于F島的核電站誓斥,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏品腹。R本人自食惡果不足惜岖食,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舞吭。 院中可真熱鬧泡垃,春花似錦、人聲如沸羡鸥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惧浴。三九已至存和,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衷旅,已是汗流浹背捐腿。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柿顶,地道東北人茄袖。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像嘁锯,于是被迫代替她去往敵國和親宪祥。 傳聞我的和親對(duì)象是個(gè)殘疾皇子聂薪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,478評(píng)論 1 26
  • 本文為 Git教程的學(xué)習(xí)筆記,教程源自廖雪峰的博客蝗羊。這是一個(gè)由淺入深藏澳,學(xué)完后能立刻上手的Git教程。另耀找,附上另一本...
    七弦桐語閱讀 6,247評(píng)論 5 47
  • 觀察對(duì)象:劉峻博 年 齡:4歲 工作名稱:彩色階梯串珠 工作描述:蒙氏自選工作開始了翔悠,峻博首先走到了數(shù)學(xué)區(qū),他...
    谷曉玉閱讀 275評(píng)論 0 1