日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git 的 4 个阶段的撤销更改

發(fā)布時(shí)間:2024/4/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git 的 4 个阶段的撤销更改 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

源自:Git 的 4 個(gè)階段的撤銷更改

參考:?廖雪峰git教程


git的基本概念圖:?

1. 基本概念

  • 3個(gè)步驟?

正常情況下,我們的工作流就是3個(gè)步驟,對應(yīng)上圖中的3個(gè)箭頭線:

git add . git commit -m "comment" git push
  • 1
  • 2
  • 3
  • 4
1. git add .把所有文件放入暫存區(qū); 2. git commit把所有文件從暫存區(qū)提交進(jìn)本地倉庫; 3. git push把所有文件從本地倉庫推送進(jìn)遠(yuǎn)程倉庫。
  • 1
  • 2
  • 3
  • 4個(gè)區(qū)

    工作區(qū)(Working Area)?
    暫存區(qū)(Stage)?
    本地倉庫(Local Repository)?
    遠(yuǎn)程倉庫(Remote Repository)

  • 5種狀態(tài)

    未修改(Origin)?
    已修改(Modified)?
    已暫存(Staged)?
    已提交(Committed)?
    已推送(Pushed)

2. 檢查修改

git diff
  • 1

git diff這個(gè)命令只檢查我們的工作區(qū)和暫存區(qū)之間的差異

  • 已暫存,未提交
git diff --cached
  • 1

git diff –cached 檢查暫存區(qū)和本地倉庫之間的差異

  • 已提交,未推送
git diff master origin/master
  • 1

master就是你的本地倉庫,而origin/master就是你的遠(yuǎn)程倉庫,master是主分支的意思,因?yàn)槲覀兌荚谥鞣种瞎ぷ?#xff0c;所以這里兩邊都是master,而origin就代表遠(yuǎn)程。

3. 撤銷修改

  • 已修改,未暫存?
    如果我們只是在編輯器里修改了文件,但還沒有執(zhí)行g(shù)it add .,這時(shí)候我們的文件還在工作區(qū),并沒有進(jìn)入暫存區(qū),我們可以用:
git checkout . 或者 git reset --hard
  • 1
  • 2
  • 3

來進(jìn)行撤銷操作。

  • 已暫存,未提交?
    你已經(jīng)執(zhí)行了git add .,但還沒有執(zhí)行g(shù)it commit -m “comment”。這時(shí)候你意識到了錯誤,想要撤銷,你可以執(zhí)行:
git reset git checkout . 或者 git reset --hard
  • 1
  • 2
  • 3
  • 4

git reset只是把修改退回到了git add .之前的狀態(tài),也就是說文件本身還處于已修改未暫存狀態(tài),你如果想退回未修改狀態(tài),還需要執(zhí)行g(shù)it checkout .。?
或許你已經(jīng)注意到了,以上兩個(gè)步驟都可以用同一個(gè)命令git reset –hard來完成。是的,就是這個(gè)強(qiáng)大的命令,可以一步到位地把你的修改完全恢復(fù)到未修改的狀態(tài)。

  • 已提交,未推送?
    你的手太快,你既執(zhí)行了git add .,又執(zhí)行了git commit,這時(shí)候你的代碼已經(jīng)進(jìn)入了你的本地倉庫,然而你后悔了,怎么辦?不要著急,還有辦法。
git reset --hard origin/master
  • 1

還是這個(gè)git reset –hard命令,只不過這次多了一個(gè)參數(shù)origin/master,正如我們上面講過的,origin/master代表遠(yuǎn)程倉庫,既然你已經(jīng)污染了你的本地倉庫,那么就從遠(yuǎn)程倉庫把代碼取回來吧。

  • 已推送?
    很不幸,你的手實(shí)在是太快了,你既git add了,又git commit了,并且還git push了,這時(shí)你的代碼已經(jīng)進(jìn)入遠(yuǎn)程倉庫。如果你想恢復(fù)的話,還好,由于你的本地倉庫和遠(yuǎn)程倉庫是等價(jià)的,你只需要先恢復(fù)本地倉庫,再強(qiáng)制push到遠(yuǎn)程倉庫就好了:
git reset --hard HEAD^ git push -f
  • 1
  • 2
  • 附加
git log
  • 1

命令顯示從最近到最遠(yuǎn)的提交日志?
如果嫌輸出信息太多,看得眼花繚亂的,可以試試加上

git log --pretty=oneline
  • 1
git reflog 用來記錄你的每一次命令
  • 1
  • 2
git status 查看工作區(qū)狀態(tài)
  • 1
git diff HEAD -- 文件名 可以查看工作區(qū)和版本庫里面最新版本的區(qū)別
  • 1
git rm -- 文件名 用于刪除一個(gè)文件

總結(jié)

以上是生活随笔為你收集整理的Git 的 4 个阶段的撤销更改的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。