Git 基本操作 ?作區、暫存區、版本庫

創建本地倉庫:

????????創建 Git 本地倉庫

????????要提前說的是,倉庫是進行版本控制的?個文件目錄。我們要想對文件進行版本控制,就必須先創建?個倉庫出來。

? ? ? ? 首先touch 一個文件:

? ? ? ? 初始化倉庫:

? ? ? ? 創建完成后,我們會發現當前目錄會出現一個.git 文件

????????我們發現,當前目錄下多了?個 .git 的隱藏文件, .git 目錄是 Git 來跟蹤管理倉庫的,不要手動修改這個目錄里面的文件,不然改亂了,就把 Git 倉庫給破壞了。

配置 Git

????????當安裝 Git 后首先要做的事情是設置你的 用戶名稱 和 e-mail 地址,這是非常重要的。配置命令為:? ? ??

git config user.name "XX"
git config user.email  "XXXXX"
# 把 Your Name 改成你的昵稱
# 把 email@example.com 改成郵箱的格式,只要格式正確即可。

查看配置命令為:

git config -l 

如果這樣顯示則說明配置成功。?

刪除name 和email 的操作。?

git config  --unset user.name
git config  --unset user.email

在系統下并非只有一個git的倉庫,如果我們想讓每個倉庫都配置上我們設置的name 和 email 的話,就要使用 git config --global user.name/email 。

刪除對應的配置命令為:

git config [--global] --unset user.name
git config [--global] --unset user.email

工作區、暫存區、版本庫

????????工作區:是在電腦上你要寫代碼或文件的目錄。
? ? ? ? 暫存區:英文叫 stage 或 index。?般存放在?.git 目錄下的 index 文件(.git/index)中,我們
把暫存區有時也叫作索引(index)。
? ? ? ? 版本庫:又名倉庫,英文名??repository。工作區有?個隱藏?錄 .git ,它不算工作區,而
是 Git 的版本庫。這個版本庫里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git
都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。

注意:我們不能手動修改 ".git" 文件下的任何文件。那么我們改如何管理我們的readme文件呢??

????????圖中左側為工作區,右側為版本庫。Git 的版本庫里存了很多東西,其中最重要的就是暫存區。
????????在創建Git版本庫時,Git會為我們自動創建?個唯?的 master 分支,以及指向 master 的?個指針叫 HEAD。
????????當對工作區修改(或新增)的文件執行?git add 命令時,暫存區目錄樹的文件索引會被更新(并沒有存對象,只存索引,所以是輕量級的)。同時修改的工作區內容會寫入對象庫的一個新的git對象中。
????????當執行提交操作 git commit 時,master 分支會做相應的更新,可以簡單理解為暫存區的目錄
樹才會被真正寫到版本庫中,這是git才對其進行了真正的管理。

? ? ? ? 由于這是我們新建的一個倉庫,沒有進行add操作?所以還沒有暫存區。

? ?我們能對工作區的 “readme” 文件進行直接的管理嗎,經過上述的解釋,只能通過 add commit 等操作之后,將readme 添加至版本庫,我們才能對其進行管理。

????????首先進行 add 操作 ,我們可以git add . 也可以git add readme ,前者是將工作區所有文件添加至暫存區,而后者則是將指定文件添加至暫存區。

? ? ? ? 之后進行commit 操作:將暫存區內容提交至本地倉庫(版本庫)。

? ? ? ? 我們可以發現git給我們維護的十分詳細。

????????如何查看我們提交的信息,使用 git log 或者 git log --pretty=oneline,區別在于是否一行打印出來。

? ? ? ? 其中每次提交都會生成commit id 來輕量化的記錄我們打印的信息。

查看 .git文件

先來看看我們的 .git 的?錄結構:

1. index 就是我們的暫存區,add 后的內容都是添加到這?的。

2. HEAD就是我們的默認指向 master 分支的指針:

3. objects 為 Git 的對象庫,里面包含了創建的各種版本庫對象及內容。當執行git add? 命令時,暫存區的?錄樹被更新,同時工作區修改(或新增)的文件內容被寫入到對象庫中的?個新的對象中 ,就位于 ".git/objects" 目錄下。

????????HEAD里面存儲的是 ref: refs/heads/master 那么master 中是什么呢?我們可以通過打印出master來查看。

????????我們發現master里存放的是最近一次提交的commit id。

? ? ? ? ?注意:commit id 我們要分為前后兩部分來看,查找 object 時要將 commit id 分成2部分,其前2位是?件夾名稱,后38位是文件名稱。找到這個文件之后,?般不能直接看到里面是什么,該類文件是經過(安全哈希算法)加密過的文件,好在我們可以使用 git cat-file 命令來查看版本庫對象的內容

? ? ? ? ?其中在詳細的信息中我們可以發現有一行為tree ,打印tree的commit id 我們發現是我們進行提交的readme 文件以及其 commit id ,在對其commit id 進行打印我們會發現里面顯示出來我們修改的內容。

? ? ? ? 我們每一次對文件的修改,提交到本地倉庫后都會被git記錄下來。修改的工作區內容會寫入對象庫的一個新的git中。

????????添加文件:

????????如果我們創建了一個至多個文件但是只對其中的一個文件進行add commit 操作,那么僅僅這一個文件被放到本地倉庫了,要是想對余下的文件也讓其放到本地倉庫中,我們就需要對其余的文件進行“add” 或者 “add.” ,之后今天commit就能夠放到本地倉庫了。

????????Git 比其他版本控制系統設計得優秀,因為 Git 跟蹤并管理的是修改,而非文件。什么是修改?比如你新增了一行,這就是?個修改,刪除了一行,也是?個修改,更改了某些字符,也是?個修改,刪了?些又加了?些,也是?個修改,甚至創建?個新文件,也算?個修改。

? ? ? ? 我們對readme文件添加一行代碼。

????????此時,倉庫中的 readme 和我們?作區的 readme 是不同的,使用 git status 命令用于查看在你上次提交之后是否有對文件進行再次修改。

? ? ? ? 在一個項目中往往一次修改的代碼往往成千上萬行,此時我們想要查看工作區與本地倉庫之間的代碼我們就要使用 git diff XXX 命令 。

? ? ? ? 此時再進行add操作,然后查看狀態發現此時狀態已經改變。

? ? ? ? 當我們commit 之后,顯示如下。

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

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

相關文章

行列式錯題本

《1800》 1 階數和轉置 A是三階,B是4階,還有2這個系數 2 怎么啥也不會呀,委屈 行列式的拆分+提取系數 3

uniapp 安裝安卓、IOS模擬器并調試

一、安裝Android模擬器并調試 1.下載并安裝Android Studio。 2.創建簡單project。 3.安裝模擬器。 完成安卓模擬器的安裝。 4.啟動模擬器。 5.hbuilderx選擇模擬器、運行。 點擊刷新按鈕后出現模擬器,勾選并運行。 6.調試。 在 HBuilderX 中,項目啟…

每天一道leetcode:20.有效的括號(簡單;棧的經典題目)

?今日份題目 給定一個只包括 (,),{,},[,] 的字符串 s ,判斷字符串是否有效。 有效字符串需滿足: 左括號必須用相同類型的右括號閉合。 左括號必須以正確的順序閉合。 每個右括號都有一個對…

Nano 33 BLE Sense Rev2學習第一節——環境配置

參考文檔見Access Barometric Pressure Sensor Data on Nano 33 BLE Sense | Arduino Documentation 打開Arduino ide安裝開發板 選擇開發板 連接開發板到電腦,自動識別開發板端口,選擇端口

Python-類型檢查:typing模塊和mypy工具

Python-類型檢查&#xff1a;typing模塊和mypy工具 >>返回Python系列文章目錄<< 文章鏈接: Python中typing模塊 文章鏈接: PyCharm集成類型檢查mypy

ssh 一次執行多條命令(后臺運行)

文章目錄 1. 背景2. 命令2.1 命令分隔符2.2 多行腳本2.3 單行腳本 3. SSH 任務后臺運行 1. 背景 有時我們只需要遠程執行一次任務然后就關閉&#xff0c;而不需要長時間 ssh 登錄到遠程服務器。同時一次任務可能需要執行多條命令&#xff0c;那么我們該如何做呢&#xff1f; …

【Java】查看class文件的jdk編譯版本的兩種方式

一、使用文本編輯工具EditPlus 使用EditPlus打開該class文件&#xff0c;字符集選擇16進制&#xff08;Hex viewer&#xff09;。 僅看第一行數據&#xff0c;前面8個字節CA FE BA BE是固定的。 之后4個字節00 00 是次版本。 次版本后面的4個字節00 34 就是jdk版本。 jdk版本…

torch中的sort用法|torch.sort

今天在學習代碼時&#xff0c;發現有些深度學習的項目中使用到torch.sort()函數&#xff0c;在此記錄一下&#xff0c;方便自己的查閱. torch.sort() 官網給出了非常詳細的介紹&#xff0c;但是為了更進一步掌握這一用法&#xff0c;在此記錄一下。 具體官網鏈接如下&#xf…

華為認證HCIP報名條件有哪些?考試要求介紹

華為HCIP認證是很多網絡工程師的考證首選&#xff0c;尤其對于剛入行不久的網絡工程師們來說&#xff0c;這個證書無論是從難度出發還是從含金量出發&#xff0c;都是值得一考的。 那么如果想報名華為HCIP認證有哪些條件以及考試要求&#xff0c;華為HCIP的報名需不需要通過機…

鏡頭畸變模型及去畸變的原理

1. OpenCV去畸變undistortPoints原理解析 Opencv中鏡頭畸變包含了徑向畸變和切向畸變&#xff0c;本章節主要闡述鏡頭畸變模型以及去畸變的原理。 1.1 鏡頭畸變模型 參考opencv文檔 https://docs.opencv.org/3.1.0/d4/d94/tutorial_camera_calibration.html&#xff0c;opencv…

基于SpringBoot+MYSQL的醫護人員排班系統

基于springboot的醫護人員排班系統錄像 1、 前言介紹 隨著信息技術在管理上越來越深入而廣泛的應用&#xff0c;管理信息系統的實施在技術上已逐步成熟。本文介紹了醫護人員排班系統的開發全過程。通過分析醫護人員排班系統管理的不足&#xff0c;創建了一個計算機管理醫護人員…

LSA頭部結構簡述

LSA&#xff08;Link State Advertisement&#xff09;是一種用于路由協議頭部結構&#xff0c;用于在網絡中傳遞路由信息。 LSA頭部結構包含以下幾個字段&#xff1a; 1、LSA類型&#xff08;LSA Type&#xff09;&#xff1a;指示LSA的類型&#xff0c;不同類型的LSA用于傳遞…

Rabbitmq消息丟失-消費者消息丟失(二)

說明&#xff1a;消費端在處理消息的過程中出現異常&#xff0c;例如&#xff1a;業務邏輯異常&#xff0c;或者消費者被停機&#xff0c;或者網絡斷開連接等&#xff0c;以上等情況使消息沒有得到正確恰當的處理&#xff0c;也會使消息丟失。 分析&#xff1a;分析就是說明中…

Composer基礎使用 SDK包初始化

Composer 的工作原理 我們在使用 Composer 之前我們得了解一下它的實現原理&#xff0c;它主要由三個部分組成&#xff1a;命令行工具、包倉庫、代碼庫&#xff1a; Packagist 它是官方倉庫&#xff0c;也就是我們平常說的 Composer 源&#xff0c;它的作用是存儲這些包的信息…

參數引入和全局變量引入實現-目標和

LCR 102. 目標和 - 力扣&#xff08;LeetCode&#xff09; 分析題意&#xff0c;畫出決策樹&#xff0c;其他的思路都跟前面講過的類似&#xff1a; 全局變量引入實現&#xff1a; 全局變量的引入&#xff0c;需要手動處理回溯&#xff1b; class Solution {int ret; //…

從0到1全流程使用 segment-anything

從0到1全流程使用 segment-anything 一、安裝 anaconda 一、下載 anaconda 二、以管理員身份運行安裝 1、勾選 Just Me 2、統一安裝路徑(后續 python 等包也安裝至此目錄) 3、勾選 add to path 然后安裝即可。 三、修改 Anaconda 默認路徑及默認緩存路徑 Anaconda 默認下…

K8S集群誤刪master節點,master節點恢復完美解決

問題描述&#xff1a; 在單節點的master節點k8s集群中不小心誤刪了master節點導致集群不可用。 多節點應的恢復方式同樣也適用。 解決方案&#xff1a; 兩條命令解決master節點恢復&#xff0c;而不是去重裝k8s集群。 執行下面命令&#xff0c;生成節點的join命令 kubeadm t…

藍橋杯 9241.飛機降落

這道題本來作者以為是可以用一些小技巧進行暴力解法的&#xff0c;但是后來試了一下&#xff0c;不能過去全部數據。 下面是對半個的題解&#xff1a; #include<iostream> #include<stdio.h> #include<cstring> #include<cstdlib> #include<cmath…

掌握 Python: 每個開發人員都應該知道的6個秘密技巧

無論你是一名經驗豐富的開發者還是剛踏入編程世界的新手&#xff0c;Python 很可能已經引起了你的興趣。 它功能強大、靈活多變&#xff0c;而且非常用戶友好&#xff01;但是&#xff0c;讓我們更進一步吧! 在這篇博客中&#xff0c;我將揭示一些隱藏的 Python 技巧&#xff0…

#QT(DEMO)

1.IDE&#xff1a;QTCreator 2.實驗&#xff1a;打印"hello wolrd" 3.記錄 &#xff08;1&#xff09;創建一個新工程&#xff1a; 新建好一個工程存放文件夾&#xff08;路徑不能有中文&#xff09;,然后按下圖配置 &#xff08;2&#xff09;點擊widgets.ui拖入以…