系列筆記
【2025年超詳細】Git 系列筆記-1 Git簡述、Windows下git安裝、Linux下git安裝_displaying 2e+144 commits. adjust this setting in -CSDN博客
【2025年超詳細】Git 系列筆記-2 github連接超時問題解決_2025訪問github-CSDN博客
【2025年超詳細】Git 系列筆記-3 Git客戶端-Github desktop使用及IDEA集成Github、Gitee-CSDN博客
內容簡述
? ? ? ? 本小節分兩個章節,分別詳細介紹了git版本號以及git指令兩個重要知識點。詳細的列出了各種相關指令及操作以及常用的遠程倉庫例如github的相關操作、生成SSH公鑰并添加到github的方法等內容。
? ? ? ? 文字清晰、步驟明確,適合新手學習git。
第五章 版本號
一、版本號概念
????????Git采用40個16進制數字(SHA-1加密算法)組成版本號,這樣生成的SHA-1哈希值作為唯一標識符來表示倉庫中的每一次提交、文件(blob)、目錄樹(tree)和標簽(tag)的狀態。
? ? ? ? 因為版本號每次提交時生成,又名提交碼。保存于 .git/objects 文件夾中,根據版本號就能找到文件。40個數字的前2位標識文件夾,后38位標識文件名。
? ? ? ? 可以使用 git log 查看提交歷史,其中包含完整的SHA-1。或者使用 git log --online 來顯示簡短的提交哈希值和提交信息。
二、版本號-文件操作
2.1.查看定位到的文件內容
????????進入到 .git/objects 文件夾中,可以根據版本號找到文件。
? ? ? ? 若此時想要使用記事本等文本編輯器查看內容,會發現內容全是亂碼,此時要使用git自帶的工具進行查看。
????????回到倉庫的根路徑,右鍵選擇?git bash here,在終端輸入??git cat-file -p 版本號?。其中-p表示友好的訪問文件內容。
????????發現內容并非我們想要看到的內容,因為git在文件創建修改的過程中,創建了多個版本號。此時根據剛才生成的tree版本號的直接關聯,繼續深入即可看到我們想要看到的文件內容。
2.2.不同狀態文件會有不同的版本號
????????1、添加文件
????????當前提交的新增文件,關聯著新舊兩個版本的文件內容,這就是新增時的版本變化。
????????2、修改文件
????????修改文件同樣會與最開始的版本號內容相關聯,也新增了一個版本號對應著修改后的文件內容。
????????3、刪除文件
????????刪除后只關聯一個版本號,對應著文件狀態,但文件狀態不關聯于文件內容了。但本質上并未真正刪除這個文件,其實是一個歷史版本,依舊存在于倉庫之中。
三、版本號-分支操作
3.1.分支操作對版本號的影響
????????最新的版本號:.git文件夾中有一個名叫HEAD的文件,里面存儲的內容為一個文件路徑ref: refs/heads/main,此時指向的文件內容就是最新的版本號。
????????此時在github desktop中創建一個新的分支,在heads文件夾中也能找到新創建的分支。
3.2.分支操作的版本號變化
????????不同的分支指向不同的版本,互相就不會有太大的影響
3.3.分支切換后變化
????????切換分支之后,git會將對應版本的文件提取到倉庫中。
第六章 Git指令
一、Git常用指令介紹
二、倉庫操作指令
2.1.查看git版本
? ? ? ? 輸入以下指令,查看git版本。
git -v
2.2.創建倉庫
????????在終端界面輸入以下指令,完成本地倉庫的初始化。此時ref、objects等文件夾下都為空,因為此時只完成初始化,當前沒有提交操作,而使用github desktop等git工具會自動進行一個初始化的提交,生成ref等文件夾。
git init 倉庫名
2.3.clone項目
????????在終端界面輸入以下指令即可從遠程倉庫clone項目。
git clone 克隆地址
2.3.1.github例子
????????以github為例,進入感興趣的項目頁面,找到圖片中位置的綠色Code下拉列表,點擊下拉列表,即會出現clone所需要的URL,
? ? ? ? 選擇你的克隆方式,HTTPs URL 或者 SSH URL,選擇對應的選項,然后復制地址,回到終端,使用指令克隆即可。
(注意)Linux推薦使用SSH方式,否則將本地倉庫推送到遠程倉庫時可能會一直出現提示輸入github賬戶密碼,但是無法推送的情況。
2.3.2.gitee例子
????????gitee克隆地址如圖所示,選擇克隆或下載,復制對應URL到指令中即可完成clone。
三、文件操作指令
3.1.git status查看狀態
????????通過以下指令可以查看當前git狀態。
git status
3.2.git add添加到暫存區
????????當有文件新增,但是與倉庫未追蹤時,會處于untracked(未跟蹤)狀態。
????????需要通過??git add?指令添加到暫存區,之后進行比對操作。通過?git add *.txt?,可以將所有類型為txt的文件添加到暫存區。
3.3.git rm從暫存區移動回工作區
????????若想將文件從暫存區放回工作區域可以使用RM指令,例如git rm –cached test01.txt,此時文件重新回到未跟蹤狀態。
3.4.commit從暫存區提交到倉庫
????????通過git commit -m 備注內容,可以將文件提交到本地倉庫。
3.5.git log 查看日志
3.6.刪除
????????刪除其實本質上也是一種提交,只是文件引用的時候不在引用這個文件了,所以也使用git add指令,將刪除的狀態添加到暫存區。
3.7.誤刪除處理相關指令
3.7.1.恢復刪除文件
????????使用?git restore 文件名 指令,將錯誤操作的文件恢復。但若是已經將刪除提交了,此時直接恢復就已經恢復不了。
git restore 文件名
3.7.2.重置版本
????????可此時可以考慮使用?git reset –hard 版本號?指令,將版本重置到開始的提交。但是會將開發過程中的提交也重置,這種操作并不好。
git reset –hard 版本號?
3.7.2.撤銷操作
????????通過?git revert 版本號?指令 ,可以用于撤銷一次或多次操作,并記錄新的提交將這些撤銷的操作記錄下來。相當于返回上一步的感覺,等同于將刪除前的版本進行了一次新的提交,所以不會影響過程中的提交記錄。
git revert 版本號
四、分支操作指令
4.1.創建新分支
? ? ? ? 使用以下指令,可以創建一個新分支。
git branch 分支名
(注意)需要注意的是,在進行其他分支的創建之前,需要有提交操作,將默認分支提交打到本地倉庫,有了默認分支之后才可以進行其他分支的創建。
4.2.查看分支
? ? ? ? 使用以下指令,可以查看當前有的分支。
git branch -v
4.3.切換分支
? ? ? ? 使用以下指令,可以切換分支到你希望進行操作的分支。當前所處的分支會被*標記。
git checkout 分支名
4.4.創建并切換分支
????????使用以下指令,可以直接創建并切換到新分支。
git checkout -b 分支名
4.5.刪除分支
????????使用以下指令,可以刪除分支。
git branch -d 分支名
4.5.合并分支
???????使用以下指令,可以將分支名所代表的分支合并到主分支。合并分支時,需要將當前分支切換為主分支。
git merge 分支名
????????當出現 MERGING 提示的時候,證明合并過程中出現了問題。通過人工判斷合并出錯的內容,去除掉沖突內容,再次提交即可。
五、標簽相關指令
5.1.創建標簽
????????使用?git tag 標簽名(需使用英文) 版本號 指令,可以為版本創建標簽,此后就可直接使用標簽名對應版本。類似于git log 標簽1,它顯示的內容就是標簽1對應的版本日志。
????????ps:標簽不能重復。
5.2.刪除標簽
? ? ? ? 使用以下指令,即可刪除標簽。
git tag -d 標簽名
六、遠程倉庫操作指令
6.1.關聯遠程倉庫
????????使用以下指令,為本地倉庫配置URL。????????
git remote add 英文名稱 URL
????????遠程倉庫中自帶配置文件,在 .git 的config文件中有一段數據為[remote “origin”],此處會存有遠程倉庫的url與fetch。在使用的過程中,可以使用“origin”這個名稱代替我們的URL。
????????實際開發中,有些項目不提供https格式的路由,而是SSH等格式,則需要到這個文件中,將URL修改成所需要的地址。
????????若為本地創建的倉庫,沒有URL,則可以通過指令git remote add 英文名稱 URL,為其配置url。
????????還可以通過git remote rename/remove來修改名稱或者刪除。
6.2.本地推送到遠程倉庫-PUSH
6.2.1.推送到遠程倉庫
ssh keygen -t ras C 地址
????????在本地倉庫中add后commit提交到本地倉庫,本地倉庫提交完成后,就可以使用?git push 地址?的指令,將本地倉庫的內容推送到遠程倉庫。若是已經配置了SSH文件,則直接使用git push指令即可推送到對應的遠程倉庫。
git push 地址
6.2.2.配置SSH文件
????????如果URL的格式為SSH格式,則還需要安全認證并配置一下。
????????使用以下指令,可以為倉庫配置公鑰文件,將公鑰文件中的內容,復制到遠程倉庫的公鑰界面,添加到其中即可使用。
ssh keygen -t ras C 地址
6.2.3.公鑰文件所處位置
? ? ? ? Windows:c盤--->用戶--->.ssh(安全認證文件夾)--->id_ras.pub(文件)
? ? ? ? Linux:根目錄/.ssh/id_rsa.pub
cd ~/.ssh cat id_rsa.pub
????????使用文本編輯器將公鑰內容復制起來,在遠程倉庫創建SSH Key。
6.2.4.添加公鑰到遠程倉庫-以github為例
????????①前往github的個人頁面,在左上角點擊頭像,在下拉列表中選擇Settings選項,進入設置頁面。
? ? ? ? ②在設置頁面,找到 SSH and GPG keys 選項,點擊進入頁面。
????????
? ? ? ? ③選擇右上角的NEW SSH Key,新建一個SSH key。
? ? ? ? ④為這個公鑰取一個標題,將公鑰內容粘貼到Key框中,點擊Add SSH Key按鈕,完成SSH公鑰的創建。
6.2.PULL(遠程倉庫拉取到本地)
6.2.1.pull指令
? ? ? ? 使用以下指令,可以將遠程倉庫拉取到本地。其中origin為遠程倉庫名稱,按需更換。? ??
git pull origin
6.2.2.pull與clone與fetch區別
git clone:首次下載整個倉庫到本地。只在項目開始時執行一次。
git fetch:?安全獲取遠程的更新信息,不改變工作目錄、暫存區、當前本地分支內容
git pull:獲取遠程倉庫更新內容并立即合并到本地倉庫。改變當前本地分支和工作目錄。相當于fetch+merge的組合操作。
總結: