實習技能記錄【3】-----Git操作

1. Git是什么

Git 是一個分布式版本控制系統 (Distributed Version Control System, DVCS)。 它的核心目標是跟蹤文件的變化,讓你能夠隨時記錄、回溯、協作和管理你的項目。

2. 介紹

2.1 Git 工作區、暫存區、本地倉庫介紹

區域名稱英文名說明相關命令
工作區Working Directory你當前編輯的目錄,包含所有可見的項目文件git status, git checkout
暫存區Staging Area / Index暫時保存你準備提交的文件修改(git add 后進入)git add, git reset
本地倉庫Local Repository提交后的版本快照,存儲于 .git 目錄中git commit, git log
遠程倉庫(可選)Remote RepositoryGitHub、Gitee 等遠程平臺上的倉庫,用于多人協作git push, git pull

2.2 文件生命周期(狀態流轉)

編輯文件 → git add → git commit → git push
工作區     暫存區       本地倉庫      遠程倉庫

2.3 狀態變更圖示(簡單流程)

[工作區] --git add--> [暫存區] --git commit--> [本地倉庫] --git push--> [遠程倉庫]↑                               ↓                              ↑修改                         git reset HEAD file             git pull↑                                                           ↓
恢復(checkout)                                               拉取更新

3. 操作

指令說明示例
git status查看當前工作區和暫存區狀態git status
git add <file>將文件加入暫存區,準備提交git add main.c
git add .添加當前目錄下所有更改文件到暫存區git add .
git diff查看工作區和暫存區之間的差異(未暫存的修改)git diff
git diff --cached查看暫存區和最后一次 commit 的差異(已暫存未提交)git diff --cached
git commit -m "msg"提交暫存區內容到本地倉庫,并附帶提交說明git commit -m "fix bugs"
git log查看提交歷史記錄git log
git reset HEAD <file>從暫存區移除文件(但保留工作區更改)git reset HEAD main.c
git checkout -- <file>撤銷工作區修改,恢復成最后一次 commit 的內容git checkout -- main.c
git reset --soft HEAD~1撤銷最近一次 commit,保留更改在暫存區git reset --soft HEAD~1
git reset --mixed HEAD~1撤銷最近一次 commit,保留更改在工作區(默認方式)git reset --mixed HEAD~1
git reset --hard HEAD~1撤銷最近一次 commit,且清除所有更改(慎用!)git reset --hard HEAD~1
git log --oneline簡潔查看提交歷史(每條一行)git log --oneline
git reflog查看 HEAD 引用日志,找回丟失的提交git reflog
git stash暫存當前所有修改(保存工作進度)git stash
git stash pop恢復最近一次 stash 并刪除git stash pop
git stash apply應用最近一次 stash(不刪除)
git rm刪除工作區和暫存區的文件git rm file

4. 忽略文件

.gitignore
以下文件需要被忽略:

  • 系統或者軟件自動生成的文件
  • 編譯產生的中間文件和結果文件
  • 運行時生成日志文件、緩存文件、臨時文件
    涉及身份、密碼、口令、秘鑰等敏感文件

匹配規則:

按行從上到下匹配
# 代表注釋
* 匹配多個字符
? 匹配單個字符
[ ]表示匹配列表中的單個字符,比如:[abc] 表示a/b/c
** 表示匹配任意的中間目錄中括號可以使用短中線連接,比如:[0-9]表示任意一位數字,[a-z]表示任意一位小寫字
! 表示取反

示例

忽略所有的 .a 文件
但跟蹤所有的 lib.a,即便你在前面忽略了.a 文件
!lib.a
只忽略當前目錄下的TOD0 文件,而不忽略subdir/ToD0
/TOD0
# 忽略任何目錄下名為 build 的文件夾
build/
忽略 doc/notes.txt,”但不忽略 doc/server/arch.txt
doc/*.txt
忽略 doc/目錄及其所有子目錄下的·pdf 文件
doc/**/*.pdf

👿注意,github官網有不同語言的gitignore模板,可以直接使用

5. SSH配置

遠程倉庫和本地倉庫同步的方式
https已不再使用
推薦使用ssh
ssh公鑰和密鑰的關系:

+-----------------+      +-----------------+
|     你的電腦     |----->|     遠程服務器   |
| (擁有私鑰)      |      | (擁有公鑰)      |
+-----------------+      +-----------------+

配置密鑰流程
Windows:

1.ssh-keygen -t rsa -b 4096 -c "郵箱"
生成的密鑰一般在:C:\Users\<你的用戶名>\.ssh\
2.然后將rsa.pub內的內容添加到github上
3.測試命令行輸入:ssh -T git@github.com
4.若通過則可以直接使用git clone ssh地址
5.不通過需要看下方提示

Linux:

cd .ssh
ssh-keygen -t rsa -b 4096

🤓若無法連接,可以嘗試:
~/.ssh/下創建config文件
添加內容:

# github
Host github.com
HostName ssh.github.com
Port 443

6. 遠程倉庫和本地倉庫關聯

1.關聯本地倉庫和遠程倉庫git remote add origin <遠程倉庫的 URL>1.1 查看本地關聯的倉庫git remote -v
2.推送本地倉庫git push -u 遠程倉庫別名 本地分支:遠程分支
3.拉取遠程倉庫自動合并git pull手動合并git fetch

7. 分支

Git 的分支(branch)功能允許你在版本庫中創建多個開發線索,使你可以在不影響主線(如 main )的情況下開發新功能、修復 bug 等。

? 主要用途

  • 并行開發不同功能
  • 實驗新特性
  • 快速 bug 修復
  • 提高協作效率

🛠? 常用 Git Branch 操作

1.創建新分支git branch 分支名
2.切換分支git checkout 分支名# 或 Git 2.23+ 版本git switch 分支名
3.查看分支列表git branch
4.合并分支git switch 分支名
5.刪除分支git branch -d 分支名 (已合并)git branch -D 分支名 (未合并)

8. 解決分支沖突

想象一下你和你的團隊成員正在同一個 Git 倉庫并行開發不同的功能或修復不同的 bug。每個人都在自己的分支上工作,這樣可以保持主線代碼的穩定,并且讓不同的開發任務相互隔離。
當以下兩種情況同時發生時,就可能產生分支沖突:

  • 不同的分支修改了同一文件的相同部分。 這意味著你和你的同事可能在同一文件的同一行或相鄰的幾行代碼上做了不同的更改。
  • 其中一個分支的更改被合并(git merge)或變基(git rebase)到另一個分支時。 Git 在嘗試自動合并這些不同的修改時,發現無法確定最終應該保留哪個版本

簡單來說,分支沖突就是 Git 在合并或變基分支時,遇到對同一文件相同部分的沖突修改,不知道應該采納哪個版本而需要人為介入解決的情況

情景

  1. master分支修改了main1.txt 第一行
  2. dev分支修改了main1.txt 第一行
  3. master commit 修改
  4. dev commit 修改
  5. master merge dev
  6. 沖突產生,需要手動修改和保留,合并沖突內容
  7. 添加暫存區
  8. 提交修改

若不想繼續合并,執行git merge --abort終止合并過程

回退和rebase(變基操作)

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

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

相關文章

藍橋杯單片機刷題——按鍵設置當前采集距離為距離參數

設計要求 驅動超聲波傳感器&#xff0c;啟動距離測量功能,并將其結果顯示到數碼管上。 按鍵“S5”定義為參數按鍵&#xff0c;按下S5按鍵&#xff0c;設備自動將當前采集的距離數據作為距離參數&#xff1b; 若測量的距離數據超過距離參數&#xff0c;指示燈L1點亮&#xff…

KV Cache大模型推理加速功能

KV Cache KV Cache是大模型標配的推理加速功能&#xff0c;也是推理過程中&#xff0c;顯存資源巨大開銷的元兇之一。在模型推理時&#xff0c;KV Cache在顯存占用量可達30%以上。 目前大部分針對KV Cache的優化工作&#xff0c;主要集中在工程上。比如著名的VLLM&#xff0c…

Windows 圖形顯示驅動開發-WDDM 2.0功能_上下文監視

功能概述 上下文監視機制是GPU與CPU協同計算的核心同步技術&#xff0c;通過受監視圍欄&#xff08;Monitored Fence&#xff09;實現跨硬件單元的高效協調。其核心目標是解決以下場景的同步需求&#xff1a; GPU引擎間同步&#xff1a;例如在多渲染管線中&#xff0c;后處理…

基于YOLOv8的機場跑道異物檢測識別系統:提升航空安全的新一代解決方案(主頁有源碼)

?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連 ? ?個人主頁歡迎您的訪問 ?期待您的三連? ??? ????????? ?? 1. 機場跑道異物檢測領域概述 機場跑道異物(Foreign Object Debris, FOD)是指存在于機場跑道、滑行道等關…

網絡協議學習

最近在適配ESP32的網絡驅動&#xff0c;借此機會先學習一下網絡通信協議。 以太網幀、IP包及TCP與UDP的報文格式一文讀懂網絡報問中的檢驗和&#xff08;checksum&#xff09;—— 原理舉例代碼 提問騰訊元寶提示詞&#xff1a; TCP窗口是干什么的擁塞窗口是什么的

fit 轉 gpx

新增 fit 轉 gpx 功能 https://fittools.cc/home/fit2gpx

C++ I/O 性能優化指南

在高性能計算和大規模數據處理中&#xff0c;I/O 性能優化是提升系統整體效率的關鍵環節。C 作為一種高性能編程語言&#xff0c;提供了豐富的工具和機制來優化 I/O 操作。本文將詳細介紹在 Linux 環境下&#xff0c;如何通過代碼層面的優化、系統調用的選擇以及多線程技術等手…

Python中內置的數據結構類型詳析(內置數據容器)

目錄 1. 元組&#xff08;Tuple&#xff09;??2. 列表&#xff08;List&#xff09;?3. 字典&#xff08;Dict&#xff09;4. 集合&#xff08;Set&#xff09;??5. 字符串&#xff08;Str&#xff09;6. 隊列&#xff08;Queue&#xff09;與棧&#xff08;Stack&#xf…

Socket多路復用網絡編程應用總結

Socket多路復用網絡編程應用總結 概述 ? 傳統I/O模型的局限性&#xff1a;傳統阻塞式I/O模型每次僅在一個文件描述符&#xff08;File Descriptor, FD&#xff09;上執行I/O操作&#xff0c;導致程序需等待單個操作完成&#xff0c;無法高效處理多連接場景&#xff08;如高并…

安卓開發提示Android Gradle plugin錯誤

The project is using an incompatible version (AGP 8.9.1) of the Android Gradle plugin. Latest supported version is AGP 8.8.0-alpha05 See Android Studio & AGP compatibility options. 改模塊級 build.gradle&#xff08;如果有獨立配置&#xff09;&#xff1a;…

【C++初階】--- vector容器功能模擬實現

1.什么是vector&#xff1f; 在 C 里&#xff0c;std::vector 是標準模板庫&#xff08;STL&#xff09;提供的一個非常實用的容器類&#xff0c;它可以看作是動態數組 2.成員變量 iterator _start;&#xff1a;指向 vector 中第一個元素的指針。 iterator _finish;&#x…

分布式鎖在秒殺場景中的Python實現與CAP權衡

目錄 一、分布式鎖的前世今生 二、秒殺系統的 “硬核” 挑戰 三、Python 實現分布式鎖的 “實戰演練” Redis 實現:快準狠 ZooKeeper 實現:穩如老狗 數據庫實現:老實本分 四、CAP 理論的 “三角戀” 五、性能優化的 “錦囊妙計” 鎖粒度控制:粗細有道 超時機制:別…

企業級開發SpringBoost玩轉Elasticsearch

案例 Spring Boot 提供了 spring-data-elasticsearch 模塊&#xff0c;可以方便地集成 Elasticsearch。 下面我們將詳細講解如何在 Spring Boot 中使用 Elasticsearch 8&#xff0c;并提供示例代碼。 1. 添加依賴: 首先&#xff0c;需要在 pom.xml 文件中添加 spring-data-e…

磐石云智能語音客服系統——技術革新引領服務新體驗

在人工智能技術飛速發展的今天&#xff0c;企業對于智能化客戶服務的需求日益增長。磐石云智能語音客服系統憑借其前沿技術架構與深度場景適配能力&#xff0c;正在重新定義人機交互的邊界。本文將深入解析該系統如何通過技術創新實現服務效率與體驗的雙重突破。 一、意圖識別…

OpenGL學習筆記(assimp封裝、深度測試、模板測試)

目錄 模型加載Assimp網格模型及導入 深度測試深度值精度深度緩沖的可視化深度沖突 模板測試物體輪廓 GitHub主頁&#xff1a;https://github.com/sdpyy1 OpenGL學習倉庫:https://github.com/sdpyy1/CppLearn/tree/main/OpenGLtree/main/OpenGL):https://github.com/sdpyy1/CppL…

通過AWS EKS 生成并部署容器化應用

今天給大家分享一個實戰例子&#xff0c;如何在EKS上創建容器化應用并通過ALB來發布。先介紹一下幾個基本概念&#xff1a; IAM, OpenID Connect (OIDC) 2014 年&#xff0c;AWS Identity and Access Management 增加了使用 OpenID Connect (OIDC) 的聯合身份支持。此功能允許…

入侵檢測snort功能概述

1. 數據包嗅探與日志記錄 網絡流量監控&#xff1a;實時捕獲和分析網絡數據包&#xff08;支持以太網、無線等&#xff09;。 日志記錄&#xff1a;將數據包以二進制格式&#xff08;pcap&#xff09;或文本格式存儲&#xff0c;供后續分析。 2. 協議分析與解碼 深度協議解析…

【Easylive】定時任務-每日數據統計和臨時文件清理

【Easylive】項目常見問題解答&#xff08;自用&持續更新中…&#xff09; 匯總版 這個定時任務系統主要包含兩個核心功能&#xff1a;每日數據統計和臨時文件清理。下面我將詳細解析這兩個定時任務的實現邏輯和技術要點&#xff1a; Component Slf4j public class SysTas…

藍橋杯 15g

班級活動 問題描述 小明的老師準備組織一次班級活動。班上一共有 nn 名 (nn 為偶數) 同學&#xff0c;老師想把所有的同學進行分組&#xff0c;每兩名同學一組。為了公平&#xff0c;老師給每名同學隨機分配了一個 nn 以內的正整數作為 idid&#xff0c;第 ii 名同學的 idid 為…

如何使用AI輔助開發R語言

R語言是一種用于統計計算和圖形生成的編程語言和軟件環境&#xff0c;很多學術研究和數據分析的科學家和統計學家更青睞于它。但對與沒有編程基礎的初學者而言&#xff0c;R語言也是有一定使用難度的。不過現在有了通義靈碼輔助編寫R語言代碼&#xff0c;我們完全可以用自然語言…