這里寫目錄標題
- 安裝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 區別
- Git 是一個分布式(在不同ip上)版本控制系統(VCS),用于跟蹤文件的更改歷史,特別適用于源代碼管理。它允許開發者在本地和遠程倉庫中管理代碼、跟蹤代碼的修改、恢復歷史版本并進行并行開發
- 開發者在本地機器上使用
git init
初始化一個 Git 倉庫,進行代碼開發、提交(git commit
)和分支(git branch
)操作。所有操作都發生在本地 。
- 開發者在本地機器上使用
- GitHub 基于 Git 的托管平臺(云端),提供遠程代碼倉庫
- eg:如果一個開發者在 GitHub 上創建了一個名為
my-project
的倉庫,他可以使用git clone https://github.com/username/my-project.git
克隆該倉庫到本地,進行開發后送回 GitHub。
- eg:如果一個開發者在 GitHub 上創建了一個名為
- GitLab:與 GitHub 類似的托管平臺,(可自托管) 企業可以將 GitLab 安裝在自己的服務器上,完全控制源代碼和數據。
- Gitee 基于 Git 的代碼托管平臺 , 國內的,訪問速度快
visual studio中使用git
打開vs:工具->選項->源代碼管理→插件選擇
git使用步驟
- 在開始編寫代碼之前,首先需要創建一個 Git 倉庫(repository),用于存儲代碼和版本歷史記錄。
- 在編寫代碼時,可以通過 命令將更改的文件添加到 Git 的暫存區(staging area)中。
git add
- 通過 命令將暫存區中的更改提交到 Git 倉庫中,并生成一個新的版本號(commit hash)。
git commit
- 如果需要撤銷某個提交,可以使用 命令來創建一個新的提交,該提交將會抵消先前的提交效果。
git revert
- 如果需要合并不同分支的代碼,可以使用 命令進行合并。
git merge
- 如果需要查看代碼的歷史提交記錄,可以使用 命令來獲取詳細信息。
git log
- 如果需要將代碼推送到遠程倉庫,可以使用 命令將本地代碼推送到遠程倉庫。
git push
- 如果需要從遠程倉庫中獲取代碼,可以使用 命令將遠程代碼拉取到本地。
git pull
git命令
-
git init :
- 把當前目錄目錄變成git可以管理的倉庫,這時候你當前目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的
-
git add readme.txt :
- 添加文件到 Git 緩存區
-
git commit -m “Add hello.txt file”
git commit -m
會將暫存區的內容提交到倉庫,并附上提交信息 ,簡明扼要地描述此次提交的目的。- 會將文件的更改提交到 本地 Git 倉庫。這個本地倉庫是你電腦上的一個隱藏目錄(通常在項目目錄中的
**.git**
文件夾里) ,git push:用于將本地倉庫的更改推送到遠程倉庫(例如 GitHub - 輸出中會顯示你當前所在的分支
- git commit 會打開默認文本編輯器
- git commit -a -m “提交說明” : 會自動將所有已跟蹤的文件的更改添加到暫存區,然后直接提交
-
git status:
- 當前分支狀態 : Git 會告訴你當前分支和遠程分支的關系(比如是否落后、領先或者是同步的)。
- 未暫存的更改(Unstaged Changes) : modified和deleted
- 暫存區的更改(Staged Changes),待commit狀態
- (Untracked Files, 創建了新文件,但這些文件還沒有被 Git 跟蹤
- git status --ignored 來查看被忽略的文件
-
git log : 列出所有的提交記錄 ,每次記錄的版本號,時間,作者等,git reflog會列出回退之后的最新版本
-
**git rebase -i HEAD~n 😗*查看最近n次提交,把pick改為drop就可以刪掉這個記錄
-
pick cbcc08b 初始化網絡完成
- pick 989cd25 半成品
- pick c0904ee master提交測試
- pick 563959c vs里git提交測試
- drop 11160ac 刪除1.txt 修改ignore,把每個項目下的x64文件夾也忽略
- drop 8bec162 提交gitignore文件
-
**git diff**
:顯示當前文件和暫存區或歷史提交之間的差異,幫助用戶了解文件的具體改動 -
版本回退
-
git reset --hard HEAD^ 幾個^就是往前回退幾個版本
-
git reset --hard +版本號回退至對應版本
-
同步: 將本地倉庫與遠程倉庫保持一致
-
這個過程包括將本地的更改推送到遠程倉庫,以及從遠程倉庫獲取其他人提交的最新更改
-
git branch 查看分支
-
git branch -r 查看遠程分支
-
git branch -a 查看本地和遠程所有分支
-
**git branch <branch-name>**
:創建一個新的分支,用于開發新的功能或修復問題,避免影響主分支。 -
**git checkout <branch-name>**
切換到指定分支,Git 會更新工作目錄的內容為該分支的最新提交。 -
git checkout -b 創建并切換到新分支
-
git checkout 切換到某個特定的提交記錄
-
**git merge <branch-name>**
:合并是將一個分支的更改合并到另一個分支中,而不改變已有提交的歷史記錄。它會創建一個新的合并提交(merge commit)來記錄這次操作。 -
變基是將一個分支的提交歷史重新應用到另一個分支的最新提交之后。變基會重寫歷史記錄,將變基分支的提交移到基準分支的最新提交之后。
-
git checkout feature# 切換到 feature 分支
-
git rebase main # 將 feature 分支的基準改為 main 分支的最新提交
-
**git branch -d <branch-name>**
:刪除本地分支。在確保分支已被合并或不再需要時使用。 -
git push origin <分支名>
git push origin feature-xyz
會將feature-xyz
分支推送到遠程倉庫的feature-xyz
分支。 -
git fetch origin <遠程分支名>:<本地分支名> 拉取遠程分支并創建本地分支:
-
git diff <分支1> <分支2> 比較分支
-
**git push**
:將本地倉庫的提交推送到遠程倉庫。常用于與團隊共享代碼或備份代碼 -
**git pull**
:從遠程倉庫拉取最新的更改并與本地代碼庫合并。適用于同步遠程倉庫中的最新更新 -
**git clone <repository-url>**
:從遠程倉庫克隆代碼庫到本地。會復制所有的版本歷史,使本地倉庫成為遠程倉庫的副本
git刪除某些歷史提交記錄
1、 使用 git log
或 git 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即可,
在這里運行:
之后全都恢復,文件夾也可以刪除了。