【Git】安裝以及基本操作

目錄

  • 一、初識Git
  • 二、 在Linux底下安裝Git
    • 一)centOS
    • 二)Ubuntu
  • 三、 Git基本操作
    • 一) 創建本地倉庫
    • 二)配置本地倉庫
    • 三)認識工作區、暫存區、版本庫
    • 四)添加文件
    • 五)查看.git文件
    • 六)修改文件
    • 七)版本回退
    • 八)撤銷修改
    • 九)刪除文件

努力經營當下,直至未來明朗!


一、初識Git

  1. 版本控制器:記錄每次的修改以及版本迭代的一個管理系統。
  2. Git:其實就是最常用的版本控制器。可以維護控制電腦上所有格式的文檔。
    如:對于開發人員來說,最主要就是維護項目中的源代碼文件。
  3. 注意:對于二進制文件如圖片、視頻等,具體修改的內容是未知的,只是知道如修改了其文件的存儲大小等信息。

二、 在Linux底下安裝Git

此時我在我的Xshell上的服務器來進行安裝(centos)。

一)centOS

  1. 首先查看當前服務器底下有沒有安裝Git
git --version
  1. 如果已經安裝,需要進行卸載
sudo yum remove git -y
  1. 補充:清屏的話使用clear

  2. 安裝git

sudo yum install git -y
  1. 然后再進行檢查
git --version

二)Ubuntu

  1. 首先查看當前服務器底下有沒有安裝Git
git --version
  1. 如果已經安裝,需要進行卸載
sudo apt-get remove git -y
  1. 補充:清屏的話使用clear

  2. 安裝git

sudo apt-get install git -y
  1. 然后再進行檢查
git --version

三、 Git基本操作

一) 創建本地倉庫

  1. 只有在Git倉庫下的文件才能被Git追蹤管理
  2. 以下創建本地倉庫的操作在Xshell中進行完成!

1)首先創建一個目錄

 mkdir gitcode   -- [即: mkdir 目錄名]

2)切換到該目錄底下

 cd gitcode/   -- [即: cd 目錄名/]

3)進行目錄的展示

ls

4)在該目錄下創建空的Git倉庫:.git

git init

5)顯示當前目錄下所有文件(Ubuntu下適用

la

6) 樹形展示該目錄下的所有文件:千萬不要手動修改任何文件!!

tree .git/

0


二)配置本地倉庫

  1. 當成功創建出一個本地倉庫之后,首先就是要對本地倉庫新增兩個配置項:name和email。
  2. 為本地倉庫設置配置項:git config
  3. 配置name和email:
git config user.name "xxx(實際name)"
git config user.email "xxx(實際email)"
  1. 查看配置,看配置是否已經成功
git config -l
  1. 重置刪除配置項
git config --unset user.name   
git config --unset user.name 

11

  1. 一臺服務器上可以創建多個本地倉庫,加上–global的意思其實就是當前的配置項是會在當前機器的所有git倉庫下都生效的
git config --global user.name "xxx"   
git config --global user.name "xxx" 
  1. 在進行global全局配置之后發現直接使用unset重置是失敗的,此時想要重置必須在–unset之前加上–global
    12
    13

三)認識工作區、暫存區、版本庫

  1. 在gitcode目錄下新建一個文件readMe,使用git進行管理.
    ① 但是,在touch完成的情況下,Git是不能管理該readMe文件的
    ② .git稱為版本庫(倉庫),readMe文件稱為工作區
touch readMe

15

  1. 強調:不允許在.git下手動修改!!
    16

  2. 工作區、版本庫和暫存區之間的關系:
    可以參考:Git工作區、暫存區和版本庫
    17

  3. 如何將工作區中的內容使用git來進行管理:
    1)對工作區進行修改操作(如:新增、修改、刪除)之后進行add操作則進入版本庫的暫存區
    2)然后對暫存區中的內容進行commit之后就被提交到master分支底下
    3)此時就將工作區中的內容真正放到了git倉庫下進行管理

  4. objects對象庫:工作區文件在執行add命令之后,修改的工作區內容就會被寫入對象庫的一個新的git對象中,即:維護了文件的版本

  5. 暫存區中存儲的不是一個個對象,而是對象索引;master分支中也是一樣的,存儲的也是對象的索引,也是比較輕量的。

  6. 因為倉庫是剛init的,所以目前還沒有暫存區,所以tree .git之后看不到index是正常的。


四)添加文件

  1. 操作文件:
編輯文件: vim 文件名
保存并退出: :wq
在屏幕上打印文件內容:cat 文件名
  1. 將文件添加到版本庫的暫存區:
    (在已經創建的gitcode目錄下操作)
git add 文件名1 文件名2 ···    // 提交該文件
git add .    // 提交該目錄下所有文件
  1. 將暫存區文件提交到master分支:
git commit -m "提交的細節描述"

補充:如果在進行該操作時出現了以下異常:

*** Please tell me who you are.Rungit config --global user.email "you@example.com"git config --global user.name "Your Name"to set your account's default identity.
Omit --global to set the identity only in this repository.fatal: unable to auto-detect email address (got 'root@hecs-279575.(none)')
[root@hecs-279575 gitcode]# git log
fatal: bad default revision 'HEAD'

此時,只需要在當前輸入下面兩句命令,把引號里的改成自己的郵箱和賬號就OK了,然后就可以繼續操作了

  git config --global user.email "you@example.com"git config --global user.name "Your Name"

19

  1. 打印提交記錄
git log
git log --pretty=one-line   // 打印一行漂亮直觀日志

五)查看.git文件

根據commit_id來打印文件

git cat-file -p commit_id

20


六)修改文件

  1. Git追蹤管理的不是文件,其實是修改。

  2. 修改某個文件的內容,其實就是對該文件進行一個編輯操作,所以使用的是vim操作

  3. 查看版本庫的狀態:git status
    21

  4. 查看暫存區和工作區內容的差異:

git diff 文件名

22

  1. 查看版本庫和工作區文件的區別:
git diff HEAD -- 文件名

七)版本回退

  1. 版本回退命令:
    git reset [--soft | --mixed | --hard] [HEAD] // 本質回退的是版本庫的內容;還可以回退到當前版本,即暫存區和工作區代碼回退到和版本庫中一致
    –soft :只回退版本庫中的內容,工作區和暫存區的內容不進行回退
    –mixed(默認): 回退的是版本庫和暫存區的內容,工作區的內容不進行回退
    –hard: 回退版本庫、暫存區、工作區的內容。(==慎用!!==工作區中的代碼也被干掉的話其實是非常頭疼的,直接找不回來了)

  2. 使用示例:

git reset [--hard] commit_id   
// 代表回退到commit_id這個版本,該版本之后提交的內容都消失
  1. 如果我進行回退之后后悔了,可以利用之前git log --pretty=oneline打印好的commit_id回到想要回到的版本,同樣是使用git reset [--hard] commit_id

11111
4. 那如果git log --pretty=oneline打印好的commit_id已經被clear,此時就使用git reflog打印出所使用的命令進行的操作,最前面的就是commit_id,依舊可以利用該commit_id進行版本的回退
222

  1. git版本回退速度很快的原因:
    HEAD指針是指向master的,而master中存放的是commit_id,所以在進行版本回退的過程中其實只需要修改master的commit_id即可,將指針指向新的內容。

  2. 回退到當前版本:git reset [--mixed | --hard] HEAD [filename]
    回退到當前版本的前n個版本:git reset [--mixed | --hard] HEAD^^ [filename] (^的數量取決于回退到前n個版本)


八)撤銷修改

  1. 工作區、暫存區、版本庫的回退操作
    yy

1)工作區和暫存區的回退
工作區+暫存區
2)工作區、暫存區、版本庫的回退
版本庫


九)刪除文件

  1. 針對工作區中的文件進行刪除:rm [filename]
  2. 將文件從工作區、暫存區、版本庫中刪除:
rm [filename]
git add [filename]
git commit -m "xxx"
  1. 將文件從工作區、暫存區、版本庫中刪除,可以簡化為以下倆步驟:
git rm [filename]  // 將文件從工作區、暫存區刪除
git commit -m "xxx"

222

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

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

相關文章

基于docker部署的Selenium Grid分布式自動化測試

01、什么是Selenium Grid Selenium Grid是Selenium套件的一部分,它專門用于并行運行多個測試用例在不同的瀏覽器、操作系統和機器上。 Selenium Grid有兩個版本——老版本Grid 1和新版本Grid 2。我們只對新版本做介紹,因為Selenium團隊已經逐漸遺棄老版…

docker容器管理

創建容器: docker run --name 容器名 -d -p 端口1:端口2 –name :是啟動容器時,給容器定義的名稱,不使用該參數時,容器啟動成功之后,會生成隨機名稱 -d :代表容器處于后臺yunx -p :指定容器的端…

第一次參加計算機會議報告注意事項以及心得

計算機會議參會報告 注意事項參會前參會中參會后 參會心得 注意事項 接下來的會議注意事項分為:(1)參會前,(2)參會中,(3)參會后 參會前 參會前,一般被邀請…

實時安全分析監控加強網絡安全

網絡犯罪分子只需幾分鐘,有時甚至幾秒鐘即可泄露敏感數據。但是,IT 團隊可能無法在數周內發現這些違規行為。通常,這些違規行為是由外部方或客戶發現的,到那時為時已晚。隨著網絡漏洞的激增,對安全分析的需求空前高漲。…

【C# Programming】C#第一課(自己學習的筆記)

目錄 一、C# 介紹 1.1 托管代碼(Manage Code ) : 1.2 基礎類型庫 (Base Class Library): 1.3 程序集(Assembly): 1.4 .NET 框架: 1.5 公共中間語言(Common Intermediate Language),簡稱 IL。 1.6 C#編譯器將源代…

實戰:工作中對并發問題的處理 | 京東物流技術團隊

1. 問題背景 問題發生在快遞分揀的流程中,我盡可能將業務背景簡化,讓大家只關注并發問題本身。 分揀業務針對每個快遞包裹都會生成一個任務,我們稱它為 task。task 中有兩個字段需要關注,一個是分揀中發生的異常(exp…

DIP: Spectral Bias of DIP 頻譜偏置解釋DIP

On Measuring and Controlling the Spectral Bias of the Deep Image Prior 文章目錄 On Measuring and Controlling the Spectral Bias of the Deep Image Prior1. 方法原理1.1 動機1.2 相關概念1.3 方法原理頻帶一致度量與網絡退化譜偏移和網絡結構的關系Lipschitz-controlle…

Linux常規操作命令

日升時奮斗,日落時自省 目錄 1、vim 1.1、工作模式 1.2、末行模式操作相關命令 1.2.1、保存退出操作 1.2.2、查找替換 1.3、輸入模式操作相關命令 1.3.1、移動相關命令 1.3.2、刪除和剪切命令 1.3.3、復制操作 1.3.4、撤銷 2、head 3、tail 4、ps 5、…

數據結構算法--2 冒泡排序,選擇排序,插入排序

基礎排序算法 冒泡排序 思想就是將相鄰元素兩兩比較,當一個元素大于右側相鄰元素時,交換他們的位置,小于右側元素時,位置不變,最終序列中的最大元素,像氣泡一樣,到了最右側。 這時冒泡排序第一…

linux Socket簡單編程實例

服務端 網絡編程中服務端接受連接的套接字創建過程如下: 1.調用socket函數創建套接字 2.調用bind函數分配IP地址和端口號 3.調用listen函數轉為可接收請求狀態 4.調用accept函數受理連接請求 #include <stdio.h> #include <stdlib.h> #include <sys/types.h>…

Java實現根據姓名生成頭像(釘釘樣式)

頭像生成器代碼如下&#xff1a; package com.hua.util;import org.apache.commons.lang3.StringUtils;import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.RoundRectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.i…

配置listener tcps加密 enable SSL encryption for Oracle SQL*Net

一 配置客戶端和服務端的wallet 2端配置方法一致&#xff0c;相互添加證書 orapki wallet create -wallet “/u01/oracle/wallet” -pwd Wdkf984jkkgekj434FKFD -auto_login_local orapki wallet add -wallet “/u01/oracle/wallet” -pwd Wdkf984jkkgekj434FKFD -dn “CNho…

Zabbix監控MySQL數據庫實戰

zabbix監控mysql的方式 只是安裝agent 啟用模板監控 啟用自定義腳本的模板監控 使用zabbix模版及結合shell腳本監控mysql 創建mysql的zabbix授權用戶 mysql> grant all PRIVILEGES on *.* to zabbixlocalhost identified by zabbix; ###創建一個有權限的訪問用戶lqb密碼設…

es1.7.2 按照_type先聚合,再按照時間二次聚合

// 設置查詢條件if (this.query ! null) {this.searchbuilder.setQuery(this.query);}TermsBuilder typeAggregation AggregationBuilders.terms("agg_type").field("_type");DateHistogramBuilder dateTermsBuilder AggregationBuilders.dateHistogram(…

[Android] 通過JNI 讓 JAVA 調用 android native 接口

前言&#xff1a; JNI (java native interface) 是一個庫&#xff0c;可以讓 java 代碼和其他語言互動&#xff0c;比如 java 通過 JNI 調用融合了 jni庫的 c/c 代碼&#xff0c;注意&#xff0c;這里要求 c/c代碼中必須通過鏈接 jni 庫并按照 JNI 規范定義一套可供 JAVA 調用…

STM32自帶的DSP庫的濾波初體驗(一)

最近在弄STM32自帶的DSP庫里的濾波&#xff0c;記錄一下&#xff1a; arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //濾波系數的個數 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…

【02】基礎知識:typescript數據類型

1、布爾類型 boolean let flag: boolean false2、數字類型 number let num: number 6 //十進制 let num2: number 0xf00d //十六進制 let num3: number 0b1010 //二進制 let num4: number 0o744 //八進制3、字符串類型 string 用雙引號&#xff08;“&#xff09;或單引…

MongoDB 簡介

什么是MongoDB ? MongoDB 是由C語言編寫的&#xff0c;是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下&#xff0c;添加更多的節點&#xff0c;可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為一個…

mqttfx連上OneNET生成token時的一大坑,報用戶名或密碼錯誤

整個流程如下連接&#xff1a; MQTT.fx和MQTTX 鏈接ONENET物聯網開發平臺避坑細節干貨。 其中在生成token時&#xff0c;搞了半天在連接后都會報用戶名密碼錯誤 最后發現是格式問題&#xff0c;輸入所有字符后一定要雙擊看是否可以全選中&#xff0c;可以全選中說明字符的格式…

java spring cloud 企業工程管理系統源碼+二次開發+定制化服務 em

Java版工程項目管理系統 Spring CloudSpring BootMybatisVueElementUI前后端分離 功能清單如下&#xff1a; 首頁 工作臺&#xff1a;待辦工作、消息通知、預警信息&#xff0c;點擊可進入相應的列表 項目進度圖表&#xff1a;選擇&#xff08;總體或單個&#xff09;項目顯…