日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
gitstash命令實用指南

學(xué)習(xí)如何使用 git stash 命令,以及何時應(yīng)該使用它。

創(chuàng)新互聯(lián)服務(wù)緊隨時代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過十多年的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實施團隊以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進(jìn)行成都網(wǎng)站建設(shè)、做網(wǎng)站、建設(shè)、維護(hù)、更新和改版,實現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

版本控制是軟件開發(fā)人員日常生活中不可分割的一部分。很難想象有哪個團隊在開發(fā)軟件時不使用版本控制工具。同樣也很難想象有哪個開發(fā)者沒有使用過(或沒有聽說過)Git。在 2018 年 Stackoverflow 開發(fā)者調(diào)查中,74298 名參與者中有 87.2% 的人 使用 Git 進(jìn)行版本控制。

Linus Torvalds 在 2005 年創(chuàng)建了 Git 用于開發(fā) Linux 內(nèi)核。本文將介紹 git stash 命令,并探討一些有用的暫存變更的選項。本文假定你對 Git 概念 有基本的了解,并對工作樹、暫存區(qū)和相關(guān)命令有良好的理解。

為什么 git stash 很重要?

首先要明白為什么在 Git 中暫存變更很重要。假設(shè) Git 沒有暫存變更的命令。當(dāng)你正在一個有兩個分支(A 和 B)的倉庫上工作時,這兩個分支已經(jīng)分叉了一段時間,并且有不同的頭。當(dāng)你正在處理 A 分支的一些文件時,你的團隊要求你修復(fù) B 分支的一個錯誤。你迅速將你的修改保存到 A 分支(但沒有提交),并嘗試用 git checkout B 來簽出 B 分支。Git 會立即中止了這個操作,并拋出錯誤:“你對以下文件的本地修改會被該簽出覆蓋……請在切換分支之前提交你的修改或?qū)⑺鼈儠捍嫫饋怼!?/p>

在這種情況下,有幾種方法可以啟用分支切換:

  • 在分支 A 中創(chuàng)建一個提交,提交并推送你的修改,以修復(fù) B 中的錯誤,然后再次簽出 A,并運行 git reset HEAD^ 來恢復(fù)你的修改。
  • 手動保留不被 Git 跟蹤的文件中的改動。

第二種方法是個餿主意。第一種方法雖然看起來很傳統(tǒng),但卻不太靈活,因為保存未完成工作的修改會被當(dāng)作一個檢查點,而不是一個仍在進(jìn)行中的補丁。這正是設(shè)計 git stash 的場景。

git stash 將未提交的改動保存在本地,讓你可以進(jìn)行修改、切換分支以及其他 Git 操作。然后,當(dāng)你需要的時候,你可以重新應(yīng)用這些存儲的改動。暫存是本地范圍的,不會被 git push 推送到遠(yuǎn)程。

如何使用 git stash

下面是使用 git stash 時要遵循的順序:

  1. 將修改保存到分支 A。
  2. 運行 git stash。
  3. 簽出分支 B。
  4. 修正 B 分支的錯誤。
  5. 提交并(可選)推送到遠(yuǎn)程。
  6. 查看分支 A
  7. 運行 git stash pop 來取回你的暫存的改動。

git stash 將你對工作目錄的修改存儲在本地(在你的項目的 .git 目錄內(nèi),準(zhǔn)確的說是 /.git/refs/stash),并允許你在需要時檢索這些修改。當(dāng)你需要在不同的上下文之間切換時,它很方便。它允許你保存以后可能需要的更改,是讓你的工作目錄干凈同時保持更改完整的最快方法。

如何創(chuàng)建一個暫存

暫存你的變化的最簡單的命令是 git stash

 
 
 
  1. $ git stash
  2. Saved working directory and index state WIP on master; d7435644 Feat: configure graphql endpoint

默認(rèn)情況下,git stash 存儲(或稱之為“暫存”)未提交的更改(已暫存和未暫存的文件),并忽略未跟蹤和忽略的文件。通常情況下,你不需要暫存未跟蹤和忽略的文件,但有時它們可能會干擾你在代碼庫中要做的其他事情。

你可以使用附加選項讓 git stash 來處理未跟蹤和忽略的文件:

  • git stash -u 或 git stash --includ-untracked 儲存未追蹤的文件。
  • git stash -a 或 git stash --all 儲存未跟蹤的文件和忽略的文件。

要存儲特定的文件,你可以使用 git stash -p 或 git stash -patch 命令:

 
 
 
  1. $ git stash --patch
  2. diff --git a/.gitignore b/.gitignore
  3. index 32174593..8d81be6e 100644
  4. --- a/.gitignore
  5. +++ b/.gitignore
  6. @@ -3,6 +3,7 @@
  7.  # dependencies
  8.  node_modules/
  9.  /.pnp
  10. +f,fmfm
  11.  .pnp.js
  12.  # testing
  13. (1/1) Stash this hunk [y,n,q,a,d,e,?]?

列出你的暫存

你可以用 git stash list 命令查看你的暫存。暫存是后進(jìn)先出(LIFO)方式保存的:

 
 
 
  1. $ git stash list
  2. stash@{0}: WIP on master: d7435644 Feat: configure graphql endpoint

默認(rèn)情況下,暫存會顯示在你創(chuàng)建它的分支和提交的頂部,被標(biāo)記為 WIP。然而,當(dāng)你有多個暫存時,這種有限的信息量并沒有幫助,因為很難記住或單獨檢查它們的內(nèi)容。要為暫存添加描述,可以使用命令 git stash save

 
 
 
  1. $ git stash save "remove semi-colon from schema"
  2. Saved working directory and index state On master: remove semi-colon from schema
  3. $ git stash list
  4. stash@{0}: On master: remove semi-colon from schema
  5. stash@{1}: WIP on master: d7435644 Feat: configure graphql endpoint

檢索暫存起來的變化

你可以用 git stash apply 和 git stash pop 這兩個命令來重新應(yīng)用暫存的變更。這兩個命令都會重新應(yīng)用最新的暫存(即 stash@{0})中的改動。apply 會重新應(yīng)用變更;而 pop 則會將暫存的變更重新應(yīng)用到工作副本中,并從暫存中刪除。如果你不需要再次重新應(yīng)用被暫存的更改,則選擇 pop。

你可以通過傳遞標(biāo)識符作為最后一個參數(shù)來選擇你想要彈出或應(yīng)用的儲藏:

 
 
 
  1. $ git stash pop stash@{1}

 
 
 
  1. $ git stash apply stash@{1}

清理暫存

刪除不再需要的暫存是好的習(xí)慣。你必須用以下命令手動完成:

  • git stash clear 通過刪除所有的暫存庫來清空該列表。
  • git stash drop  從暫存列表中刪除一個特定的暫存。

檢查暫存的差異

命令 git stash show  允許你查看一個暫存的差異:

 
 
 
  1. $ git stash show stash@{1}
  2. console/console-init/ui/.graphqlrc.yml        |   4 +-
  3. console/console-init/ui/generated-frontend.ts | 742 +++++++++---------
  4. console/console-init/ui/package.json          |   2 +-

要獲得更詳細(xì)的差異,需要傳遞 --patch 或 -p 標(biāo)志:

 
 
 
  1. $ git stash show stash@{0} --patch
  2. diff --git a/console/console-init/ui/package.json b/console/console-init/ui/package.json
  3. index 755912b97..5b5af1bd6 100644
  4. --- a/console/console-init/ui/package.json
  5. +++ b/console/console-init/ui/package.json
  6. @@ -1,5 +1,5 @@
  7.  {
  8. - "name": "my-usepatternfly",
  9. + "name": "my-usepatternfly-2",
  10.   "version": "0.1.0",
  11.   "private": true,
  12.   "proxy": "http://localhost:4000"
  13. diff --git a/console/console-init/ui/src/AppNavHeader.tsx b/console/console-init/ui/src/AppNavHeader.tsx
  14. index a4764d2f3..da72b7e2b 100644
  15. --- a/console/console-init/ui/src/AppNavHeader.tsx
  16. +++ b/console/console-init/ui/src/AppNavHeader.tsx
  17. @@ -9,8 +9,8 @@ import { css } from "@patternfly/react-styles";
  18. interface IAppNavHeaderProps extends PageHeaderProps {
  19. - toolbar?: React.ReactNode;
  20. - avatar?: React.ReactNode;
  21. + toolbar?: React.ReactNode;
  22. + avatar?: React.ReactNode;
  23. }
  24. export class AppNavHeader extends React.Component<IAppNavHeaderProps>{
  25.   render()

簽出到新的分支

你可能會遇到這樣的情況:一個分支和你的暫存中的變更有分歧,當(dāng)你試圖重新應(yīng)用暫存時,會造成沖突。一個簡單的解決方法是使用 git stash branch  命令,它將根據(jù)創(chuàng)建暫存時的提交創(chuàng)建一個新分支,并將暫存中的修改彈出:

 
 
 
  1. $ git stash branch test_2 stash@{0}
  2. Switched to a new branch 'test_2'
  3. On branch test_2
  4. Changes not staged for commit:
  5. (use "git add ..." to update what will be committed)
  6. (use "git restore ..." to discard changes in working directory)
  7. modified: .graphqlrc.yml
  8. modified: generated-frontend.ts
  9. modified: package.json
  10. no changes added to commit (use "git add" and/or "git commit -a")
  11. Dropped stash@{0} (fe4bf8f79175b8fbd3df3c4558249834ecb75cd1)

在不打擾暫存參考日志的情況下進(jìn)行暫存

在極少數(shù)情況下,你可能需要創(chuàng)建一個暫存,同時保持暫存參考日志(reflog)的完整性。這些情況可能出現(xiàn)在你需要一個腳本作為一個實現(xiàn)細(xì)節(jié)來暫存的時候。這可以通過 git stash create 命令來實現(xiàn);它創(chuàng)建了一個暫存條目,并返回它的對象名,而不將其推送到暫存參考日志中:

 
 
 
  1. $ git stash create "sample stash"
  2. 63a711cd3c7f8047662007490723e26ae9d4acf9

有時,你可能會決定將通過 git stash create 創(chuàng)建的暫存條目推送到暫存參考日志:

 
 
 
  1. $ git stash store -m "sample stash testing.." "63a711cd3c7f8047662007490723e26ae9d4acf9"
  2. $ git stash list
  3. stash @{0}: sample stash testing..

結(jié)論

我希望你覺得這篇文章很有用,并學(xué)到了新的東西。


名稱欄目:gitstash命令實用指南
文章位置:http://www.dlmjj.cn/article/dpegicc.html