修改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