0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

第一本Git命令教程(7.1)-清理之緩存

454398 ? 來源:alpha007 ? 作者:alpha007 ? 2022-12-05 17:39 ? 次閱讀

今天是 Git 系列課程第七課,上一課我們學(xué)會了查看 Git 本地歷史提交,今天痞子衡要講的是 Git 倉庫的清理操作,一共 4 個命令,都是日常開發(fā)中非常實(shí)用的命令,掌握這 4 個命令,會讓你有一種玩弄 Git 倉庫于股掌的感覺。

由于本節(jié)課是教程的核心課程,所以會分 4 小節(jié)課來講,第一講介紹 git stash

1. 緩存文件改動 git stash

試想一下你在使用 Git 時有沒有這樣的經(jīng)歷,你正在寫代碼(修改文件),但是代碼還沒有寫完善,沒達(dá)到提交的標(biāo)準(zhǔn),但是你知道了有另一個 team member 推送了一個提交,這個提交你需要立刻同步到你的本地,此時怎么辦?是的,你需要本地緩存你的改動。

1.1 緩存當(dāng)前改動 git stash [save -a "description"]

// 在 test.c 文件里增加一個 test_stash0()函數(shù) jay@pc MINGW64 /d/my_project/gittest (master)$ git diff app/test.c

diff --git a/app/test.c b/app/test.c
index 70dde01..38b763c 100644
--- a/app/test.c
+++ b/app/test.c
@@ -1,5 +1,8 @@
 #include 
 #include 
+void test_stash0(void)
+{
+}
 void test(void)
 {
     printf("this is test/n");

// 將增加 test_stash0()函數(shù)的改動緩存起來 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash save -a "add test_stash0()"

Saved working directory and index state On master: add test_stash0()

// 緩存之后查看 Git 空間很干凈,說明緩存成功 jay@pc MINGW64 /d/my_project/gittest (master)$ git status

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

nothing to commit, working tree clean

// 在 test.c 文件里再依次 test_stash1()、test_stash2()函數(shù),并依次緩存 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash save -a "add test_stash1()"

Saved working directory and index state On master: add test_stash1()

jay@pc MINGW64 /d/my_project/gittest (master)$ git stash save -a "add test_stash2()"

Saved working directory and index state On master: add test_stash2()

1.2 查看所有已緩存改動列表 git stash list

// 查看緩存 list,此時顯示共有三次緩存 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list

stash@{0}: On master: add test_stash2()
stash@{1}: On master: add test_stash1()
stash@{2}: On master: add test_stash0()

1.3 查看某個已緩存改動的具體細(xì)節(jié) git stash show -p [stash@{n}]

// 查看編號為 stash@{1} 的緩存的具體改動 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash show -p stash@{1}

diff --git a/app/test.c b/app/test.c
index 70dde01..4380571 100644
--- a/app/test.c
+++ b/app/test.c
@@ -1,5 +1,8 @@
 #include 
 #include 
+void test_stash1(void)
+{
+}
 void test(void)
 {
     printf("this is test/n");

1.4 恢復(fù)某個已緩存改動 git stash pop [stash@{n}]

現(xiàn)在我們需要從緩存區(qū)恢復(fù)某個已緩存改動,可以直接用 git stash pop 恢復(fù)最近的一次緩存,也可以用 git stash pop stash@{n} 恢復(fù)任意指定的一次緩存(也可以用 git stash pop apply stash@{n} 來恢復(fù)某個緩存,但是 apply 命令并不會將被恢復(fù)的緩存改動從緩存區(qū) list 里刪除)

// 將編號為 stash@{1} 的緩存恢復(fù) jay@pc MINGW64 /d/my_project/gittest (master)$ git stash pop stash@{1}

On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

        modified:   app/test.c

no changes added to commit (use "git add" and/or "git commit -a")
Dropped stash@{1} (62daecdc826586bb3c0cbe93c5f8d2e2697e9ea)

// 查看原編號為 stash@{1} 的緩存的具體改動,確實(shí)已正?;謴?fù) jay@pc MINGW64 /d/my_project/gittest (master)$ git diff app/test.c

diff --git a/app/test.c b/app/test.c
index 70dde01..38b763c 100644
--- a/app/test.c
+++ b/app/test.c
@@ -1,5 +1,8 @@
 #include 
 #include 
+void test_stash0(void)
+{
+}
 void test(void)
 {
     printf("this is test/n");

// 查看緩存 list 里被恢復(fù)的緩存"add test_stash1()"(原編號 stash@{1} 已被釋放)已不在 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list

stash@{0}: On master: add test_stash2()
stash@{1}: On master: add test_stash0()

1.5 丟棄某個已緩存改動 git stash drop [stash@{n}]

// 從緩存 list 里直接刪除編號為 stash@{1} 的緩存 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash drop stash@{1}

Dropped stash@{1} (2f5dd9a45f77bcb24cac247b8f88bdec157798f2)

// 查看緩存 list 里被刪除的緩存"add test_stash0()"(原編號 stash@{1} 已被釋放)已不在 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list

stash@{0}: On master: add test_stash2()

1.6 清空所有已緩存改動 git stash clear

// 清空緩存 list jay@pc MINGW64 /d/my_project/gittest (master)$ git stash clear

// 查看緩存 list,其已被清空 jay@pc MINGW64 /d/my_project/gittest (master)$ git stash list


審核編輯黃昊宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    15688
收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于Docker 的清理命令集錦

    這篇文章主要介紹了Docker 清理命令集錦,需要的朋友可以參考下 復(fù)制代碼代碼如下: docker kill $(docker ps -a -q) ?刪除所有已經(jīng)停止的容器 復(fù)制代碼代碼如下
    的頭像 發(fā)表于 06-13 15:56 ?206次閱讀

    通過git命令獲取ESP8266_RTOS_SDK失敗如何解決?

    本人使用的硬件平臺為esp8266,開發(fā)環(huán)境為ubuntu22.04。在通過git命令獲取ESP8266_RTOS_SDK失敗,通過上網(wǎng)搜索嘗試了很多方法無效。具體情況如下
    發(fā)表于 06-07 07:26

    飛凌ElfBoard ELF 1板卡-ubuntu18.04 git安裝及基本使用

    的名字\"git config --global user.email \"你的郵箱地址\" 4.把所有文件添加到緩存區(qū)git add . 5.提交緩存區(qū)的所有修改到倉庫
    發(fā)表于 03-21 16:23

    【RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】一本別出心裁的RISC-V架構(gòu)之書(第一章)

    【RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】一本別出心裁的RISC-V架構(gòu)之書(第一章) 申請這本書的時候就看到了書評中有幾點(diǎn)吸引我,讓我希望拜讀下: 本書的作者是RISC-V架構(gòu)的作者、著名
    發(fā)表于 01-24 19:06

    【RISC-V開放架構(gòu)設(shè)計(jì)之道|閱讀體驗(yàn)】學(xué)習(xí)處理器體系架構(gòu)的一本好書

    并不是一本簡單羅列指令的書籍,而是一本全面介紹指令設(shè)計(jì)理念的書籍。書籍的內(nèi)容充分反映了最新的計(jì)算機(jī)指令設(shè)計(jì)的理念,這是我推薦該書的最主要理由。 為提升該書的趣味性,作者在頁邊加入約 50 段花絮,用于
    發(fā)表于 01-23 20:08

    越來越慢了,蘋果筆記清理內(nèi)存怎么清理

    如果你的蘋果筆記開始變得越來越慢,那么清理內(nèi)存可能是個解決問題的好辦法。大量的垃圾文件和不必要的數(shù)據(jù),這些都會對性能產(chǎn)生負(fù)面影響。但是,不用擔(dān)心!本文將詳細(xì)介紹蘋果筆記
    的頭像 發(fā)表于 12-26 13:10 ?873次閱讀
    越來越慢了,蘋果筆記<b class='flag-5'>本</b><b class='flag-5'>清理</b>內(nèi)存怎么<b class='flag-5'>清理</b>

    《Linux常用命令自學(xué)手冊》+一本手邊linux速查字典

    ,即使不能時都記住,本書也可以作為辦公桌邊隨時查閱的工具書。 我手頭有一本也是《linux命令速查手冊》,16K的很厚一本,和本書對比了
    發(fā)表于 12-26 08:46

    Git命令解決常見場景記錄

    不需要這些文件了,想要批量處理掉,所以記錄下用命令次性丟棄未跟蹤文件的方法,同時也記錄下撤銷push請求的git記錄。
    的頭像 發(fā)表于 12-20 09:44 ?327次閱讀
    用<b class='flag-5'>Git</b><b class='flag-5'>命令</b>解決常見場景記錄

    Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

    的遠(yuǎn)程分支被刪除了,那么就會出現(xiàn)你無法使用git pull,和git push命令。使用個例子說明這個場景。 我們可以使用下面的命令查看自
    的頭像 發(fā)表于 12-15 09:27 ?2190次閱讀
    <b class='flag-5'>Git</b><b class='flag-5'>命令</b>之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

    《Linux常用命令自學(xué)手冊》+試讀報告

    之作。 個人收獲 《Linux常用命令自學(xué)手冊》是一本非常實(shí)用的書籍,它詳細(xì)介紹了Linux系統(tǒng)中的常用命令及其用法。通過閱讀這本書,我不僅深入了解了Linux命令行的基本操作,還掌握
    發(fā)表于 12-14 16:59

    git命令的基本使用

    git config 第一次使用git或者剛安裝的git時,使用此命令設(shè)置身份Name 和 Eamail 地址。并且每次提交時會使用此信息。
    的頭像 發(fā)表于 12-11 13:53 ?806次閱讀

    mybatis緩存和二級緩存的原理

    MyBatis是種輕量級的持久化框架,它提供了緩存和二級緩存的機(jī)制來優(yōu)化數(shù)據(jù)庫操作性能。緩存
    的頭像 發(fā)表于 12-03 11:55 ?893次閱讀

    Git中最常用的命令介紹

    git add命令用于將修改的文件添加到下次提交的暫存區(qū)。你可以指定要添加的文件git add命令用于將修改的文件添加到下
    發(fā)表于 10-26 10:27 ?182次閱讀
    <b class='flag-5'>Git</b>中最常用的<b class='flag-5'>命令</b>介紹

    Git常用的超級實(shí)用命令

    Git工作流。 1 Git 常用的超級實(shí)用命令 1.1 與倉庫相關(guān)的操作 克隆代碼倉庫到本地,開發(fā)必用 git clone 查看本地倉
    的頭像 發(fā)表于 10-09 17:19 ?1063次閱讀
    <b class='flag-5'>Git</b>常用的超級實(shí)用<b class='flag-5'>命令</b>

    如何在 Git 中恢復(fù)隱藏的修改記錄

    git stash 和 git stash pop 這樣的命令是用來擱置(藏匿)和恢復(fù)我們工作目錄中的變化的。在教程中,我們將學(xué)習(xí)如何在 Gi
    的頭像 發(fā)表于 10-09 14:09 ?813次閱讀