Git 命令使用指南:從入門到進階

目錄

    • 1. Git 基本操作
      • 1.1 添加文件到暫存區
      • 1.2 提交更改到本地倉庫
      • 1.3 查看工作區狀態
      • 1.4 查看提交歷史
      • 1.5 查看引用日志(包括已刪除的記錄)
    • 2. 版本回退與撤銷
      • 2.1 版本回退
      • 2.2 查看已刪除的提交記錄
    • 3. 分支管理
      • 3.1 查看分支
      • 3.2 創建并切換到新分支
      • 3.3 合并分支
      • 3.4 刪除分支
    • 4. 分支命名規范與用途
    • 5. 忽略文件管理
      • 5.1 創建 .gitignore 文件
    • 6. 遠程倉庫操作
      • 6.1 生成 SSH 公鑰
      • 6.2 查看公鑰
      • 6.3 添加遠程倉庫
      • 6.4 拉取遠程倉庫代碼
    • 7. 常見問題與解決方案
      • 7.1 如何解決合并沖突?
      • 7.2 如何撤銷已提交的更改?
      • 7.3 如何查看遠程倉庫信息?
    • 8. 總結

Git 是一個功能強大且廣泛使用的版本控制工具,適用于個人項目和團隊協作。本文整理并補充了常見的 Git 命令,涵蓋基本操作、分支管理、版本回退、忽略文件配置、遠程倉庫操作等內容,幫助你更高效地使用 Git 管理代碼。無論你是初學者還是有一定經驗的開發者,這篇指南都能為你提供清晰且實用的參考。


1. Git 基本操作

1.1 添加文件到暫存區

git add .
  • 作用:將當前工作目錄下的所有更改(包括新建、修改、刪除的文件)添加到暫存區。
  • 說明git add . 會遞歸添加當前目錄及其子目錄下的所有更改。如果只想添加特定文件,可以使用 git add 文件名

1.2 提交更改到本地倉庫

git commit -m "提交信息"
  • 作用:將暫存區的更改提交到本地倉庫,并附上描述性的提交信息。
  • 注意
    • 提交信息應簡潔明了,清晰描述本次提交的內容,例如 git commit -m "Add user login feature"
    • 如果提交信息為空,Git 會提示錯誤,建議始終提供有意義的提交信息。

1.3 查看工作區狀態

git status
  • 作用:顯示當前工作目錄和暫存區的狀態,告訴你哪些文件被修改、暫存或未跟蹤。
  • 使用場景
    • 檢查哪些文件需要 git addgit commit
    • 確認當前分支和工作區是否干凈。

1.4 查看提交歷史

git log
  • 作用:顯示當前分支的提交歷史,包括提交的哈希值(commit ID)、作者、日期和提交信息。
  • 進階用法
    • git log --oneline:以單行形式顯示提交歷史,簡潔明了。
    • git log --graph:以圖形化方式顯示分支合并歷史。
    • git log --author="用戶名":篩選特定作者的提交記錄。

1.5 查看引用日志(包括已刪除的記錄)

git reflog
  • 作用:顯示所有引用操作的歷史記錄,包括提交、分支切換、版本回退等,即使某些提交已經被刪除。
  • 使用場景
    • 找回被 git reset 刪除的提交。
    • 查看分支的歷史操作記錄。
  • 示例
    git reflog
    # 輸出示例:
    # abc1234 HEAD@{0}: reset: moving to abc1234
    # def5678 HEAD@{1}: commit: Add new feature
    
    通過 git reset --hard abc1234 可以恢復到指定的引用狀態。

2. 版本回退與撤銷

2.1 版本回退

git reset --hard commitID
  • 作用:將當前分支的 HEAD 指針重置到指定的 commitID,并丟棄該提交之后的所有更改(包括工作區和暫存區)。
  • 注意
    • --hard 是危險操作,會徹底丟棄未保存的更改,建議先用 git status 確認工作區干凈。
    • 如果需要保留工作區和暫存區的更改,可以使用 git reset --soft commitID
  • 使用場景:撤銷錯誤的提交或回退到某個歷史版本。

2.2 查看已刪除的提交記錄

如前所述,git reflog 是查看已刪除提交的利器。通過 reflog,你可以找到被 git reset 或其他操作刪除的提交的 commitID,然后通過 git reset --hard commitID 恢復。


3. 分支管理

3.1 查看分支

git branch
  • 作用:列出本地倉庫中的所有分支,當前分支前會有一個 * 標記。
  • 進階用法
    • git branch -r:查看遠程分支。
    • git branch -a:查看本地和遠程所有分支。

3.2 創建并切換到新分支

git checkout -b dev
  • 作用:創建名為 dev 的新分支,并立即切換到該分支。
  • 等價操作
    git branch dev      # 創建分支
    git checkout dev    # 切換到分支
    

3.3 合并分支

git merge 分支名
  • 作用:將指定分支(分支名)的更改合并到當前分支。
  • 操作步驟
    1. 切換到目標分支(例如 git checkout master)。
    2. 執行合并(例如 git merge dev)。
  • 注意
    • 如果有沖突,Git 會暫停合并,提示解決沖突。
    • 解決沖突后,需手動 git addgit commit 完成合并。

3.4 刪除分支

git branch -d b1
  • 作用:刪除已合并的分支 b1
  • 注意:如果分支未合并,Git 會阻止刪除,需使用強制刪除:
    git branch -D b1
    
  • 強制刪除:直接刪除分支 b1,無論是否已合并,謹慎使用。

4. 分支命名規范與用途

合理的分支命名和使用策略可以提高團隊協作效率。以下是常見的 Git 分支模型:

  • master:生產分支,包含可部署到生產環境的穩定代碼。
  • develop:開發分支,集成所有開發功能,供測試和驗證。
  • feature/xxxx:功能分支,用于開發新功能,完成后合并到 develop 分支。命名示例:feature/user-auth
  • hotfix/xxxx:修復分支,用于修復生產環境的緊急 bug,完成后合并到 masterdeveloptest 分支。命名示例:hotfix/login-bug

5. 忽略文件管理

5.1 創建 .gitignore 文件

.gitignore
  • 作用:通過 .gitignore 文件指定不被 Git 跟蹤的文件或目錄。

  • 常見忽略內容

    • 臨時文件:*.log.DS_Store
    • 依賴目錄:node_modules/venv/
    • 配置文件:.envconfig.secret.yaml
  • 示例 .gitignore 文件

    # 忽略日志文件
    *.log
    # 忽略 node_modules 目錄
    node_modules/
    # 忽略環境配置文件
    .env
    
  • 注意

    • .gitignore 文件需提交到 Git 倉庫,以確保團隊共享忽略規則。
    • 如果文件已被 Git 跟蹤,需先執行以下命令移除跟蹤:
      git rm -r --cached 文件名
      

6. 遠程倉庫操作

6.1 生成 SSH 公鑰

ssh-keygen -t rsa
  • 作用:生成 SSH 密鑰對,用于安全連接遠程 Git 倉庫(如 GitHub、GitLab)。
  • 步驟
    1. 運行命令,按提示設置保存路徑和密碼(可直接回車使用默認設置)。
    2. 默認生成文件:~/.ssh/id_rsa(私鑰)和 ~/.ssh/id_rsa.pub(公鑰)。

6.2 查看公鑰

cat ~/.ssh/id_rsa.pub
  • 作用:顯示公鑰內容,復制后添加到遠程倉庫(如 GitHub 的 SSH Keys 設置)。
  • 注意:確保公鑰正確添加到遠程倉庫,否則無法通過 SSH 推送代碼。

6.3 添加遠程倉庫

git remote add origin git@<倉庫地址>
  • 作用:將本地倉庫與遠程倉庫關聯,origin 是遠程倉庫的默認別名。
  • 示例
    git remote add origin git@github.com:username/repository.git
    

6.4 拉取遠程倉庫代碼

git pull
  • 作用:從遠程倉庫拉取最新代碼并合并到當前分支。
  • 等價操作
    git fetch origin
    git merge origin/分支名
    
  • 注意:如果本地和遠程分支沖突,需先解決沖突。

7. 常見問題與解決方案

7.1 如何解決合并沖突?

  1. 執行 git merge 分支名 時,如果出現沖突,Git 會標記沖突文件。
  2. 打開沖突文件,手動修改沖突部分(通常以 <<<<<<<=======>>>>>>> 標記)。
  3. 解決沖突后,執行:
    git add .
    git commit
    

7.2 如何撤銷已提交的更改?

  • 如果想撤銷最后一次提交,但保留更改:
    git reset --soft HEAD^1
    
  • 如果想徹底撤銷提交并丟棄更改:
    git reset --hard HEAD^1
    

7.3 如何查看遠程倉庫信息?

git remote -v
  • 作用:顯示當前倉庫關聯的遠程倉庫地址。

8. 總結

通過以上命令和規范,你可以輕松管理 Git 倉庫,實現代碼版本控制、分支協作和遠程同步。以下是快速參考表:

命令作用
git add .添加所有更改到暫存區
git commit -m "信息"提交更改到本地倉庫
git status查看工作區狀態
git log查看提交歷史
git reflog查看引用日志(包括已刪除記錄)
git reset --hard commitID回退到指定版本
git branch查看分支
git checkout -b 分支名創建并切換到新分支
git merge 分支名合并指定分支到當前分支
git branch -d 分支名刪除已合并分支
git branch -D 分支名強制刪除分支
git pull拉取遠程倉庫代碼
git remote add origin 地址添加遠程倉庫

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

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

相關文章

SQL數據庫連接Python實戰:疫情數據指揮中心搭建指南

SQL數據庫連接Python實戰&#xff1a;疫情數據指揮中心搭建指南從WHO數據集到實時儀表盤&#xff0c;構建工業級疫情監控系統一、疫情數據指揮中心&#xff1a;全球健康危機的中樞神經??疫情數據價值??&#xff1a;全球每日新增病例&#xff1a;50萬疫苗接種數據&#xff1…

參賽單位條件放寬!2025年“數據要素 ×”大賽福建分賽廈門賽區賽事有新調整

各位伙伴們 想抓住數據價值機遇 在行業賽場上嶄露頭角嗎&#xff1f; 2025年“數據要素”大賽 福建分賽廈門賽區已啟動 這份超全賽事解讀 帶你一站式摸清參賽關鍵&#xff01; 01 參賽單位要求放寬 經省分賽組委會與國家賽事組委會溝通&#xff0c;不具有獨立法人資格的…

BasicAuthenticationFilter處理 HTTP 基本認證(Basic Authentication)的核心過濾器詳解

BasicAuthenticationFilter處理 HTTP 基本認證&#xff08;Basic Authentication&#xff09;的核心過濾器詳解在 Spring Security 中&#xff0c;BasicAuthenticationFilter 是??處理 HTTP 基本認證&#xff08;Basic Authentication&#xff09;的核心過濾器??&#xff0…

Next.js 中使用 MongoDB 完整指南

1. 安裝依賴npm install mongodb # 或者使用 mongoose&#xff08;ODM&#xff09; npm install mongoose2. 數據庫連接配置使用原生 MongoDB 驅動創建 lib/mongodb.js 文件&#xff1a;import { MongoClient } from mongodbconst uri process.env.MONGODB_URI const options …

嵌入式系統教學范式演進:云端仿真平臺如何重構溫濕度監測實驗教學

在嵌入式系統開發的教學中&#xff0c;環境溫濕度監測實驗是經典的入門項目。它涉及傳感器原理、外設驅動、數據采集和通信協議等核心知識點。然而傳統實驗模式面臨硬件成本高、調試周期長、設備易損壞等痛點。學生往往因接線錯誤或代碼bug導致傳感器或開發板燒毀&#xff0c;不…

1.6萬 Star 的流行容器云平臺停止開源

什么是 KubeSphere &#xff1f; KubeSphere 是面向云原生應用的容器混合云。 KubeSphere 愿景是打造一個以 Kubernetes 為內核的云原生分布式操作系統&#xff0c;它的架構可以非常方便地使第三方應用與云原生生態組件進行即插即用&#xff08;plug-and-play&#xff09;的集成…

廣東省省考備考(第六十三天8.1)——資料分析、數量(強化訓練)

資料分析 錯題解析解析解析今日題目正確率&#xff1a;80% 數量關系&#xff1a;數學運算 錯題解析解析標記題解析解析解析今日題目正確率&#xff1a;87%

Agents-SDK智能體開發[3]之多Agent執行流程

文章目錄說明Agents SDK基礎Handoffs功能實現Handoffs簡單示例&#x1f31f; 運行結果整理&#x1f4dd; 執行過程概述&#x1f4cb; 運行結果事件一&#xff1a;分診智能體創建轉交請求事件事件二&#xff1a;轉交響應事件事件三&#xff1a;目標 Agent 響應請求并完成任務改進…

深度揭秘端口映射:原理、場景、路由映射故障,與內網IP端口映射外網工具的選擇

內網設備連不上外網&#xff1f;本地網絡如何設置端口映射提供互聯網服務&#xff1f;路由器端口映射失敗怎么辦&#xff1f;沒有公網IP如何做端口映射&#xff1f;在網絡通信領域&#xff0c;端口映射是一項至關重要的技術。在內部網絡環境中&#xff0c;每一臺設備都被分配了…

協作機器人掀起工廠革命:碼垛場景如何用數據重塑制造業命脈?

在長三角某食品包裝工廠的深夜生產線上&#xff0c;大視協作碼垛機器人正在有序碼垛&#xff0c;動作比碼垛老師傅更精準。系統推送的實時能耗報表直接顯示在廠長手機上&#xff0c;整廠能耗同比下降約32%。這不是魔法&#xff0c;這是"一切數據業務化、業務數據化"在…

LeetCode 刷題【24. 兩兩交換鏈表中的節點、25. K 個一組翻轉鏈表】

24. 兩兩交換鏈表中的節點 自己做 解&#xff1a;直接置換 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(i…

多線程向設備發送數據

需求:做一個部門授權&#xff0c;可以把所選擇部門下面的所有人的人臉信息傳到設備組里(多個設備)&#xff0c;問題在于圖片是通過Base64處理之后的&#xff0c;會導致文件名非常長&#xff0c;如果一次性傳很多數據就會超過設備的最長請求長度&#xff0c;如果不用Base64處理的…

Buck的Loadline和DVS區別和聯系

Buck 電路設計中&#xff0c;有兩個概念&#xff0c;一個是Load-Line&#xff0c;一個是DVS&#xff0c;它們的含義是什么呢。 Load-Line&#xff08;也稱為有源電壓定位&#xff0c;AVP&#xff09;是通過調整BUCK電路的輸出電壓&#xff0c;使其根據負載電流動態變化的技術。…

MySQL會話連接數消耗內存分析

關于連接數消耗內存情況 FROM DEEPSEEK 在 MySQL 中&#xff0c;每個單獨的空閑連接所消耗的內存量取決于多個因素&#xff0c;包括連接的線程棧大小&#xff08;由 thread_stack 參數設置&#xff09;和其他每個連接的緩沖區。根據測試結果來看&#xff0c;對于空閑連接的內…

Objective-C實現調節筆記本屏幕亮度(附完整源碼)

Objective-C實現調節筆記本屏幕亮度 在macOS上,您可以使用Objective-C來調節筆記本的屏幕亮度。以下是一個簡單的示例,演示如何使用CoreGraphics框架來實現這一功能。請確保您的Xcode項目中包含CoreGraphics框架。 完整源碼示例 #import <Cocoa/Cocoa.h> #import <…

三十一、【Linux網站服務器】搭建httpd服務器演示個人主頁、用戶認證、https加密網站配置

httpd服務器功能演示一、安裝 HTTPD 服務二、配置個人用戶主頁1. 啟用個人空間功能2. 創建測試用戶及網站目錄3. 配置 SELinux 權限三、配置用戶認證1. 創建密碼文件2. 配置目錄認證3. 重啟服務生效四、配置 SSL 加密網站1. 生成自簽名證書2. 配置 SSL 虛擬主機3. 重啟服務驗證…

把Java程序部署到本地Docker

一&#xff1a;clean && install程序install之后會在target中生成jar包 二&#xff1a;準備三個文件&#xff08;1&#xff09;其中Dockerfile主要起到配置作用&#xff1a;# 基礎鏡像 FROM openjdk:17-jdk-slim # 作者 MAINTAINER "" # 配置 ENV PAR…

Java學習-------外觀模式

在軟件開發中&#xff0c;隨著系統的不斷迭代&#xff0c;模塊會越來越多&#xff0c;模塊之間的依賴關系也會變得錯綜復雜。這不僅會增加開發難度&#xff0c;還會讓系統的維護和擴展變得棘手。而外觀模式就像一位 “前臺接待員”&#xff0c;為復雜的系統提供一個簡潔統一的接…

Go語言-->變量

Go語言–>變量 在 Go 語言中&#xff0c;定義變量有幾種常見的方式。下面是一些常見的語法和用法&#xff1a; 1. 使用 var 關鍵字定義變量 最常見的方式是使用 var 關鍵字&#xff0c;后面跟上變量名和類型。你也可以為變量賦初值。 基本格式&#xff1a; var variableName…

分布式鏈路追蹤的實現原理

分布式鏈路追蹤系統的實現涉及多個核心技術環節&#xff0c;下面我將從數據采集、上下文傳播、存儲分析等維度深入解析其工作原理。 一、核心架構組件 1. 系統組成模塊 #mermaid-svg-pDlZY54w2Z0Bp1H1 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-si…