【Git】版本控制器詳解之git的概念和基本使用

版本控制器git

  • 初始Git
  • git的安裝
  • git的基本使用
    • 初始化本地倉庫
    • 配置本地倉庫
    • 三區協作
    • 添加---add
    • 修改文件--status|diff
    • 版本回退--reset
    • 撤銷修改
    • 刪除文件

初始Git

為了能夠更?便我們管理不同版本的?件,便有了版本控制器。所謂的版本控制器,就是?個可以記錄?程的每?次改動和版本迭代的?個管理系統,同時也?便多?協同作業。
目前最主流的版本控制器就是Git。Git可以控制電腦上所有格式的文件,例如doc、excel、dwg、dgn、rvt等等。對于開發?員來說,Git最重要的就是可以幫助我們管理軟件開發項?中的源代碼文件

git的安裝

Centos7.9下安裝git

查看是否安裝git
git --version 
//沒有則使用yum安裝
sudo yum -y install git

git的基本使用

初始化本地倉庫

git init

執行完畢后會生成一個隱藏的.git文件,內含有配置信息

配置本地倉庫

當安裝Git后?先要做的事情是設置你的用戶名、e-mail地址

#設置配置
[wmh@pDaD gitcode]$ git config user.name "wmh"
[wmh@pDaD gitcode]$ git config user.email "66666@qq.com"
#查看配置
[wmh@pDaD gitcode]$ git config -l
user.email=66666@qq.com
user.name=wmh
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true#刪除配置
[wmh@pDaD gitcode]$ git config --unset user.name
[wmh@pDaD gitcode]$ git config --unset user.email
[wmh@pDaD gitcode]$ git config -l
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

配置全局生效
全局的配置必須使用全局的刪除

[wmh@pDaD gitcode]$ git config --global user.name "wmh"
[wmh@pDaD gitcode]$ git config --global user.email "66666@qq.com"[wmh@pDaD gitcode]$ git config --global --unset user.name
[wmh@pDaD gitcode]$ git config --global --unset user.email

三區協作

在這里插入圖片描述
.git:版本庫,雖然在工作區,但是不屬于工作區
code:工作區;用來寫代碼的文件或者是目錄
在這里插入圖片描述

剛創建的myfile是不會被git管理起來的,需要先add到暫存區,然后commit到版本庫的master分支下,暫存區和master下存儲的都是git對象

添加—add

git add .  #把當前目錄所有文件添加到暫存區
git commit -m “注釋” #把暫存區內容交付給版本庫
git log #顯示日志
[wmh@pDaD code]$ git add .
[wmh@pDaD code]$ git commit -m "first file"
[master (root-commit) bd3f11d] first file1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 myfile
[wmh@pDaD code]$ touch myfile2
[wmh@pDaD code]$ git add myfile2
[wmh@pDaD code]$ git commit -m "add new file"
[master 0857536] add new file1 file changed, 0 insertions(+), 0 deletions(-)create mode 100644 myfile2
[wmh@pDaD code]$ git log
commit 0857536013e6b5c890d2fa0ba454041e30bfab15
Date:   Wed Aug 9 17:16:36 2023 +0800add new filecommit bd3f11df093e0e559697f0a2989a32843c30783b
Date:   Wed Aug 9 17:15:41 2023 +0800first file
[wmh@pDaD code]$ git log --pretty=online
fatal: invalid --pretty format: online
[wmh@pDaD code]$ git log --pretty=oneline
0857536013e6b5c890d2fa0ba454041e30bfab15 add new file
bd3f11df093e0e559697f0a2989a32843c30783b first file

觀察.git文件結構變化
在這里插入圖片描述
在.git文件里,可以看到出現了index(暫存區),前面說道HEAD指向master,通過cat .git/HEAD查到了master;接著查看master內容結果是一串哈希摘要,并且與object第一個字符串相同,其實就是git對象,通過深度查閱哈希摘要發現有tree、parent等字段,parent對應的是上一個commit對象,再細細追究,就是修改的文件內容

修改文件–status|diff

git status 命令?于查看在你上次提交之后是否有對?件進?再次修改
git diff [file] 命令?來顯示暫存區和?作區文件的差異
在這里插入圖片描述
也可以使? git diff HEAD – [file] 命令來查看版本庫和?作區?件的區別
當使用git add之后,再次查看,發現少了一行,完成完整的操作流程,最后就會顯示沒用什么可以commit的了
在這里插入圖片描述

版本回退–reset

執行 git reset 命令?于回退版本,可以指定退回某?次提交的版本。
要解釋?下“回退”本質是要將版本庫中的內容進行回退,?作區或暫存區是否回退由命令參數決定:
git reset 命令語法格式為: git reset [--soft | --mixed | --hard] [HEAD]
? --mixed 為默認選項,使?時可以不?帶該參數。該參數將暫存區的內容退回為指定提交版本內
容,?作區?件保持不變。
? --soft 參數對于?作區和暫存區的內容都不變,只是將版本庫回退到某個指定版本。
? --hard 參數將暫存區與?作區都退回到指定版本。切記?作區有未提交的代碼時不要用這個命
令,因為?作區會回滾,你沒有提交的代碼就再也找不回了,所以使用該參數前?定要慎重。
? HEAD 可直接寫成commit id,表示指定退回的版本
在這里插入圖片描述
演示–hard
在這里插入圖片描述
git log查看提交日志,找到以前的commit id
使用git reset進行回退到之前的版本,如果記得回退之前的commit id,可以再次回退
使用git reflog用于查看本地提交記錄,簡短的commit id也可以進行版本回退

撤銷修改

情況?:對于工作區的代碼,還沒有add

git checkout -- myfile
[wmh@pDaD code]$ cat myfile
first line
second line
third line
[wmh@pDaD code]$ git checkout -- myfile
[wmh@pDaD code]$ cat myfile
first line
second line

情況?:已經 add ,但沒有 commit
方案一:使用git reset -- mixed+git checkout
方案二:使用git reset -- hard

[wmh@pDaD code]$ cat myfile
first line
second line
shhhshsh[wmh@pDaD code]$ git add myfile
[wmh@pDaD code]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	modified:   myfile
#
[wmh@pDaD code]$ git reset --mixed HEAD
Unstaged changes after reset:
M	myfile
[wmh@pDaD code]$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   myfile
#
no changes added to commit (use "git add" and/or "git commit -a")[wmh@pDaD code]$ git checkout -- myfile
[wmh@pDaD code]$ git status
# On branch master
nothing to commit, working directory clean

情況三:已經 add ,并且也 commit 了,但還未push
直接寫HEAD是當前版本
HEAD^-----上一版本
HEAD^^----上上一版本

#回退到上一個版本
git reset --hard HEAD^

刪除文件

已經 add ,并且也 commit 了的文件,要刪?件,除了要刪工作區的?件,還要清除版本庫的?件。
第一步:使用 git rm file
第二步:git commit

[wmh@pDaD code]$ git rm myfile3
rm 'myfile3'
[wmh@pDaD code]$ ll
total 4
-rw-rw-r-- 1 wmh wmh 23 Aug 10 17:04 myfile
-rw-rw-r-- 1 wmh wmh  0 Aug 10 16:18 myfile2
[wmh@pDaD code]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	deleted:    myfile3
#
[wmh@pDaD code]$ git commit -m "delete file3"
[master dda18c2] delete file31 file changed, 0 insertions(+), 0 deletions(-)delete mode 100644 myfile3
[wmh@pDaD code]$ git status
# On branch master
nothing to commit, working directory clean

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

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

相關文章

yolo源碼注釋2——數據集配置文件

代碼基于yolov5 v6.0 目錄&#xff1a; yolo源碼注釋1——文件結構yolo源碼注釋2——數據集配置文件yolo源碼注釋3——模型配置文件yolo源碼注釋4——yolo-py 數據集配置文件一般放在 data 文件夾下的 XXX.yaml 文件中&#xff0c;格式如下&#xff1a; path: # 數據集存放路…

基于ssm+vue的新能源汽車在線租賃管理系統源碼和論文PPT

基于ssmvue的新能源汽車在線租賃管理系統源碼和論文PPT010 開發環境&#xff1a; 開發工具&#xff1a;idea 數據庫mysql5.7(mysql5.7最佳) 數據庫鏈接工具&#xff1a;navcat,小海豚等 開發技術&#xff1a;java ssm tomcat8.5 摘 要 隨著科學技術的飛速發展&#xff0…

Ajax及前端工程化

Ajax&#xff1a;異步的js與xml。 作用&#xff1a; 1、通過ajax給服務器發送數據&#xff0c;并獲得其響應的數據。 2、可以在不更新整個網頁的情況下&#xff0c;與服務器交換數據并更新部分網頁的技術。 一、同步與異步 二、原生Ajax 1、準備數據地址 2、創建XMLHttpReq…

SCSS的基本用法

1、聲明變量 $ 聲明變量的符號 $ 下面這張圖左半部分是scss的語法&#xff0c;右半部分是編譯后的css。&#xff08;整篇文章皆是如此&#xff09; 2、默認變量 !default sass 的默認變量僅需要在值后面加上 !default 即可。 如果分配給變量的值后面添加了 !default 標志…

Qt 雜項(Qwt、樣式等)

Qt隱藏窗口邊框 this->setWindowFlags(Qt::FramelessWindowHint);Qt模態框 this->setWindowModality(Qt::ApplicationModal);QLable隱藏border 代碼中設置 lable->setStyleSheet("border:0px");或者UI中直接設置樣式&#xff1a;“border:0px” Qwt開源…

JS實現樹形結構、一維數組以及map之間的轉換

const treeData[ {id:1, name:中國, children:[ {id:11,name:河南省,children:[{id:111,name:南陽市,children:[{id:1111,name:淅川縣,children:null}]},{id:112,name:鄭州市,children:[{id:1121,name:中牟縣,children:null}]}] }, {id:22,name:廣東省,children:[{id:221,name:…

c++中的多態

文章目錄 1.多態的概念1.1概念 2.多態的定義及實現2.1多態的構成條件2.2虛函數2.3虛函數的重寫2.4 C11 override 和 final2.5 重載、覆蓋(重寫)、隱藏(重定義)的對比 3. 抽象類3.1概念3.2接口繼承和實現繼承 4.多態的原理4.1虛函數表4.2多態原理分析4.3 動態綁定與靜態綁定 5.單…

學習筆記整理-面向對象-03-構造函數

一、構造函數 1. 用new調用函數的四步走 new 函數();JS規定&#xff0c;使用new操作符調用函數會進行"四步走"&#xff1a; 函數體內會自動創建出一個空白對象函數的上下文(this)會指向這個對象函數體內的語句會執行函數會自動返回上下文對象&#xff0c;即使函數沒…

HDMI接口的PCB布局布線要求

高清多媒體接口&#xff08;High Definition Multimedia Interface&#xff09;&#xff0c;簡稱&#xff1a;HDMI&#xff0c;是一種全數字化視頻和聲音發送接口&#xff0c;可以發送未壓縮的音頻及視頻信號。隨著技術的不斷提升&#xff0c;HDMI的傳輸速率也不斷的提升&#…

使用GEWE框架進行微信群組管理(三)

友情鏈接&#xff1a;GEWE框架官網 geweapi.com 點擊訪問即可。 邀請或添加聯系人進群 小提示&#xff1a; 不管是添加40人以內還是以上都用此接口cause填寫邀請進群的理由 請求URL&#xff1a; http://域名地址/api/group/invite 請求方式&#xff1a; POST 請求頭&…

brew+nginx配置靜態文件服務器

背景 一下子閑下來了&#xff0c;了解的我的人都知道我閑不下來。于是&#xff0c;我在思考COS之后&#xff0c;決定自己整一個本地的OSS&#xff0c;實現靜態文件的訪問。那么&#xff0c;首屈一指的就是我很熟的nginx。也算是個小復習吧&#xff0c;復習一下nginx代理靜態文…

解決生成式AI落地之困,亞馬遜云科技提供完整解決方案

生成式AI技術無疑是當前最大的時代想象力之一。 資本、創業者、普通人都在涌入生成式AI里去一探究竟&#xff1a;“百模大戰”連夜打響&#xff0c;融資規模連創新高&#xff0c;各種消費類產品概念不斷涌現……根據Bloomberg Intelligence 的報告&#xff0c;2022年生成式AI 市…

文件操作/IO

文件 文件是一種在硬盤上存儲數據的方式&#xff0c;操作系統幫我們把硬盤的一些細節都封裝起來了&#xff0c;程序員只需要了解文件相關的接口即可&#xff0c;相當于操作文件就是間接的操作硬盤了 硬盤用來存儲數據&#xff0c;和內存相比硬盤的存儲空間更大&#xff0c;訪問…

使用FTP文件傳輸協議的潛在風險

數據&#xff08;事實&#xff0c;數字&#xff0c;價值&#xff09;是當今業務運行的核心要素。但是&#xff0c;如果數據沒有得到有效的存儲和傳輸&#xff0c;它們就會成為阻礙業務發展的障礙。如果企業不能及時地把數據送到合適的地方&#xff0c;就會造成嚴重的經濟損失。…

【skynet】skynet 入門代碼

寫在前面 本文將從零開始&#xff0c;寫第一個 skynet 程序 HelloWorld 。通過 HelloWorld 可以熟悉 skynet 的運作方式&#xff0c;和了解其 api 。 文章目錄 寫在前面準備工作編寫代碼運行結果 準備工作 首先要有一個編譯好&#xff0c;而且工作正常的 skynet 。 編寫代碼…

【Linux】Shell腳本之流程控制語句 if判斷、for循環、while循環、case循環判斷 + 實戰詳解[?建議收藏!!?]

&#x1f468;?&#x1f393;博主簡介 &#x1f3c5;云計算領域優質創作者 ??&#x1f3c5;華為云開發者社區專家博主 ??&#x1f3c5;阿里云開發者社區專家博主 &#x1f48a;交流社區&#xff1a;運維交流社區 歡迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

.bit域名調研

.bit域名研究 問題&#xff1a; .bit域名和ENS域名的相同點&#xff1f;不同點&#xff1f;有什么關系&#xff1f; .bit的定義 .bit 是基于區塊鏈的&#xff0c;開源的&#xff0c;跨鏈去中心化賬戶系統.bit 提供了以 .bit 為后綴的全局唯一的命名體系&#xff0c;可用于加密…

安全第二次

一&#xff0c;iframe <iframe>標簽用于在網頁里面嵌入其他網頁。 1&#xff0c;sandbox屬性 如果嵌入的網頁是其他網站的頁面&#xff0c;因不了解對方會執行什么操作&#xff0c;因此就存在安全風險。為了限制<iframe>的風險&#xff0c;HTML 提供了sandb…

分布式應用:Zabbix監控MariaDB

目錄 一、理論 1.Zabbix監控MariaDB 二、實驗 1.Zabbix監控MariaDB 一、理論 1.Zabbix監控MariaDB &#xff08;1&#xff09;環境 zabbix服務端&#xff1a;192.168.204.214 zabbix客戶端&#xff1a;192.168.204.215 &#xff08;2&#xff09;MareaDB安裝 安裝 za…

做海外游戲推廣有哪些條件?

做海外游戲推廣需要充分準備和一系列條件的支持。以下是一些關鍵條件&#xff1a; 市場調研和策略制定&#xff1a;了解目標市場的文化、玩家偏好、競爭格局等是必要的。根據調研結果制定適合的推廣策略。 本地化&#xff1a;將游戲內容、界面、語言、貨幣等進行本地化&#…