【Tools】git使用詳解以及遇到問題匯總

這里寫目錄標題

          • 安裝git
          • 安裝 TortoiseGit
          • git github gitlab, Gitee 區別
          • visual studio中使用git
          • git使用步驟
          • git命令
          • git刪除某些歷史提交記錄
          • git找回丟失代碼
          • git上傳文本和二進制和gitignore
          • 刪除文件刪不掉的問題

安裝git

https://blog.csdn.net/mukes/article/details/115693833

安裝 TortoiseGit

https://download.tortoisegit.org/tgit/

ortoiseGit 只是一個 Git 的圖形化客戶端,提供 Windows 資源管理器中可視化的 Git 操作界面,但它依賴于 Git 本身的命令行程序 ,在文檔里右鍵可以使用git的一些功能。

git github gitlab, Gitee 區別
  1. Git 是一個分布式(在不同ip上版本控制系統(VCS),用于跟蹤文件的更改歷史,特別適用于源代碼管理。它允許開發者在本地和遠程倉庫中管理代碼、跟蹤代碼的修改、恢復歷史版本并進行并行開發
    1. 開發者在本地機器上使用 git init 初始化一個 Git 倉庫,進行代碼開發、提交(git commit)和分支(git branch)操作。所有操作都發生在本地 。
  2. GitHub 基于 Git 的托管平臺(云端),提供遠程代碼倉庫
    1. eg:如果一個開發者在 GitHub 上創建了一個名為 my-project 的倉庫,他可以使用 git clone https://github.com/username/my-project.git 克隆該倉庫到本地,進行開發后送回 GitHub。
  3. GitLab:與 GitHub 類似的托管平臺,(可自托管) 企業可以將 GitLab 安裝在自己的服務器上,完全控制源代碼和數據。
  4. Gitee 基于 Git 的代碼托管平臺 , 國內的,訪問速度快
visual studio中使用git

打開vs:工具->選項->源代碼管理→插件選擇

git使用步驟
  1. 在開始編寫代碼之前,首先需要創建一個 Git 倉庫(repository),用于存儲代碼和版本歷史記錄。
  2. 在編寫代碼時,可以通過 命令將更改的文件添加到 Git 的暫存區(staging area)中。git add
  3. 通過 命令將暫存區中的更改提交到 Git 倉庫中,并生成一個新的版本號(commit hash)。git commit
  4. 如果需要撤銷某個提交,可以使用 命令來創建一個新的提交,該提交將會抵消先前的提交效果。git revert
  5. 如果需要合并不同分支的代碼,可以使用 命令進行合并。git merge
  6. 如果需要查看代碼的歷史提交記錄,可以使用 命令來獲取詳細信息。git log
  7. 如果需要將代碼推送到遠程倉庫,可以使用 命令將本地代碼推送到遠程倉庫。git push
  8. 如果需要從遠程倉庫中獲取代碼,可以使用 命令將遠程代碼拉取到本地。git pull
git命令

  1. git init :

    1. 把當前目錄目錄變成git可以管理的倉庫,這時候你當前目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的
  2. git add readme.txt :

    1. 添加文件到 Git 緩存區
  3. git commit -m “Add hello.txt file”

    1. git commit -m 會將暫存區的內容提交到倉庫,并附上提交信息 ,簡明扼要地描述此次提交的目的。
    2. 會將文件的更改提交到 本地 Git 倉庫。這個本地倉庫是你電腦上的一個隱藏目錄(通常在項目目錄中的 **.git** 文件夾里) ,git push:用于將本地倉庫的更改推送到遠程倉庫(例如 GitHub
    3. 輸出中會顯示你當前所在的分支
    4. git commit 會打開默認文本編輯器
    5. git commit -a -m “提交說明” : 會自動將所有已跟蹤的文件的更改添加到暫存區,然后直接提交
  4. git status

    1. 當前分支狀態 : Git 會告訴你當前分支和遠程分支的關系(比如是否落后、領先或者是同步的)。
    2. 未暫存的更改(Unstaged Changes) : modified和deleted
    3. 暫存區的更改(Staged Changes),待commit狀態
    4. (Untracked Files, 創建了新文件,但這些文件還沒有被 Git 跟蹤
    5. git status --ignored 來查看被忽略的文件
  5. git log : 列出所有的提交記錄 ,每次記錄的版本號,時間,作者等,git reflog會列出回退之后的最新版本

  6. **git rebase -i HEAD~n 😗*查看最近n次提交,把pick改為drop就可以刪掉這個記錄

  7. pick cbcc08b 初始化網絡完成

    1. pick 989cd25 半成品
    2. pick c0904ee master提交測試
    3. pick 563959c vs里git提交測試
    4. drop 11160ac 刪除1.txt 修改ignore,把每個項目下的x64文件夾也忽略
    5. drop 8bec162 提交gitignore文件
  8. **git diff**:顯示當前文件和暫存區或歷史提交之間的差異,幫助用戶了解文件的具體改動

  9. 版本回退

  10. git reset --hard HEAD^ 幾個^就是往前回退幾個版本

  11. git reset --hard +版本號回退至對應版本

  12. 同步: 將本地倉庫與遠程倉庫保持一致

  13. 這個過程包括將本地的更改推送到遠程倉庫,以及從遠程倉庫獲取其他人提交的最新更改

  14. git branch 查看分支

  15. git branch -r 查看遠程分支

  16. git branch -a 查看本地和遠程所有分支

  17. **git branch <branch-name>**:創建一個新的分支,用于開發新的功能或修復問題,避免影響主分支。

  18. **git checkout <branch-name>**切換到指定分支,Git 會更新工作目錄的內容為該分支的最新提交。

  19. git checkout -b 創建并切換到新分支

  20. git checkout 切換到某個特定的提交記錄

  21. **git merge <branch-name>**合并是將一個分支的更改合并到另一個分支中,而不改變已有提交的歷史記錄。它會創建一個新的合并提交(merge commit)來記錄這次操作。

  22. 變基是將一個分支的提交歷史重新應用到另一個分支的最新提交之后。變基會重寫歷史記錄,將變基分支的提交移到基準分支的最新提交之后。

  23. git checkout feature# 切換到 feature 分支

  24. git rebase main # 將 feature 分支的基準改為 main 分支的最新提交

  25. **git branch -d <branch-name>**:刪除本地分支。在確保分支已被合并或不再需要時使用。

  26. git push origin <分支名>git push origin feature-xyz 會將 feature-xyz 分支推送到遠程倉庫的 feature-xyz 分支。

  27. git fetch origin <遠程分支名>:<本地分支名> 拉取遠程分支并創建本地分支:

  28. git diff <分支1> <分支2> 比較分支

  29. **git push**:將本地倉庫的提交推送到遠程倉庫。常用于與團隊共享代碼或備份代碼

  30. **git pull**:從遠程倉庫拉取最新的更改并與本地代碼庫合并。適用于同步遠程倉庫中的最新更新

  31. **git clone <repository-url>**:從遠程倉庫克隆代碼庫到本地。會復制所有的版本歷史,使本地倉庫成為遠程倉庫的副本

git刪除某些歷史提交記錄

1、 使用 git loggit reflog 查找你想要開始的提交的位置。例如,假設你想修改最近 5 次提交,可以使用以下命令

git rebase -i HEAD~5

把不想要的提交記錄改為從pick->drop。然后wq保存。顯示:

git status 會顯示所有有沖突的文件,通常會標記為 Unmerged paths。 :

git找回丟失代碼

1、git reflog: Git 記錄的所有分支變動歷史,即使丟棄了某些提交,你可以通過 reflog 找回之前的狀態。

出現這個錯誤是因為你的 Git 當前有未解決的合并沖突或未完成的 rebase 操作。在你解決這些問題之前,Git 不允許你切換到其他分支或提交。

git上傳文本和二進制和gitignore

文本文件的提交
文本文件(如 .txt.md.html.css.js 等)在 Git 中會被當作“純文本”處理,Git 針對文本文件做了一些特殊優化:

  • 差異化存儲:Git 在提交文本文件時只存儲文件內容的差異(增量),這樣可以節省存儲空間,便于跟蹤文件的變化。
  • 合并和沖突解決:在多人協作中,如果多個人修改了同一個文本文件的不同部分,Git 可以較好地合并這些改動,并在發生沖突時提示,方便手動解決。
  • 查看歷史:Git 可以輕松展示文本文件的修改歷史,幫助開發者追蹤內容變化。

二進制文件的提交

二進制文件(如 .jpg.png.exe.zip.pdf.doc .ipch 等)在 Git 中的處理方式不同于文本文件:

  • 不做差異化存儲:二進制文件在每次修改時,Git 會將整個文件存儲為一個新的對象,而不是只存儲差異(因為二進制文件難以分辨具體內容的變化)。
  • 合并困難:如果多人協作修改同一個二進制文件,Git 無法自動合并不同版本。這種情況下,開發者通常需要選擇使用某個版本或手動替換。
  • 查看歷史限制:由于二進制文件無法顯示文本內容,因此在查看歷史時,Git 無法提供具體的改動內容,只能顯示某個二進制文件被更新的記錄。

所以要避免頻繁更新大二進制文件:二進制文件的每次更新都會導致版本庫快速膨脹

可以要把本地工作目錄下的不需要提交的文件添加到.gitignore文件里,.gitignore 文件是 Git 中用于指定 忽略規則 的文件,告訴 Git 在提交時應忽略哪些文件或文件夾,避免它們被添加到倉庫中。.gitignore 文件通常位于項目根目錄下,一些沒必要且大的二進制文件和項目的Debug文件要添加進去 ,1,用git管理工具右鍵添加,2,把文件或者文件夾添加到.gitignore文件里保存

eg ..vs 文件夾是 Visual Studio 在項目目錄下創建的一個臨時文件夾,用于存儲開發環境的用戶特定設置、調試信息和其他緩存數據, 生成大量緩存文件

eg。

放到根目錄是為了一個ignore文件管理所有的,防止ignore文件過多。

提交時候忽略了一些文件,提交后發現出現了這個 .gitignore

**.gitignore** 文件需要提交一次嗎?
是的,建議提交 .gitignore 文件到版本庫中,這樣團隊中的其他人也可以共享同樣的忽略規則,保持代碼庫的一致性。

刪除文件刪不掉的問題

今天裝 TortoiseGit 后向重裝,卸載之后刪除文件夾發現:

一般會先檢查是否真的有程序或者文件打開了沒有關閉,但是我們在桌面或者任務管理器中找不到該程序。

方法:

explorer.exe通常被稱為 Windows 資源管理器(Windows Explorer)。它負責管理和顯示文件夾、文件、磁盤驅動器以及其他系統資源的圖形用戶界面(GUI) 。 位于系統的 C:\Windows\explorer.exe 路徑下

但是圖中位于D:\git下,把這兩個進程結束掉(雖然顯示無法結束),結束后桌面圖標全沒了。 當結束 explorer.exe 進程時,實際上是結束了 Windows 資源管理器。資源管理器控制著桌面圖標、任務欄和文件瀏覽器等。因此,當 explorer.exe 被終止后,桌面和任務欄上的圖標都會消失。

此時ctrl+shift+esc打開任務管理器重新運行explorer即可,

在這里運行:

之后全都恢復,文件夾也可以刪除了。

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

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

相關文章

畫立方體軟件開發筆記 js-pytorch xlsx 導出 excel pnpm安裝

js-pytorch npm install -g pnpm pnpm add js-pytorch 放著&#xff0c;等我把模型訓練好了再用這個對接 xlsx pnpm install xlsx ai寫代碼&#xff0c;一遍就通了 import * as XLSX from "xlsx"; import { linelist } from ./2dviewport.js; function export…

Kotlin并發請求的一些知識記錄

private suspend fun fetchDataConcurrently(list: MutableList<MyType>,onRequestResult: (Int, List<MyType>?) -> Unit //高階函數回調) {val deferredList mutableListOf<Deferred<MyType?>>()// 設定任務超時時間為12秒&#xff0c;并使用 …

配置VScodePython環境Python was not found;

Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings > Manage App Execution Aliases. 候試試重啟電腦。 在卸載重裝python后會出現難以解決的局面&#xff0c;系統變量&#xff0c;命令行&#…

OracleLinux7.9-ssh問題

有套rac環境&#xff0c;db1主機無法ssh db1和db1-priv&#xff0c;可以ssh登錄 db2和db2-priv [rootdb1 ~]# ssh db1 ^C [rootdb1 ~]# ssh db2 Last login: Wed May 14 18:25:19 2025 from db2 [rootdb2 ~]# ssh db2 Last login: Wed May 14 18:25:35 2025 from db1 [rootdb2…

如何創建maven項目

1.IDEA 中創建 Maven 項目 步驟一&#xff1a;點擊 File -> New -> Project&#xff0c;在彈出的窗口左側選擇 Maven&#xff0c;點擊 Next&#xff1a; 步驟二&#xff1a;填寫項目的 GroupId、ArtifactId、Version 等信息&#xff08;這些對應 pom.xml 中的關鍵配置&am…

Python爬蟲實戰:研究ajax異步渲染加密

一、引言 在當今數字化時代,數據已成為推動各行業發展的核心驅動力。網絡爬蟲作為一種高效的數據采集工具,能夠從互聯網上自動獲取大量有價值的信息。然而,隨著 Web 技術的不斷發展,越來越多的網站采用了 AJAX(Asynchronous JavaScript and XML)異步渲染技術來提升用戶體…

滬深股指期貨指數怎么參考交易?

滬深股指期貨指數&#xff0c;其實它就是咱們炒股時的一個“風向標”和“工具箱”。今天咱們就來聊聊怎么參考這個指數來交易&#xff0c;讓你也能輕松上手&#xff01; 一、滬深股指期貨指數是啥&#xff1f; 滬深股指期貨指數&#xff0c;簡單來說&#xff0c;就是基于滬深…

演員評論家算法

一、演員評論家算法核心思想和原理 演員(actor)代表策略&#xff0c;評論家代表價值函數。演員評論家算法是基于價值和策略的綜合性方法。具體來說該算法使用了策略梯度和時序差分方法&#xff0c;是二者的一種有機結合。 1. 主要思想 策略梯度算法以軌跡為單位更新&#xf…

PyCharm 快捷鍵指南

PyCharm 快捷鍵指南 常用編輯快捷鍵 代碼完成&#xff1a;Ctrl Space 提供基本的代碼完成選項&#xff08;類、方法、屬性&#xff09;導入類&#xff1a;Ctrl Alt Space 快速導入所需類語句完成&#xff1a;Ctrl Shift Enter 自動結束代碼&#xff08;如添加分號&#…

計算圖存儲采用矩陣嗎,和張量關系

計算圖存儲采用矩陣嗎,和張量關系 計算圖的存儲方式與張量的關系 一、計算圖的存儲方式 計算圖(Computational Graph)是一種用于描述數學運算的有向無環圖(DAG),其節點代表運算(如加減乘除、矩陣乘法、激活函數等),邊代表運算的輸入和輸出(通常是張量)。計算圖的…

RDD中分區、分區器及自定義分區器的學習

深入理解 Spark 中 RDD 分區與分區器&#xff1a;原理、應用及自定義實現 在大數據處理領域&#xff0c;Apache Spark 憑借其高效的分布式計算能力成為了眾多開發者的首選框架。在 Spark 中&#xff0c;彈性分布式數據集&#xff08;Resilient Distributed Dataset&#xff0c…

OpenCV CUDA 模塊中用于在 GPU 上計算矩陣中每個元素的絕對值或復數的模函數abs()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 void cv::cuda::abs(InputArray src, OutputArray dst, Stream &stream Stream::Null()) 是 OpenCV 的 CUDA 模塊中的一個函數&#xff0c;…

FramePack - 開源 AI 視頻生成工具

&#x1f3ac; 項目簡介 由開發者 lllyasviel 創建的一個輕量級動畫幀處理工具庫&#xff0c;專門用于游戲開發、動畫制作和視頻處理中的幀序列打包與管理。該項目采用高效的算法實現&#xff0c;能夠顯著提升動畫資源的處理效率。 此 AI 視頻生成項目&#xff0c;旨在通過低顯…

商業架構 2.0 時代:ZKmall開源商城前瞻性設計如何讓 B2B2C 平臺領先同行 10 年?

在數字化轉型加速的今天&#xff0c;傳統 B2B2C 平臺面臨用戶體驗割裂、數據孤島嚴重、業務擴展困難等挑戰。ZKmall 開源商城通過 “業務中臺 數據中臺 技術中臺”的三位一體架構設計&#xff0c;結合“插件化擴展 分布式服務 智能決策”*三大核心能力&#xff0c;構建起具…

Java中Money類的使用及與BigDecimal的對比

精心整理了最新的面試資料和簡歷模板&#xff0c;有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、為什么需要Money類&#xff1f; 在金融和商業計算中&#xff0c;精確的貨幣處理是至關重要的。雖然Java提供了BigDecimal類來處理高精度計算&#xff0c…

判斷數據的所有屬性是否都是基本類型

方法解釋 OnlyPrimitiveTypes 方法: 參數: 接收一個對象 obj 進行檢查。返回值: 返回布爾值&#xff0c;表示對象及其所有屬性是否僅包含基本類型。邏輯: 首先檢查 obj 是否為 null&#xff0c;如果是&#xff0c;則返回 true。然后檢查 obj 的類型是否為基本類型&#xff0c;如…

【Linux】Linux安裝并配置mysql

目錄 1.刪除原有mysql 2.添加 MySQL Yum Repository 3.安裝 MySQL 3.1.報錯 4.啟動 MySQL 服務 5.設置mysql 5.1.密碼驗證組件 5.2.密碼策略 5.3.移除匿名用戶 5.4.是否禁用root遠程訪問 5.5.是否刪除test 5.6.是否重新加載權限 5.7.設置遠程權限 5.7.1.登錄mysql…

springboot AOP 接口限流(基于IP的接口限流和黑白名單)

使用 Spring Boot 自定義注解和AOP實現基于IP的接口限流和黑白名單 在我們日常開發的項目中為了保證系統的穩定性&#xff0c;很多時候我們需要對系統做限流處理&#xff0c;它可以有效防止惡意請求對系統造成過載。常見的限流方案主要有&#xff1a; 網關限流&#xff1a; NG…

OpenCV CUDA模塊中矩陣操作------范數(Norm)相關函數

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 在 OpenCV 的 CUDA 模塊中&#xff0c;與范數&#xff08;Norm&#xff09;相關的函數主要用于計算矩陣的范數或者兩個矩陣之間的差值范數。 主…

生成對抗網絡(Generative Adversarial Networks ,GAN)

生成對抗網絡是深度學習領域最具革命性的生成模型之一。 一 GAN框架 1.1組成 構造生成器&#xff08;G&#xff09;與判別器&#xff08;D&#xff09;進行動態對抗&#xff0c;實現數據的無監督生成。 G&#xff08;造假者&#xff09;&#xff1a;接收噪聲 ?&#xff0c…