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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩转GIT系列之【如何放弃本地/服务器端所做的修改】

發布時間:2023/12/15 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转GIT系列之【如何放弃本地/服务器端所做的修改】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天遇到一個問題,就是在git工程下修改了一些代碼,結果發現搞錯了,需要撤銷掉所有改動的內容,還原到之前的初始版本,換言之就是放棄自己在本地所做的修改。該怎么做呢?要分以下幾種情況來區別對待:

一、尚未使用“git add”緩存過代碼

1、對于指定的單個文件,可以使用下面的命令放棄對它的修改:

git checkout -- filename # 比如:git checkout -- readme.md

注意:不要忘記中間的 “–” ,不寫就成了檢出分支了!!

2、若想放棄所有的文件修改,可以使用下面的命令:

git checkout . # 注意checkout后面有一個空格,然后帶一個.號

注意:此命令用來放棄掉所有還沒有加入到緩存區(就是 git add 命令)的修改:內容修改與整個文件刪除。但是此命令不會刪除掉剛新建的文件。因為剛新建的文件還沒已有加入到 git 的管理系統中。所以對于git是未知的。自己手動刪除就好了。

3、若想要刪除新增的文件,除了手動刪除外,也可以使用下面的命令:

git clean -df # 從工作目錄中移除沒有track的文件

4、綜上,若想要徹底放棄全部修改的內容(包括新增的文件,以及對現有文件的修改),則可以一次性使用下面的命令:

git checkout . && git clean -df # 注意checkout后面有一個空格,然后帶一個.號

注意:這里用到了git clean命令,這個命令主要是用來從你的工作目錄中刪除所有沒有tracked過的文件,具體的用法,可以參見我的另外一篇博客(玩轉GIT系列之【git clean的用法】)。

二、已經使用“git add”緩存了代碼

1、對于指定的單個文件,可以使用下面的命令放棄對它的修改:

git reset HEAD filename # 比如:git reset HEAD readme.md

2、若想放棄所有的文件修改,可以使用下面的命令:

git reset HEAD . # 注意checkout后面有一個空格,然后帶一個.號

注意:此命令用來清除 git 對于文件修改的緩存。相當于撤銷 git add 命令所在的工作。在使用本命令后,本地的修改并不會消失,而是回到了(一)所示的狀態。繼續用(一)中的操作,就可以放棄本地的修改。

三、已經用“git commit”提交了代碼

1、若想要回退到前一次commit的狀態,可使用下面的命令:

git reset --hard HEAD^ # 注意HEAD后面有一個^符

注意:在windows的cmd控制臺下輸入上述命令時,系統有可能會提示more?,讓你繼續補充,多按幾次回車后就報錯如下:

fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'

這是因為cmd控制臺中換行符默認是^,而不是\ ,所以它的more?的意思是問你下一行是否需要再輸入,而^ 符號就被當做換行符而被git命令忽略掉了。

解決方法有如下幾種:

  • 加引號:git reset –hard “HEAD^” ;
  • 加一個^:git reset –hard HEAD^^ ;
  • 換成~:git reset –hard HEAD~ 或者 git reset –hard HEAD~1(~ 后面的數字表示回退幾次提交,默認是一次);

2、若想要回退到指定的某一次commit的狀態,則使用下面的命令:

git reset --hard commitid # 這里的commitid是一個代號,如下注釋

注意:這里的commitid就是提交時的標簽,可通過git log命令查看,如下所示:

commit 47895838a4fbe867ba9a170c6d1ea6a794095025 Author: Peng Fan <peng.fan@nxp.com> Date: Tue Dec 27 20:19:07 2016 +0800imx: mx6sllevk: add MAINTAINERS fileadd MAINTAINERS filesSigned-off-by: Peng Fan <peng.fan@nxp.com>Cc: Stefano Babic <sbabic@denx.de>commit d3c083a94722ab9089b6085ef9e95dd4858bc206 Author: Jaehoon Chung <jh80.chung@samsung.com> Date: Tue Dec 27 20:08:13 2016 +0900board: samsung: update the MAINTAINERS fileUpdate the maintainer from Przemyslaw and Lukasz to me.Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>

總結

以上是生活随笔為你收集整理的玩转GIT系列之【如何放弃本地/服务器端所做的修改】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。