【常用工具系列】Git 教程——從入門到大師

目錄

  • 前言
  • 一、Git 基礎
    • 1-1、Git 簡介與安裝
      • 安裝 Git
    • 1-2、 Git 工作流程
    • 1-3、 Git 配置與管理
      • 用戶配置
      • 查看配置
    • 1-4、 Git 倉庫操作
      • 克隆倉庫
      • 推送更改
      • 拉取更新
    • 1-5 Git 分支管理
      • 創建分支
      • 切換分支
      • 刪除分支
      • 解決沖突
  • 二、 Git 進階
    • 2-0、 Git 標簽使用
      • 創建標簽
      • 查看標簽
      • 檢出標簽
      • 推送標簽到遠程倉庫
    • 2-1、 Git 遠程倉庫
      • 添加遠程倉庫
      • 從遠程倉庫拉取
      • 推送到遠程倉庫
      • 查看遠程倉庫信息
    • 2-2、Git 分布式工作流
    • 2-3、Git 沖突解決
    • 2-4、Git 日志與歷史
      • 查看提交歷史
      • 回退到之前的提交
      • 暫存更改
  • 三、Git 實用技巧
    • 3-1、Git 忽略文件與.gitignore
      • 創建.gitignore
      • 示例
      • 注意事項
    • 3-2、Git 別名與自定義命令
      • 設置別名
      • 自定義命令
    • 3-3、Git 子模塊管理
      • 添加子模塊
      • 更新子模塊
    • 3-4、Git 回退與數據恢復
      • 回退到某個提交
      • 恢復已刪除的文件
    • 3-5、Git 工具集成(如:GitHub, GitLab)
      • GitHub
      • GitLab
  • 四、Git 高級話題
    • 4-1、Git 內部原理淺析
      • 提交對象
      • 樹對象
      • Blob 對象
      • 工作流
    • 4-2、Git 二進制文件管理
    • 4-3、Git hooks 應用
      • 示例:預提交鉤子(pre-commit)
    • 4-4、Git 倉庫維護與優化
      • 清理不再使用的分支
      • 壓縮倉庫大小
    • 4-5、Git 安全策略
      • 使用SSH密鑰而非HTTPS
      • 保護分支
      • 定期審計
  • 五、Git 在團隊中的應用
    • 5-1、Git 流程規范
    • 5-2、代碼審查與合并請求
    • 5-3、分支策略與版本發布
    • 5-4、持續集成與持續部署(CI/CD)
    • 5-5、多人協作最佳實踐
  • 總結


前言

Git 是一個分布式版本控制系統,由 Linus Torvalds 在2005年為管理 Linux 內核開發而創建。它設計用于處理從小型到非常大型的項目版本管理,具有高效、可靠的特點,并支持非線性開發。

一、Git 基礎

1-1、Git 簡介與安裝

Git 是一個分布式版本控制系統,由 Linus Torvalds 在2005年為管理 Linux 內核開發而創建。它設計用于處理從小型到非常大型的項目版本管理,具有高效、可靠的特點,并支持非線性開發。

安裝 Git

在 Windows 上安裝

  1. 訪問 Git 官方下載頁面。
  2. 下載適合你的操作系統的安裝程序。
  3. 按照安裝向導指示完成安裝過程,推薦勾選“Git Bash Here”選項以便在Windows資源管理器中快速打開Git Bash。

在 macOS 上安裝

  1. 使用 Homebrew(如果尚未安裝,請先通過 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"" 安裝 Homebrew)。
  2. 運行 brew install git 命令安裝 Git。

在 Linux 上安裝

對于基于 Debian 的系統(如 Ubuntu),使用以下命令:

sudo apt-get update
sudo apt-get install git

對于基于 Red Hat 的系統(如 Fedora),使用:

sudo dnf install git

1-2、 Git 工作流程

Git 的基本工作流程包括以下幾個步驟:

  1. 初始化倉庫:在項目根目錄下運行 git init 以創建新的 Git 倉庫。
  2. 添加文件:使用 git add <file> 將文件添加到暫存區,或 git add . 添加所有修改過的文件。
  3. 提交更改:通過 git commit -m "提交信息" 將暫存區的內容提交到本地倉庫。
  4. 查看狀態:使用 git status 查看當前工作目錄和暫存區的狀態。
  5. 分支操作:利用 git branch 創建、查看分支,git checkout <branch> 切換分支。
  6. 合并分支:當開發完成后,使用 git merge <branch> 合并分支到主分支。

1-3、 Git 配置與管理

用戶配置

首次使用 Git 前,需要配置用戶名和郵箱,這些信息將被用于記錄提交:

git config --global user.name "你的名字"
git config --global user.email "you@example.com"

查看配置

可以使用以下命令查看配置信息:

git config --list

1-4、 Git 倉庫操作

克隆倉庫

從遠程倉庫克隆項目到本地,使用命令:

git clone https://github.com/用戶名/倉庫名.git

推送更改

將本地倉庫的更改推送到遠程倉庫:

git push origin 主分支名

拉取更新

獲取遠程倉庫的最新更改并合并到本地:

git pull origin 主分支名

1-5 Git 分支管理

創建分支

創建一個新的分支并立即切換到該分支上:

git checkout -b 新分支名

切換分支

切換到已存在的分支:

git checkout 分支名

刪除分支

刪除本地分支:

git branch -d 分支名

刪除遠程分支(需先在本地刪除):

git push origin --delete 分支名

解決沖突

當合并時發生沖突,Git 會標記出沖突文件。手動編輯這些文件,解決沖突后,再提交。

以上內容覆蓋了 Git 的基礎操作,通過實踐這些命令,你將能熟練地使用 Git 進行版本控制。

二、 Git 進階

2-0、 Git 標簽使用

在 Git 中,標簽用于標記某個特定的提交,常用于版本發布。創建輕量標簽只需指定標簽名,而注解標簽則會包含作者信息、日期以及標簽信息。

創建標簽

  • 輕量標簽:直接指向提交對象。
git tag v1.0
  • 注解標簽:包含額外信息,使用 -a 參數,并可添加 -m 參數描述標簽信息。
git tag -a v1.1 -m "Version 1.1 release"

查看標簽

git tag

檢出標簽

檢出到標簽對應的提交:

git checkout tags/v1.0

推送標簽到遠程倉庫

默認情況下,git push 不會推送標簽。需要顯式地推送標簽:

git push origin v1.0

或推送所有標簽:

git push origin --tags

2-1、 Git 遠程倉庫

遠程倉庫是團隊協作的基礎,允許共享代碼和協作開發。

添加遠程倉庫

git remote add origin https://github.com/yourusername/yourrepo.git

從遠程倉庫拉取

git fetch origin

推送到遠程倉庫

git push origin master

查看遠程倉庫信息

git remote -v

2-2、Git 分布式工作流

分布式工作流強調每個開發者都有一個完整的倉庫副本,包括歷史記錄和分支,可以獨立進行開發和提交。

  1. Forking Workflow:適合開源項目,開發者先Fork主倉庫到自己賬戶,然后在其上開發,完成后發起Pull Request。
  2. Feature Branch Workflow:團隊內部常用,基于主分支創建特性分支開發新功能,完成后合并回主分支。

2-3、Git 沖突解決

沖突發生在兩個或多個提交修改了同一文件的同一部分時。解決步驟如下:

  1. 查看沖突:Git會標記沖突區域。
  2. 手動編輯:手動決定如何解決沖突。
  3. 添加更改:解決后,需要將其添加到暫存區。
  4. 提交更改:完成沖突解決后提交。
git add .
git commit -m "Resolved conflicts in file.txt"

2-4、Git 日志與歷史

查看提交歷史

  • 簡略歷史
git log
  • 詳細歷史
git log --oneline --decorate --graph --all
  • 搜索提交歷史

通過關鍵字搜索提交信息:

git log --grep="feature"

回退到之前的提交

使用 git resetgit revert 可以回到之前的提交狀態。

  • 軟重置(保留工作目錄改動):
git reset --soft HEAD^
  • 硬重置(丟棄工作目錄改動):
git reset --hard HEAD^

暫存更改

如果想恢復到某個提交的狀態,但不提交,可以使用 git stash

git stash

之后可以通過 git stash applygit stash pop 恢復暫存的更改。

三、Git 實用技巧

3-1、Git 忽略文件與.gitignore

在使用Git進行版本控制時,你可能希望某些文件或目錄不被Git跟蹤,比如編譯生成的文件、日志文件、個人配置文件等。這時,.gitignore文件就顯得尤為重要。

創建.gitignore

在你的倉庫根目錄下創建一個名為.gitignore的文件。在這個文件中,你可以指定要忽略的文件模式。每行一個模式,空行或以#開頭的行會被忽略。

示例

# 忽略所有.log文件
*.log# 但.gitlog文件除外
!gitlog.txt# 忽略build目錄下的所有文件
build/# 忽略所有以.tmp結尾的文件
*.tmp

注意事項

  • 使用斜杠/表示目錄,例如dir/會忽略dir目錄下的所有文件,但不會忽略dir本身。
  • 使用星號*作為通配符匹配任意字符,但不包括.
  • 使用雙星號**可以遞歸匹配目錄和文件。

3-2、Git 別名與自定義命令

為了提高效率,Git允許用戶為常用命令設置別名,或者創建自定義命令。

設置別名

通過git config命令可以設置別名:

# 在全局配置中設置別名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit

這樣,你可以使用git co代替git checkoutgit br代替git branch等。

自定義命令

更進一步,你可以通過編寫腳本并在Git中設置別名來實現自定義命令。例如,創建一個顯示最近幾次提交摘要的命令:

# 在~/.gitconfig中添加如下內容
[alias]recent = "!f() { git log --oneline -n $1; }; f"# 然后,你可以使用git recent 5來查看最近5次提交

3-3、Git 子模塊管理

當你的項目依賴于其他項目時,Git子模塊提供了一種有效的方式來管理這些依賴。每個子模塊都是一個獨立的Git倉庫。

添加子模塊

git submodule add https://github.com/example/repo.git path/to/submodule

這會在當前倉庫中添加一個名為repo的子模塊,并將其置于path/to/submodule目錄下。

更新子模塊

進入子模塊目錄并執行Git命令:

cd path/to/submodule
git pull
cd ..
git add path/to/submodule
git commit -m "Update submodule"

或者直接使用:

git submodule update --remote

3-4、Git 回退與數據恢復

回退到某個提交

git reset --hard <commit_hash>

這會將HEAD指向指定的提交,并重置工作目錄和索引,丟失的提交將無法找回。

恢復已刪除的文件

git checkout <commit_hash> -- path/to/file

這會從指定的提交中恢復文件到工作目錄。

3-5、Git 工具集成(如:GitHub, GitLab)

GitHub

  1. Fork:在GitHub上找到你想要貢獻的項目,點擊"Fork"按鈕將其復制到你的賬戶下。
  2. Clone:在本地克隆你的Fork。
    git clone https://github.com/your_username/repo.git
    
  3. 創建新分支:基于mainmaster分支創建新分支。
    git checkout -b new-feature
    
  4. 提交更改
  5. 推送至遠程倉庫
    git push origin new-feature
    
  6. 發起Pull Request

GitLab

流程與GitHub類似,主要區別在于URL和一些特定功能(如Merge Requests)。

以上是Git實用技巧的一些關鍵點,掌握它們能顯著提升日常開發的效率和協作體驗。

四、Git 高級話題

4-1、Git 內部原理淺析

Git 是一個分布式版本控制系統,其內部原理基于快照和內容尋址存儲機制。每個 Git 倉庫都包含一個對象數據庫,用于存儲四種類型的對象:提交(commit)、樹(tree)、blob(文件內容)和標簽(tag)。這些對象通過 SHA-1 哈希值唯一標識,確保了數據的完整性和一致性。

提交對象

提交對象記錄了一次保存快照的操作,包括指向根樹對象的指針、父提交的指針(首次提交除外)、作者信息、提交者信息及提交信息。

樹對象

樹對象代表了一個目錄結構,記錄了該目錄下的所有文件(作為 blob 對象)和子目錄(作為其他樹對象)的信息。

Blob 對象

Blob 對象用來存儲文件的具體內容。當文件被添加到 Git 倉庫時,其內容會被轉換為 blob 對象并存儲在數據庫中。

工作流

工作目錄、暫存區(索引)和HEAD指針是理解Git工作流程的關鍵。HEAD是一個特殊的指針,通常指向當前分支的最新提交。通過git add命令將更改從工作目錄移動到暫存區,然后使用git commit將暫存區的內容創建一個新的提交。

4-2、Git 二進制文件管理

對于圖片、視頻等二進制文件,Git 通過同樣的方式管理,但默認不會進行差異比較,而是每次修改視為全新的文件。為了優化存儲空間和傳輸效率,可以考慮使用git-lfs(Large File Storage),它允許將大文件存儲在外部服務上,并在Git倉庫中只保留文本指針。

# 安裝git-lfs
git lfs install# 將特定類型文件跟蹤為LFS
git lfs track "*.mp4"# 提交包括LFS文件的更改
git add . && git commit -m "Add large files with git-lfs"

4-3、Git hooks 應用

Git Hooks 是在特定事件發生前或發生后執行的腳本,位于.git/hooks目錄下。它們讓開發者能夠在提交前自動檢查代碼風格、自動打包或發送通知等。

示例:預提交鉤子(pre-commit)

此鉤子在提交前運行,可用于代碼格式檢查。

#!/bin/sh
# pre-commit 文件內容
echo "Running code checks..."
flake8 .  # 假設使用Flake8進行Python代碼檢查
if [ $? -ne 0 ]; thenecho "Code style check failed. Please fix the issues before committing."exit 1
fi
echo "Code checks passed."

4-4、Git 倉庫維護與優化

清理不再使用的分支

定期清理不再需要的遠程分支可以保持倉庫整潔。

git remote prune origin

壓縮倉庫大小

通過git gc手動進行垃圾回收,優化存儲空間。

git gc --aggressive --prune

4-5、Git 安全策略

使用SSH密鑰而非HTTPS

SSH連接提供了更強的安全性,避免在每次操作時輸入密碼。

保護分支

通過設置git config中的branch.*.protection屬性,可以防止關鍵分支被誤刪或強制推送。

定期審計

定期審查提交歷史和訪問權限,確保沒有異常活動。

以上內容深入探討了Git的一些高級特性及其應用,幫助用戶更高效、安全地管理版本控制。

五、Git 在團隊中的應用

5-1、Git 流程規范

在團隊開發中,遵循一套明確的Git流程規范至關重要,以確保代碼質量和團隊協作效率。規范通常包括以下步驟:

  1. 初始化倉庫:項目開始時,首先在GitHub、GitLab等平臺上創建遠程倉庫,并通過git clone命令將倉庫克隆到本地。

    git clone https://github.com/your-username/your-repo.git
    
  2. 分支管理:為每個新功能、修復或特性創建獨立的分支,避免直接在mainmaster分支上工作。

    git checkout -b feature/new-feature
    
  3. 提交規范:每次提交應僅包含邏輯相關的改動,并附帶清晰的提交信息,采用 Imperative mood,如“Add feature X”。

    git add .
    git commit -m "Add feature X"
    
  4. 拉取最新代碼:在推送前,先從遠程倉庫拉取最新代碼并解決可能的沖突。

    git pull origin main
    
  5. 代碼審查:通過合并請求(Merge Request)或Pull Request進行代碼審查,確保代碼質量。

5-2、代碼審查與合并請求

代碼審查是提高代碼質量和團隊成員技能的關鍵環節。在Git中,這一過程通過創建合并請求實現:

  1. 創建合并請求:在完成開發后,向主分支發起合并請求,詳細描述變更內容和目的。

  2. 添加審查員:指定其他團隊成員作為審查員,他們將審查代碼并提出建議或要求修改。

  3. 討論與迭代:根據審查反饋,在自己的分支上進行必要的修改,然后推送到遠程分支。

    git push origin feature/new-feature
    
  4. 合并:審查通過后,可以安全地將分支合并到主分支。

5-3、分支策略與版本發布

采用合理的分支策略能有效管理版本發布:

  • 主分支(main/master):代表當前穩定版本,只接受經過測試和審查的代碼合并。
  • 開發分支(develop):日常開發分支,所有新功能和修復均在此分支上開發。
  • 特性分支(feature/*):針對特定功能或修復的分支,開發完成后合并回develop。
  • 發布分支(release/*):從develop分支分出,用于準備新版本發布,最終合并至main并打標簽。

版本發布時,使用以下命令打標簽:

git tag -a v1.0.0 -m "Version 1.0.0 release"
git push origin v1.0.0

5-4、持續集成與持續部署(CI/CD)

CI/CD流程自動化了代碼構建、測試和部署過程,保證快速且可靠的交付。

  1. 配置CI服務器:使用Jenkins、GitLab CI/CD、Travis CI等工具配置自動構建和測試。

  2. 編寫yaml文件:定義自動化流程,包括構建觸發條件、測試命令、部署步驟等。

    # 示例:GitLab CI YAML 配置
    stages:- build- test- deploybuild:stage: buildscript:- npm install- npm run buildtest:stage: testscript:- npm testdeploy:stage: deployscript:- ssh user@server "cd /var/www/my_app && git pull origin main"
    
  3. 監控與優化:持續監控CI/CD流程,根據需要調整優化,確保高效穩定運行。

5-5、多人協作最佳實踐

  1. 保持通訊透明:定期同步進度,使用Issue、PR注釋或團隊溝通工具討論問題。
  2. 頻繁提交并推送:小而頻繁的提交有助于追蹤更改歷史和問題定位。
  3. 尊重代碼所有權:在修改他人代碼前,通過評論或聊天工具進行溝通。
  4. 定期同步遠程分支:確保本地工作基于最新的遠程分支,減少合并沖突。
  5. 學習和分享:團隊內部定期分享Git高級技巧,提升整體協作效率。

總結

talk is cheap, show me the code !

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

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

相關文章

「動態規劃」如何求最小路徑和?

64. 最小路徑和https://leetcode.cn/problems/minimum-path-sum/description/ 給定一個包含非負整數的m x n網格grid&#xff0c;請找出一條從左上角到右下角的路徑&#xff0c;使得路徑上的數字總和為最小。說明&#xff1a;每次只能向下或者向右移動一步。 輸入&#xff1a;…

《嵌入式系統導論》

計算題 已知位帶別名基地址為0x220000000,計算位于位帶區的0x200FFFFF地址的數據位7,計算它對應的位帶別名區地址。 別名地址=位帶別名基地址+字節偏移量x32+位號x4 別名地址=0x22000000+(0x200FFFFF -0x20000000)*32+7*4=0x220000807 分析如下基本定時器配置語句。 { ………

ctfshow-web入門-命令執行(web37-web40)

目錄 1、web37 2、web38 3、web39 4、web40 命令執行&#xff0c;需要嚴格的過濾 1、web37 使用 php 偽協議&#xff1a; ?cphp://input post 寫入我們希望執行的 php 代碼&#xff1a; <?php system(tac f*);?> 拿到 flag&#xff1a;ctfshow{5c555d9a-6f55…

Mongodb數組元素更新之使用$定位數組第一個元素

學習mongodb&#xff0c;體會mongodb的每一個使用細節&#xff0c;歡迎閱讀威贊的文章。這是威贊發布的第63篇mongodb技術文章&#xff0c;歡迎瀏覽本專欄威贊發布的其他文章。 閱讀了不少Mongodb的文章&#xff0c;也和同事交流過。Mongodb數組更新是比較難理解的地方&#x…

EXCEL多sheet添加目錄跳轉

EXCEL多sheet添加目錄跳轉 背景 excel中有幾十個sheet&#xff0c;點下方左右切換sheet太耗時&#xff0c;希望可以有根據sheet名超鏈接跳轉相應sheet&#xff0c;處理完后再跳回原sheet。 方案一 新建目錄sheet&#xff0c;在A1寫sheet名&#xff0c;右鍵選擇最下方超鏈接…

問題:材料題請點擊右側查看材料問題 查看材料 #學習方法#經驗分享#學習方法

問題&#xff1a;材料題請點擊右側查看材料問題 查看材料 A.Colleges may reduce their enrollment. B.Top universities become increasingly competitive. C.Universities become selective in student admission. D.Colleges invest less in academy and infrastructure…

Go 文件壓縮解壓

在Go語言中&#xff0c;archive/zip包提供了創建、讀取和解壓縮ZIP格式文件的功能。 一、創建ZIP文件并添加內容----壓縮 package mainimport ("archive/zip""bytes""fmt""io""log""os" )func main() {// 創建一…

el-input中change事件造成的坑

el-input中change事件造成的坑 一、change事件定義二、如果僅回車時候觸發 一、change事件定義 僅在輸入框失去焦點或用戶按下回車時觸發 二、如果僅回車時候觸發 <el-inputv-model.trim"questionInput"placeholder"請輸入你的問題&#xff0c;按回車發送&…

智慧視覺怎么識別視頻?智慧機器視覺是通過什么步驟識別視頻的?

智慧視覺功能怎么識別視頻&#xff1f;智慧視覺是搭載在智能設備比如手機、AI盒子、機器視覺系統上的一個應用程序或特性&#xff0c;采用計算機視覺和人工智能的技術來識別圖像或視頻中的內容。如果想了解視頻識別&#xff0c;就要明白智慧視覺功能會涉及的以下幾個關鍵步驟和…

pxe自動裝機

概念 pxe是c/s模式。允許客戶端通過網絡從遠程服務器&#xff08;服務端&#xff09;下載引導鏡像&#xff0c;加載安裝文件&#xff0c;實現自動化安裝操作系統。 無人值守&#xff1a;安裝選項不需要人為干預&#xff0c;可以自動化實現。 pxe的優點&#xff1a;1.規模化&…

機器人阻抗控制中的機械阻抗模型

機器人阻抗控制中的機械阻抗模型主要涉及到通過修改機器人與環境接觸作業的動力學模型&#xff0c;使其等效為一個期望的阻抗&#xff08;彈簧-質量-阻尼&#xff09;模型。以下是對機械阻抗模型在機器人阻抗控制中的詳細解釋&#xff1a; 阻抗控制原理&#xff1a; 機器人阻抗…

Python——泰坦尼克號數據分析

目錄 ??1.數據集(部分數據) ?? 2、導入數據集與必要模塊 ?? 3.數據預處理 1?? isnull函數查看有無缺失值 2??fillna函數填充缺失值 ?? Age字段使用平均值填充缺失值 ?? Embarked字段填充缺失值 3?? 刪除缺失值較多的字段 ?? 4.數據可視化 1?? di…

流媒體服務器SMS-語音對講(二)

1.簡介 上篇文件介紹了流媒體與設備之間可能的交互場景&#xff0c;本文將介紹客戶端或者web端與攝像頭對講的總體流程。 老規矩&#xff0c;介紹一下本人的開源流媒體&#xff0c;點個star&#xff0c;有興趣一起開發的朋友也可以聯系本人&#xff1a;https://gitee.com/inyem…

PostgreSQL的發布和訂閱功能

發布和訂閱功能在 PostgreSQL 9.0 版本中首次引入,并進一步改進和增強了后續版本中。所以,從 PostgreSQL 9.0 版本開始,就可以使用發布和訂閱功能來實現數據復制和同步 發布和訂閱功能在 PostgreSQL 中提供了一種靈活、可靠的數據復制和同步機制,具有許多優點和一些缺點:…

[數據集][目標檢測]醫療防護服檢測數據集VOC+YOLO格式649張7類別

數據集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路徑的txt文件&#xff0c;僅僅包含jpg圖片以及對應的VOC格式xml文件和yolo格式txt文件) 圖片數量(jpg文件個數)&#xff1a;649 標注數量(xml文件個數)&#xff1a;649 標注數量(txt文件個數)&#xff1a;649 標注類別…

echarts學習: 在圖表中添加多條y軸會怎么樣?

前言 在撰寫如何繪制雙y軸圖表文章時&#xff0c;我突然萌生出了一個想法&#xff0c;如果給圖表添加兩個以上的y軸會怎么樣呢? 帶著這個問題我開始了自己的探索之旅。 我找到了一篇優秀的文章作為參考&#xff0c;雖然它需要付費&#xff0c;但是不要緊&#xff0c;文中免費…

Vulnhub-DC-4

靶機IP:192.168.20.138 kaliIP:192.168.20.128 網絡有問題的可以看下搭建Vulnhub靶機網絡問題(獲取不到IP) 信息收集 nmap掃下端口及版本 dirsearch掃下目錄 沒發現什么敏感信息&#xff0c;看下前端界面 想到會不會存在SQL注入&#xff0c;弱密碼等漏洞。 經過測試SQL注入…

k8s網絡問題以及容器跨宿主機通信原理

【0】資源配置文件 [rootmcwk8s03 mcwtest]# ls mcwdeploy.yaml [rootmcwk8s03 mcwtest]# cat mcwdeploy.yaml apiVersion: apps/v1 kind: Deployment metadata:labels:app: mcwpythonname: mcwtest-deploy spec:replicas: 1selector:matchLabels:app: mcwpythontemplate:met…

Linux進程間通信之管道

進程間通信介紹&#xff1a; 進程間通信的概念&#xff1a; 進程間通信簡稱IPC&#xff08;Interprocess communication&#xff09;&#xff0c;進程間通信就是在不同進程之間傳播或交換信息。 進程間通信的目的&#xff1a; 數據傳輸&#xff1a; 一個進程需要將它的數據…