濮阳杆衣贸易有限公司

主頁 > 知識庫 > 詳解git reset 加不加 --hard的區(qū)別

詳解git reset 加不加 --hard的區(qū)別

熱門標簽:谷歌地圖標注日期 聯(lián)通外呼系統(tǒng)電腦app軟件 宿遷怎么辦理400電話 400電話辦理費用低 地圖標注項目幾個月 外呼系統(tǒng)怎么群發(fā)短信 蘇州呼叫中心外呼系統(tǒng)哪家強 鶴壁高頻外呼系統(tǒng)多少錢一個月 400電話申請到底哪家好

通常我們提交代碼一般都是 git add ,git commit -m,   git push的這么個流程。添加到暫存區(qū),提交到git庫生成版本號,push到遠程倉庫以供他人可以使用。這是一個完整的且非常順利的流程。但是往往實際開發(fā)中并不是這么順利,總會出現(xiàn)這樣或那樣的問題。

git reset就是當我們提交了錯誤的內容后進行回退使用的命令。

git reset 版本號,就是回退到該版本號上。

通常我們使用

git reset HEAD就是回退到當前版本。git reset HEAD^回退到上一版本

如我們git add 一個文件

這時我們發(fā)現(xiàn)添加了錯誤的內容,此時我們只是做了add 操作,就是將修改了內容添加到了暫存區(qū),還沒有執(zhí)行commit,所以還沒有生成版本號,當前的版本號對應的內容,還是你add之前的內容,所以我們只需要將代碼回退到當前版本就行。

git reset HEAD ,截圖中也有提示內容 use git reset HEAD file> to unstage,我的理解就是去除掉添加到暫存區(qū)的內容。

執(zhí)行命令后,我們再看看當前的git 狀態(tài),如圖:

查看狀態(tài),發(fā)現(xiàn)和我們修改了工作區(qū)的內容,還沒有add時的狀態(tài)是一樣的了。

說明git reset HEAD操作只對暫存區(qū)起效果,不對工作區(qū)的內容起效果。所以我們要想修改掉工作區(qū)的內容還得繼續(xù)執(zhí)行命令進行還原。根據上面的截圖提示,git add是添加,因為我們發(fā)現(xiàn)了錯誤才回退的,所以肯定不能執(zhí)行這個了。

還有個命令提示:git checkout --file> to discard changes in working directory這個意思就是下載某某文件,丟棄掉該文件在工作區(qū)的改變內容。姑且就這么翻譯吧。就是把文件還原了,工作區(qū)的修改也沒了。我們執(zhí)行該命令查看狀態(tài),如圖:

此時你去看工作的文件修改的地方就會已經沒有了,工作區(qū)文件也干凈了,算是徹底把文件還原了。

以上的場景是add后還沒有commit的,下面我們看一下已經add并且commit之后的該如何

如圖,我已經commit了,還沒有push,push的內容我們先不管,push這個命令其實和提交沒關系,他只是推送到遠程了,如果push了,也就是我們回退了之后,再重新push一下而已,所以請不要糾結push這個操作。他和提交版本其實沒有關系的。

回歸話題。我們已經commit了,說明已經生成了最新的版本號了,此時我們想回退,則肯定是回退到之前的一個版本了,如果你知道前一個版本的版本號,git reset 版本號,這樣就可以了,但是一般我們不會去記版本號的,當然你可以執(zhí)行git log命令去查到。git為我們提供了一個更簡單的回退上一個版本的方法  git reset HEAD^,此命令專門用于回退到上一個版本,如果你的錯誤路程已經走的很遠了,僅僅回退上一個版本可能也解決不了了,那就需要查找日志,找到對應的版本號進行git reset 版本號進行回退了。我們執(zhí)行 git reset HEAD^后,再查看狀態(tài),如圖:

這個截圖和只做了add,沒有進行commit的回退后的截圖一致的。唯一的區(qū)別就是,

git reset 后面跟的一個是HEAD,一個是HEAD^,這個應該很好理解,因為一個沒有commit,還沒有生成版本號,一個已經commit了,有的新的版本號了。要回退肯定要用之前的版本號了。

本來想說git reset --hard 和沒有--hard的區(qū)別的,結果扯了這么多沒用的,唉希望沒有繞暈吧。后面我們說明一下--hard的作用

同樣的,我們先add,不進行commit操作,add后,我們執(zhí)行 git reset --hard HEAD,如圖:

然后我們執(zhí)行git status查看狀態(tài),如圖:

注意,這里和沒有--hard是有區(qū)別的了啦,有了參數(shù)--hard,直接把工作區(qū)的內容也修改了,不加--hard的時候只是操作了暫存區(qū),不影響工作區(qū)的,--hard一步到位,不加--hard需要分開執(zhí)行,兩步操作??瓷先ゼ恿?-hard方便好多,但是我不建議大家使用這個,因為這個殺傷力有點強。萬一手殘刪掉了一些自己不想刪的就沒有后悔藥了。所以慎用吧

加了--hard的,有沒有commit的是沒有區(qū)分的,這里不做截圖了。大家可以自己嘗試。

到此這篇關于詳解git reset 加不加 --hard的區(qū)別的文章就介紹到這了,更多相關git reset --hard內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Git恢復之前版本的兩種方法reset、revert(圖文詳解)
  • Git撤銷&回滾操作(git reset 和 get revert)
  • git revert和git reset的區(qū)別詳解

標簽:錫林郭勒盟 鄂爾多斯 丹東 襄陽 雙鴨山 遵義 莆田 哈爾濱

巨人網絡通訊聲明:本文標題《詳解git reset 加不加 --hard的區(qū)別》,本文關鍵詞  詳解,git,reset,加,不加,--hard,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解git reset 加不加 --hard的區(qū)別》相關的同類信息!
  • 本頁收集關于詳解git reset 加不加 --hard的區(qū)別的相關信息資訊供網民參考!
  • 推薦文章
    正宁县| 务川| 南川市| 会东县| 武安市| 高平市| 苗栗县| 庆城县| 渝北区| 古田县| 承德市| 湘阴县| 阜阳市| 积石山| 宝丰县| 阿克陶县| 平顶山市| 新民市| 黔江区| 嵊州市| 获嘉县| 防城港市| 固原市| 昔阳县| 鹰潭市| 莱州市| 莱西市| 雅江县| 郁南县| 余江县| 安阳县| 台前县| 博兴县| 江口县| 繁昌县| 九龙坡区| 克山县| 静宁县| 怀柔区| 信宜市| 顺义区|