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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

git reset 命令详解(二)—— Git 学习笔记 08

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 git reset 命令详解(二)—— Git 学习笔记 08 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

git reset 命令詳解(二)

上一篇博文git reset 命令詳解(一)講了 git reset 命令的基本原理和用法,這篇博文談一談 git reset 的另一種用法——后面跟一個路徑(或文件)。

恢復索引中的文件到某個版本

假設版本庫中是文件file.txt的V1版本,HEAD、Index和工作目錄都和版本庫一致。這時候修改了file.txt文件,并把它(V2版本)加入Index。如下圖所示:

現在,運行 git reset file.txt (這其實是 git reset --mixed HEAD file.txt 的簡寫形式),它會讓索引看起來像 HEAD, 所以它本質上只是將 file.txt 從 HEAD 復制到索引中。如下圖:

仔細對比這兩幅圖,你會發現 git reset file.txt 有 “取消暫存文件” 的實際效果。它和 git add 所做的事相反。這就是為什么 git status 命令的輸出會建議運行此命令來取消暫存一個文件。例如:

$ git add * $ git status On branch master Changes to be committed:(use "git reset HEAD <file>..." to unstage)renamed: README.md -> READMEmodified: CONTRIBUTING.md

另外,我們可以不讓 Git 從 HEAD 拉取數據,而是通過具體指定一個提交來拉取該文件的對應版本。 我們只需運行類似于 git reset eb43bf file.txt 的命令即可。依然用圖來說明:

以上是版本庫、Index 和工作目錄的狀態。

現在,執行git reset eb43 file.txt

壓縮提交(squashing commit)

假設你有一個項目,第一次提交中增加了文件 a,第二次提交增加了一個新的文件 b 并修改了 a,第三次提交再次修改了 a。如下圖:

你發現第二次和第三次提交其實是增加了一個軟件功能,把二者壓縮成一次提交更合理。那么可以這樣做:

首先,運行 git reset --soft HEAD~2 來將 HEAD 分支移動到一個舊一點的提交上(即你想要保留的最近一次提交):

然后,運行 git commit

現在你可以查看可到達的歷史,即將會推送的歷史,現在看起來有個 v1 版 file-a.txt 的提交,接著第二個提交將 file-a.txt 修改成了 v3 版并增加了 file-b.txt。 包含 v2 版本的文件已經不在歷史中了。




參考資料

《Pro Git》(Scott Chacon, Ben Straub Version 2.1.14, 2018-05-19)

總結

以上是生活随笔為你收集整理的git reset 命令详解(二)—— Git 学习笔记 08的全部內容,希望文章能夠幫你解決所遇到的問題。

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