【Git 暫存操作指南2】

Git 暫存操作指南

在日常的 Git 使用場景中,我們常常會遇到各種復雜的情況,需要巧妙運用 Git 的功能來實現高效開發與代碼管理。接下來,我們將深入探討一個具體的開發實例,以及如何通過暫存功能完美解決其中的問題。

一、開發場景描述

當前,我們從遠程拉取了項目分支,本地同樣擁有與之對應的分支。在此基礎上,我們創建了一個特性分支用于專項開發。在特性分支的開發進程中,涉及對多個文件的操作,例如對 a 文件和 b 文件進行了多次修改,并且還有其他一系列文件也在不同階段有所變動。

此時,我們面臨的問題是:一方面,不想在每次提交時都將所有修改過的文件一股腦兒提交上去,而是希望有選擇性地控制提交內容;另一方面,在特性分支開發完成后,需要安全、準確地將成果合并回本地分支,并順利推送到遠程,同時確保整個過程中特性分支的修改不會對其他地方造成不必要的影響,并且在后續還能靈活地處理之前暫存的文件修改。

二、暫存操作詳解

(一)暫存單個或多個文件的某次修改

  1. 指定文件名暫存
    • 當需要暫存特定文件,如 a 文件和 b 文件時,可使用以下命令:
git stash push -m "第一次修改 a 和 b 文件" a b

這會將 a 文件和 b 文件當前的修改狀態保存到一個暫存記錄中,并添加自定義的描述信息,方便后續識別。

  • 但如果需要暫存的文件較多,逐個列出文件名就變得繁瑣。此時可以利用通配符:
    假設要暫存 src 目錄下所有 .js 文件的修改:
git stash push -m "第一次修改 src 目錄下的 js 文件" src/*.js

這樣就能一次性暫存符合條件的多個文件。
2. 交互式暫存部分文件修改

  • 執行 git add -p 命令,Git 會逐塊顯示文件的修改內容,此時可以根據提示選擇是否暫存每個文件塊。例如:
# 交互式選擇要暫存的文件塊
git add -p
# 將暫存區的內容暫存起來
git stash push -m "第一次修改的部分文件"

通過這種方式,可以精細地選擇要暫存的文件部分,而非整個文件。

(二)查看暫存列表

使用 git stash list 命令可以查看所有的暫存記錄,輸出結果類似下面這樣:

stash@{0}: On <特性分支名>: 第二次修改 a 和 b 文件
stash@{0}: On <特性分支名>: 第一次修改 a 和 b 文件

每個暫存記錄都有對應的索引(如 stash@{0}stash@{1} 等),方便后續操作時指定。

(三)切換到指定的暫存記錄

如果想應用某一次的修改,可以使用 git stash apply 命令。

  1. 應用第一次修改
git stash apply stash@{1}
  1. 應用第二次修改
git stash apply stash@{0}

應用暫存記錄后,相關文件的修改就會恢復到工作區,可按需進行提交等操作。

三、提交與合并流程

(一)提交修改

當應用了指定的暫存記錄后,若想提交這些修改,可按如下操作:

# 添加 a 文件和 b 文件到暫存區
git add a b
# 提交修改
git commit -m "提交 a 和 b 文件的指定修改"

這里的文件名根據實際情況替換,如果是使用通配符暫存的文件,一般添加相應的目錄或符合通配符條件的文件即可。

(二)切換回本地分支并合并特性分支

提交完成后,切換回原來的本地分支,并將特性分支的修改合并過來。

# 切換回本地分支
git checkout <本地分支名>
# 合并特性分支到本地分支
git merge <特性分支名>

(三)推送到遠程倉庫

合并完成后,將本地分支的修改推送到遠程倉庫。

# 推送到遠程倉庫
git push origin <本地分支名>

(四)拉取最新代碼

推送完成后,拉取遠程倉庫的最新代碼,確保本地和遠程倉庫同步。

# 拉取最新代碼
git pull origin <本地分支名>

四、清理暫存記錄(可選)

如果不再需要某些暫存記錄,可以使用 git stash drop 命令將其刪除。

  1. 刪除第一次修改的暫存記錄
git stash drop stash@{1}
  1. 刪除第二次修改的暫存記錄
git stash drop stash@{0}

通過合理利用 Git 的暫存功能,能夠在復雜的開發流程中,精準地管理文件修改狀態,確保代碼提交的準確性與靈活性,提升開發效率。在面對類似的復雜開發場景時,按照上述步驟操作,就能輕松駕馭 Git,讓開發工作有條不紊地進行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73622.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73622.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73622.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

華為hcia——Datacom實驗指南——配置IPv4靜態路由,默認路由和浮動靜態路由

什么是IPv4 IPv4靜態路由&#xff0c;是手動配置的&#xff0c;不會隨著網絡拓撲的變化而變化&#xff0c;所配置的路由信息也不會在網絡中傳播&#xff0c;所以它主要運用在小型網絡或者作為動態路由的補充。 IPv4的配置 配置的命令很簡單 IP route-static &#xff08;目…

Linux一步部署主DNS服務器

? #!/bin/bash #部署DHCP服務 #userli 20250319if [ "$USER" ! "root" ]then echo"錯誤&#xff1a;非root用戶&#xff0c;權限不足&#xff01;"exit 0fi#防火墻與高級權限 systemctl stop firewalld && systemctl disable firewalld…

給AI裝“記憶U盤“:LangChain記憶持久化入門指南

&#x1f9e0; 什么是記憶持久化&#xff1f; 想象AI對話就像和朋友聊天&#xff1a; ?普通模式&#xff1a;每次重啟都忘記之前聊過什么?持久化模式&#xff1a;給AI配了個"記憶U盤"&#xff0c;聊天記錄永不丟失 核心組件三件套 #mermaid-svg-ORm8cbBXsaRy2sZ…

JumpServer:一款企業級開源堡壘機

在數字化運維時代&#xff0c;如何高效、安全地管控企業內部資產&#xff1f;JumpServer 作為一款完全開源的堡壘機&#xff0c;憑借其強大的 4A&#xff08;身份認證、授權控制、賬號管理、安全審計&#xff09;能力與靈活的架構設計&#xff0c;實現事前授權、事中監察、事后…

LangChain + PostgreSQL 實現向量數據庫與 RAG 搜索

1. 環境準備 安裝必要的庫 pip install langchain psycopg2-binary pgvector langchain-openai安裝并配置 PostgreSQL 安裝 PostgreSQL 確保 PostgreSQL 已正確安裝并運行。你可以根據操作系統的不同參考官方文檔進行安裝。 創建數據庫 創建一個新的數據庫&#xff08;例如 …

STM32硬件IIC與OLED使用

OLED屏幕介紹 OLED即有機發光管(Organic Light-Emitting Diode,OLED)。OLED顯示技術具有自發光、廣視角、幾乎無窮高的對比度、較低功耗、極高反應速度、可用于繞曲性面板、使用溫度范圍廣、構造及制程簡單等有點&#xff0c;被認為是下一代的平面顯示屏新興應用技術 OLED顯示…

idea自動生成注釋

idea 自動生成注釋 1 創建類時&#xff0c;自動生成注釋 模板代碼如下 /** * program: ${PROJECT_NAME} * * description: ${description} * * author: yun * * create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} **/ 2 在方法上使用快捷鍵生成注釋 先新建一個…

doris:恢復

前提條件? 確保您擁有管理員權限以執行恢復操作。確保您有一個有效的備份快照可供恢復&#xff0c;請參考備份。 1. 獲取快照的備份時間戳? 以下 SQL 語句可用于查看名為example_repo的 Repository 中的現有備份。 mysql> SHOW SNAPSHOT ON example_repo; -----------…

可視化圖解算法:刪除有序(排序)鏈表中重復的元素-II

1. 題目 描述 給出一個升序排序的鏈表&#xff0c;刪除鏈表中的所有重復出現的元素&#xff0c;只保留原鏈表中只出現一次的元素。 例如&#xff1a; 給出的鏈表為1→2→3→3→4→4→5, 返回1→2→5. 給出的鏈表為1→1→1→2→3 返回2→3. 數據范圍&#xff1a;鏈表長度 0≤…

【leetcode刷題日記】lc.53-最大子數組和

目錄 1.題目 2.代碼 1.題目 給你一個整數數組 nums &#xff0c;請你找出一個具有最大和的連續子數組&#xff08;子數組最少包含一個元素&#xff09;&#xff0c;返回其最大和。 子數組是數組中的一個連續部分。 示例 1&#xff1a; 輸入&#xff1a;nums [-2,1,-3,4,-…

樹莓派超全系列文檔--(7)RaspberryOS播放音頻和視頻

播放音頻和視頻 播放音頻和視頻VLC 媒體播放器vlc GUIvlc CLI使用 cvlc 在沒有圖形用戶界面的情況下播放媒體 在 Raspberry Pi OS Lite 上播放音頻和視頻指定音頻輸出設備指定視頻輸出設備同時指定音頻和視頻輸出設備提高數據流播放性能 文章來源&#xff1a; http://raspberr…

算法250327題目

1114: 4006 AB問題 題目描述 給定兩個整數A和B&#xff0c;其表示形式是&#xff1a;從個位開始&#xff0c;每三位數用逗號,隔開。 現在請計算AB的結果&#xff0c;并以正常形式輸出。 輸入 輸入包含多組數據&#xff0c;每組數據占一行&#xff0c;由兩個整數A和B組成&am…

Wireshark學習

Wireshark簡介 抓包前 1.打開wireshark得到下面的界面 2.選擇菜單欄上捕獲-> 選項&#xff0c;勾選WLAN網卡&#xff08;這里需要根據各自電腦網卡使用情況選擇&#xff0c;簡單的辦法可以看使用的IP對應的網卡&#xff09;。點擊開始。啟動抓包。 3.wireshark啟動后&am…

[OS_4] 數學視角 | 多狀態 | 模型檢查器 | 程序驗證(math)

程序 狀態機 gdb 單步執行 狀態遷移 狀態里有什么&#xff1f;gdb 可以打印有一些特殊的狀態遷移 硬件 狀態機 指令執行 狀態遷移 從 CPU Reset 開始執行 FirmwareFirmware 加載操作系統 (程序) 操作系統 狀態機 (毫無疑問) 程序是一種真正意義上的 “數學嚴格” 的…

互聯網的“神經中樞”域名根服務器是如何演變的?

互聯網如同一條隱形的紐帶&#xff0c;將全球數十億人的生活和工作緊密相連。而在這龐大的網絡體系中&#xff0c;域名根服務器則是支撐其平穩運行的“神經中樞”。那么域名根服務器是如何演變的呢&#xff1f; 一、域名根服務器互聯網的“地址簿” 想象一下&#xff0c;當你…

【sylar-webserver】6 IO協程調度模塊

文章目錄 設計知識點 設計 IO協程調度模塊&#xff0c;整個項目里最重要的模塊~ 和 協程調度模塊 相比&#xff0c;增加了 IO 事件的 觸發條件。 所以需要重新封裝 Event 事件&#xff0c; 通過 epoll_wait 監測觸發事件&#xff08;重新實現了idle&#xff09;&#xff0c;…

6.2、認證主要產品與應用

目錄 認證主要產品認證產品主要技術指標認證技術應用認證技術應用 - 校園網應用認證技術應用 - 網絡路由認證認證技術應用 - 用戶登錄設備認證技術應用 - 人臉識別門禁與eID 認證主要產品 應用認證產品主要形態有三種&#xff0c;硬件模式、軟件模式和軟硬相結合。硬件比如說認…

一套SaaS多租戶醫療云his源碼,基于云計算的醫院信息管理系統(云HIS)

基于云計算的醫院信息管理系統&#xff08;云HIS&#xff09;&#xff0c;通過SaaS服務模式提供。這種云HIS系統設計考慮了模板化、配置化、智能化和可擴展性&#xff0c;覆蓋了基層醫療機構的核心工作流程&#xff0c;并且能夠與監管系統無縫對接&#xff0c;滿足未來的擴展需…

人工智能技術全景圖譜:從基礎理論到前沿應用

人工智能技術全景圖譜&#xff1a;從基礎理論到前沿應用 一、AI發展歷程與學科體系 1.1 人工智能三大學派 符號主義&#xff08;Symbolicism&#xff09; 邏輯推理&#xff1a;一階謂詞邏輯知識表示&#xff1a;語義網絡、框架系統 連接主義&#xff08;Connectionism&#…

基于杜鵑鳥鯰魚優化(Cuckoo Catfish Optimizer,CCO)算法的多個無人機協同路徑規劃(可以自定義無人機數量及起始點),MATLAB代碼

一、杜鵑鳥鯰魚優化算法 杜鵑鳥鯰魚優化&#xff08;Cuckoo Catfish Optimizer&#xff0c;CCO&#xff09;算法模擬了杜鵑鳥鯰魚的搜索、捕食和寄生慈鯛行為。該算法的早期迭代側重于執行多維包絡搜索策略和壓縮空間策略&#xff0c;并結合輔助搜索策略來有效限制慈鰾的逃逸空…