git企業開發的相關理論(一)

目錄

一.初識git

二.git的安裝

三.初始化/創建本地倉庫

四.配置用戶設置/配置本地倉庫

五.認識工作區、暫存區、版本庫

六.添加文件__場景一

七.查看 .git 文件/添加到本地倉庫后.git中發生的變化

1.執行git add后的變化

index文件(暫存區)

logs/HEAD文件

2.執行git commit后的變化

refs/heads/master

Objects目錄

logs/HEAD文件


一.初識git

類似于qq在線文檔,office里查看歷史版本,Git 是一個分布式版本控制系統,用于追蹤代碼的變化,協作開發,并能輕松管理不同版本的代碼。能像qq在線文檔一樣,大型多人在線編輯,office里的歷史版本,可以隨時回滾,對于文本文件能直接告訴你哪里發生了改動,二進制文件如圖片告訴你大概的變化。

二.git的安裝

1.Windows(x64):?Git-2.47.1-64-bit.exe

2.Ubuntu:?apt-get install git

3.macOs:??brew install git

三.初始化/創建本地倉庫

git init

創建這個詞便于理解,初始化才是本質。我們知道我們想要將什么放進我們的github/gitee,但計算機其實不知道,初始化其實就相當于圈了一塊地,告訴計算機,將這些推送到github/gitee。

同時會生成一個.git的隱藏文件,也就是真正的本地倉庫,版本庫,注意尤其不允許在.git下手動修改,否則可能導致該倉庫用不了

四.配置用戶設置/配置本地倉庫

一般配置為

git config --global user.name "xxx"
git config --global email "666666@xxxx.com"

檢查其是否配置成功,只需

git config -l//    若出現下列代碼,則表示配置成功
//    user.name=xxx
//    user.email=666666@xxx.com

我們的配置一般為全局配置,全局配置是指本地的所有倉庫默認都采取這種用戶配置,如果不采取全局配置,只需要去掉--global

git config user.name "xxx"
git config email "666666@xxxx.com"

最后,如果我們換一種配置,直接輸,系統會直接覆蓋,若們就是想取消所有配置,則輸入以下代碼,注意全局配置和局部配置不一樣,有沒有取消成功,再git config -l查看即可。

//    全局設置
git config --global --unset user.name
git config --global --unset user.email//    局部配置
git config --unset user.name
git config --unset user.email

五.認識工作區、暫存區、版本庫

如圖所示,這是在window系統中工作區,暫存區,版本庫的大致分布及一些原理。

當我們git init一個倉庫時,在里面添加文件,git是不能直接管理的,因為他處于工作區中。我們需要用git add .命令將其推送到.git文件所在的版本庫中,實際上是stage暫存區(索引)中。這時仍然沒有添加到本地倉庫中,需要使用git commit -m ‘xxx’命令將其推向HEAD指向的master中,這樣就算完成了。

無論是stage暫存區還是master中,存放的都是索引,具體的文件管理是在objects文件中,修改的工作內容會寫入對象的一個新的git對象中

六.添加文件__場景一

//    將文件從工作區添加到暫存區,有兩種辦法
git add .    // 會將所有修改的文件添加到暫存區
git add <file>    // 只會將file文件添加到暫存區,可同時添加多個//    將問件從暫存區推向master
git commit -m ‘xxxx’    //xxxx最好填寫其主要變化內容,方便后續管理  //    檢查推送狀態
git status//    查看推送日志
git log// 顯示如下信息// commit 1f458c82d3760f5db667167b742c5972e7904a97 (HEAD -> master)// Author: user.name <user.email>// Date:   Mon Dec 16 22:12:31 2024 +0800// <file>
//如果認為太長,也可以一行輸出
git log --pretty=oneline// 顯示如下信息// 1f458c82d3760f5db667167b742c5972e7904a97 (HEAD -> master) <file>

其中commit ID是根據哈希值整出來的獨一無二的,我們是通過這個進行版本的控制,每一次add操作都會想我們展示一些變化的細節,如推送了什么文件,文本文件,增加了多少行,減少了多少行之類的。

我們對單獨提交文件還需注意如下幾點

git add file1

git add file2

git commit -m 'text'

這樣只會將file2推送到本地倉庫file1不會,因為暫存區,畢竟是暫存區

此時要么add一次,commit一次

要么git add file1 file2,再commit

要么直接git add . ,然后再commit

七.查看 .git 文件/添加到本地倉庫后.git中發生的變化

1.執行git add后的變化

index文件(暫存區)

記錄當前暫存區的所有文件信息(包括文件的路徑、修改狀態和哈希值)。注意index 文件是二進制格式,你通常不能直接查看其內容。

logs/HEAD文件

logs/HEAD會記錄你最近的操作,尤其是指針的變化。例如,git add 后,你可以看到這個文件記錄了 HEAD(當前分支)的操作記錄。當前將HEAD用記事本打開,則是以下內容

// master文件所在路徑
ref: refs/heads/master

2.執行git commit后的變化

refs/heads/master

將master用記事本打開,可以清楚地看到,master中記錄的是git commit后最新的哈希值

Objects目錄

通過哈希值查看內容不再能使用記事本,需要用到下列命令

git cat-file -p <哈希值>

我們可以看到通過master中的哈希值,我們能得到tree(提交的整個樹的節點),parent(上一個節點),和提交者的信息。通過再次檢索tree,我們能得到其根目錄,然后檢索我們README.txt文件的哈希值,我們就能看到我們操作的具體變化。?

因此,修改的工作區內容會寫入到對象庫的一個新的git對象中。

logs/HEAD文件

logs/HEAD記錄了你最新的提交操作。例如,在執行git commit后,logs/HEAD會記錄這一操作的詳細信息,包含提交的哈希值、提交人、日期等信息。

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

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

相關文章

wxpython圖形用戶界面編程

wxpython圖形用戶界面編程 一、wxpython的基礎 1.1 wxpython的基礎 作為圖形用戶界面開發工具包 wxPython&#xff0c;主要提供了如下 GUI 內容&#xff1a; 窗口。控件。事件處理。布局管理。 1.2 wxpython的類層次機構 1.3 wxpython的安裝 Windows 和 macOS 平臺安裝&a…

水仙花數(流程圖,NS流程圖)

題目&#xff1a;打印出所有的100-999之間的"水仙花數"&#xff0c;并畫出流程圖和NS流程圖。所謂"水仙花數"是指一個三位數&#xff0c;其各位數字立方和等于該數本身。例如&#xff1a;153是一個"水仙花數"&#xff0c;因為1531的三次方&#…

不配置python環境,直接用PyCharm就可以?

有的伙伴可能遇到不安裝python環境只安裝pycharm也可以進行運行代碼。 所以自認為是不需要解釋器就可以運行&#xff1f; 這個是不現實的&#xff0c;有很多伙伴可能是安裝了Pycharm&#xff0c;但Pycharm看你電腦上沒有解釋器&#xff0c;所以在安裝的時候給你默認安裝在C盤…

網絡安全滲透測試概論

滲透測試&#xff0c;也稱為滲透攻擊測試是一種通過模擬惡意攻擊者的手段來評估計算機系統、網絡或應用程序安全性的方法。 目的 旨在主動發現系統中可能存在的安全漏洞、脆弱點以及潛在風險&#xff0c;以便在被真正的惡意攻擊者利用之前&#xff0c;及時進行修復和加固&…

爬蟲數據能用于商業嗎?

在當今數字化時代&#xff0c;數據已成為企業獲取競爭優勢的關鍵資源。網絡爬蟲作為一種數據收集工具&#xff0c;能夠從互聯網上抓取大量數據&#xff0c;這些數據在商業分析中扮演著重要角色。然而&#xff0c;使用爬蟲技術獲取的數據是否合法、能否用于商業分析&#xff0c;…

前端面試匯總(不定時更新)

目錄 HTML & CSS1. XML、HTML、XHTML 有什么區別&#xff1f;?2. XML和JSON的區別&#xff1f;3. 是否了解W3C的規范&#xff1f;?4. 什么是語義化標簽&#xff1f;??5. 行內元素和塊級元素的區別&#xff1f;?6. 行內元素和塊級元素的轉換&#xff1f;?7. 常用的塊級…

SpringCloud微服務實戰系列:03spring-cloud-gateway業務網關灰度發布

目錄 spring-cloud-gateway 和zuul spring webflux 和 spring mvc spring-cloud-gateway 的兩種模式 spring-cloud-gateway server 模式下配置說明 grayLb://system-server 灰度發布代碼實現 spring-cloud-gateway 和zuul zuul 是spring全家桶的第一代網關組件&#x…

QT3學習之進階理解信號和槽:如何自定義一個類信號,供其它類調用槽函數

下面是QWidget源碼&#xff0c;定義了兩個事件 /*!This event handler can be reimplemented in a subclass to receivewidget enter events.An event is sent to the widget when the mouse cursor enters thewidget.\sa leaveEvent(), mouseMoveEvent(), event() */void QWi…

GaLore和Q-GaLore:一種記憶高效的預訓練和微調策略,用于大型語言模型(LLMs)

GaLore和Q-GaLore&#xff1a;一種記憶高效的預訓練和微調策略&#xff0c;用于大型語言模型&#xff08;LLMs&#xff09; GaLore和Q-GaLore的設計背景、工作原理及其優勢 設計背景 隨著大型語言模型&#xff08;LLMs&#xff09;的發展&#xff0c;模型的規模和復雜性不斷…

【網絡云計算】2024第51周-每日【2024/12/17】小測-理論-解析

文章目錄 1. 計算機網絡有哪些分類2. 計算機網絡中協議與標準的區別3. 計算機網絡拓撲有哪些結構4. 常用的網絡設備有哪些&#xff0c;分屬于OSI的哪一層5. IEEE802局域網標準有哪些 【網絡云計算】2024第51周-每日【2024/12/17】小測-理論-解析 1. 計算機網絡有哪些分類 計算…

ActiveMQ 反序列化漏洞CVE-2015-5254復現

文章目錄 一、產生原因二、利用條件三、利用過程四、PoC&#xff08;概念驗證&#xff09;五、poc環境驗證使用find搜索vulhub已安裝目錄打開activeMQ組件查看配置文件端口啟動鏡像-文件配置好后對于Docker 鏡像下載問題及解決辦法設置好鏡像源地址&#xff0c;進行重啟docker查…

shardingsphere分庫分表跨庫訪問 添加分片規則

shardingsphere分庫分表跨庫訪問 添加分片規則 建立 JDBC 環境 創建表 t_order&#xff1a; CREATE TABLE t_order (tid bigint(20) NOT NULL,tname varchar(255) DEFAULT NULL,goods_id bigint(20) DEFAULT NULL,tstatus varchar(255) DEFAULT NULL,PRIMARY KEY (tid) ) E…

C++ 中,構造函數、拷貝構造函數和移動構造函數區別

在 C 中&#xff0c;構造函數、拷貝構造函數和移動構造函數是類中用于對象初始化的三種不同類型的構造函數。它們的功能和使用場景有所不同&#xff0c;下面詳細解釋它們之間的區別。 1. 構造函數 (Constructor) 定義&#xff1a; 構造函數是一個特殊的成員函數&#xff0c;用…

MYSQL執行一條update語句,期間發生了什么

客戶端先通過連接器建立連接&#xff0c;連接器自會判斷用戶身份&#xff1b; 因為這是一條 update 語句&#xff0c;所以不需要經過查詢緩存&#xff0c;但是表上有更新語句&#xff0c;是會把整個表的查詢緩存清空的&#xff0c;所以說查詢緩存很雞肋&#xff0c;在 MySQL 8…

vue3監聽橫向滾動條的位置;鼠標滾輪滑動控制滾動條滾動;監聽滾動條到頂端

1.橫向取值scrollLeft 豎向取值scrollTop 2.可以監聽到最左最右側 3.鼠標滾輪滑動控制滾動條滾動 效果 <template><div><div class"scrollable" ref"scrollableRef"><!-- 內容 --><div style"width: 2000px; height: 100…

深入理解MyBatis的Mapper層:讓數據訪問更高效

目錄 1. 什么是MyBatis的Mapper層&#xff1f; 1.1 典型的Mapper層結構 1.2 示例&#xff1a;一個簡單的用戶管理系統 2. 創建Mapper層 2.1 創建實體類 2.2 創建Mapper接口 2.3 創建Mapper XML文件&#xff08;可選&#xff09; 2.4 配置MyBatis的SQL映射 3. 使用Mapp…

WPF xaml 文件詳解

<div id"content_views" class"htmledit_views"><h2><a name"t0"></a>1.總述</h2> 創建好了WPF項目后&#xff0c;最重要的是對 App和MainWindow的理解&#xff0c;在一開始的時候&#xff0c;極容易就直接在Main…

鴻蒙開發-ArkTS 創建自定義組件

在 ArkTS 中創建自定義組件是一個相對簡單但功能強大的過程。以下是如何在 ArkTS 中創建和使用自定義組件的詳細步驟&#xff1a; 一、定義自定義組件 使用Component注解&#xff1a;為了注冊一個組件&#xff0c;使其能夠在其他文件中被引用&#xff0c;你需要使用Component…

Golang學習筆記_05——延遲調用

Golang學習筆記_02——函數 Golang學習筆記_03——匿名函數和閉包 Golang學習筆記_04——遞歸函數 文章目錄 延遲調用1. 延遲調用1.1 使用場景1.2 示例 2. panic2.1 使用場景2.2 示例 3. recover3.1 使用場景3.2 示例 源碼 延遲調用 在Go語言中&#xff0c;延遲調用&#xff0…

防范TCP攻擊:策略與實踐

TCP&#xff08;傳輸控制協議&#xff09;是互聯網通信的核心協議之一&#xff0c;它確保了數據在網絡上的可靠傳輸。然而&#xff0c;TCP也容易成為各種網絡攻擊的目標&#xff0c;如SYN洪水攻擊、TCP連接耗盡攻擊等。本文將探討如何通過配置防火墻規則、優化服務器設置以及采…