Git版本控制系統---本地操作(萬字詳解!)

目錄

git基本配置

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

添加文件--情況一:

添加文件-情況二:

修改文件:

版本回退:

git基本配置

1.初始化本地倉庫,注意:一定要在一個目錄下進行,一般都是新建一個文件夾,在文件夾中進行下文操作
? ? 指令:git init
2.初始化git的提交用戶+郵箱
? ? 2.1:配置用戶名:git config user.name "gitee的用戶名||github用戶名"?
? ? 注意!,如果是gitee,你的用戶名是@后面的字符串,不包括@!
? ? 2.2:配置郵箱:git config user.email "gitee/github綁定的郵箱地址"
3.查看當前路徑下本地倉庫的配置信息
? ? 指令:git config -l
4.重置配置信息
? ? 4.1:重置姓名:git config --unset user.name
? ? 4.2:重置郵箱:git config --unset user.email
5.將當前機器上所有的用戶都配置相同的用戶和密碼
? ? 指令:git config --global user.name "gitee的用戶名||github用戶名"
? ? 指令:git config --global user.email "gitee/github綁定的郵箱地址"
? ? 注意:通過--global選項配置的賬戶信息是不能直接通過上述第4條說明中的指令重置的!!需要的指令如下:
? ? 重置用戶名:git config --global --unset user.name
? ? 重置郵箱:git config --global --unset user.email

補充:1.gitee用戶名位置:再次提醒:不要帶上@!!!!!!!!!不要帶上@!!!!!!!!!不要帶上@!!!!!!!!!

2.查詢giteer賬號綁定的郵箱:在gitee主頁(即上述圖片界面),鼠標移動到右上角頭像處,會有一個設置選項,點擊,左邊列表中有一個郵箱管理,點擊后就能看到當前gitee賬號綁定的郵箱

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

在本地倉庫目錄中,創建一個Readme文件,注意!不能直接在.git中創建!禁止一切手動修改.git的操作
版本庫:-->.git文件
工作區:-->Readme所在目錄下,但不包括.git文件
暫存區:-->版本庫的stage模塊,又稱索引
add操作
將工作區被修改的部分提交到暫存區stage
commit操作
將暫存區stage中的內容提交到某個分支,默認master分支

簡易流程圖:

添加文件--情況一:

概念補充:.表示當前路徑  ..表示上一級路徑
1.先前面創建的Readme文件中寫點東西,比如"hello git!"
2.提交方式將工作區的內容提交到暫存區2.1:提交指定工作區指定內容指令:git add 帶路徑的文件名(不帶路徑會默認為當前路徑中的文件)可以連續帶多個文件名,之間使用空格隔開:git add file1 file2...2.2:提交當前目錄下所有的內容指令:git add .將暫存區內容提交到master分支2.3:命令后可以帶選項,例如 -m 表示提交內容的同時攜帶對提交內容的說明信息,方便記憶:其實-m就是message的縮寫指令:git commit -m "說明信息"注意:執行commit命令之前一定要先add過,并且使用commit指令一定要帶上-m選項!!查看git的歷史提交記錄:指令:git log優雅的查看歷史提交記錄:指令:git log --pretty=oneline

添加文件-情況二:

1.先在工作區創建1個文件,test1.txt
依次執行以下指令:
? ? 1.1:git add test1.txt
? ? 1.2:Linux機器:touch test2.txt?
? ? windows機器:直接鼠標創建test2.txt
? ? 1.3:git commit -m "test1.txt add"
?觀察現象,顯示有幾個文件提交了?只有1個!就是test1.txt

修改文件:

Git追蹤的是工作區的修改,而不是文件本身!

當我們對已經commit過的工作區文件進行修改時,比如,打開之前創建的Readme文件,新增一行數據,比如新增"hello mygit!"
查看git狀態的指令:
? ? 指令:git status
Linux上顯示如下:

但是如果我想看到更詳細的內容,比如:想知道是哪幾行修改了,是增加還是刪除?

指令:git diff 工作區被修改的文件名

Linux上顯示如下,windows大差不差:

windows會更直觀,不再贅述。

Readme文件被我們修改了,那么按照之前所說的,先add到暫存區,再commit到master分支
指令: 1.git add Readme
查一下:2.git status提示你,.git中的statge已被改變,需要commit到mater分支3.git commit -m "update Readme"
再查一下:4.git status
顯示工作區和暫存區都無改動了
done

版本回退:

什么是版本回退?舉幾個栗子:

1.就像是你在烹飪一道復雜的菜肴時,突然發現自己加錯了調料,然后決定“時光倒流”, 回到加調料前的那一刻,重新來過。

2.想象一下,你正在編寫一個超級英雄的故事,你已經寫到了“超級英雄打敗了大反派,拯救了世界!”這一章。 但是,你突然意識到,在之前的某一章里,你給超級英雄加了一個奇怪的能力,比如“只剩一滴血也能重生”, 這個能力實在是太奇葩了,完全破壞了故事的整體氛圍。 這時,Git版本回退就派上用場了。你可以使用Git的“時光機”(其實是一些命令), 回到那個添加奇怪能力的章節之前,然后就像那個能力從未存在過一樣,繼續你的創作

3.你正在準備畢業論文,第一版寫完后交給老師,老師不滿意,于是你哼哧哼哧的修改好了第二版論文, 此時你興高采烈的又交給老師,老師說你的第二版論文格式有問題,內容也偏題了,回去重寫,好吧, 于是你垂頭喪氣的又回去改了第三版論文交給老師,老師對著你說:"小明啊,你還是把第一版論文交給我吧, 你這幾版還不如第一版呢!",你聽到這話,心里非常慶幸,因為你將每一版論文都進行過備份,于是你找到 第一版備份交給了老師,成功通過,順利畢業;

回歸正題:

之前我們經常上面使用的Readme文件最開始只有一行內容"hello git!";add+commit之后,這就是第一版的Readme文件,之后我們又增加了一行內容"hello mygit!",add+commit之后就是第二版Readme文件

版本回退:指令:git reset [--soft] [--mixed] [--hard] [HARD]
注意:此處的[HARD]指的是git提交記錄中用看標識提交ID的字符串哈希編碼,如何查看HEAD?
前面提到過指令:git log --pretty=oneline
打印出來的左側的字符串編碼即是每次提交的HEAD

列個表格輔助理解:

首先,最后一版的Readme內容為"hello git!" 和"hello mygit"

reset命令不帶選項默認為--mixed
版本回退實操:指令:1.查看一下git提交日志:git log --pretty=oneline2.根據HEAD選擇要回退的版本

此處我選擇回退至第一版,采用--hard選項
指令:git reset --hard d2c9915d4d2a5ca706c0e31de9df62a47796b944
回退之后,查一下git提交日志,顯示如下:

此時Readme文件的內容被重置為原來的一行:"hello git!"

如果此時我們回退版本的時候,后悔了怎么辦?
指令:
? ? git reset --hard dfc471a62a287d4cfc27d3968fe104d03980b859
上述HEAD是我們最開始查日志的時候顯示的最新一次提交的版本的字符串哈希值,如果你反悔了,在記得回退前的
版本的HEAD時,就可以使用上述指令撤銷本次回退
如果你記不到HEAD了,git也是有后悔藥可以吃的!
指令:git reflog?
功能:查詢更新前的git提交日志信息,其中有你日志更新前的所有版本提交的日志,其中有HEAD信息還有最左側的部分信息
而部最左側的信息也可以用來充當HEAD來進行撤銷操作

撤銷操作:

注意:這里說的撤銷操作,只針對本地倉庫,對于遠端倉庫不生效! 所以撤銷操作的前提條件是:commit之后沒進行push操作,這里的push操作暫不說明. 場景:當在某一個版本的基礎上開發新的代碼時,寫了一坨之后,決定實在垃圾, 于是想撤銷自己在當前版本之上寫的所有代碼時,就需要用到撤銷操作。 撤銷操作有三個場景,表格如下所示:

情況一:只更改了工作區的代碼,其他區域未改變;

1.手動修改--代碼量大的時候強烈不推薦!!
2.使用指令修改指令:git checkout -- 要撤銷修改的文件
解釋:一定要帶上--倆個符號,表示撤銷到最近一次更新的版本

情況2:修改了工作區代碼后,又add到了暫存區中,但是版本庫中未改變

方法1:使用reset指令 + hard選項指令:git reset --hard HEAD解釋:HEAD-->直接寫HEAD表示回退至當前版本,HEAD^表示上個版本,以此類推;
方法2:使用reset指令 + mixed選項指令:git reset --mixed HEAD此時又回到了情況一則:git checkout -- 要撤銷修改的文件即可

情況3:工作區、暫存區、版本庫中都被修改了

1.直接使用reset指令:指令:git reset --hard HEAD^或者:git reset --hard 字符串哈希值(先git log 查詢一下哈希值)

刪除文件:

1.假設刪除了工作區的文件,例如rm file.txt 注意:刪除也算工作區的變動,所以也要同步到暫存區和版本庫 1.1:git add file.txt 1.2:git commit -m "delete file.txt" 2. git提供的刪除命令 指令:git rm 要刪除的文件名 再接著:git commit -m "delete file.txt"即可

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

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

相關文章

Jupyter Notebook切換虛擬環境(Kernel管理)

我們在使用Jupyter Notebook的時候,打開文件發現只有一個Python3(ipykernel),我們自己在conda中創建的虛擬環境為什么沒有顯示出來,今天我就來和大家一起討論一下! 在 Jupyter Notebook 中,kernel 是執行代碼的核心。管…

【網絡安全】常見的web攻擊

1、SQL注入攻擊 定義: 攻擊者在HTTP請求中注入惡意的SQL代碼,當服務器利用參數構建SQL語句的時候,惡意的SQL代碼被一起構建,并在數據庫中執行。 示例: 用戶登錄: 輸入用戶名xx, 密碼 or 1 …

Java基礎關鍵_012_包裝類

目 錄 一、基本數據類型對應的包裝類 1.概覽 2.說明 二、包裝類 1.最大值與最小值 2.構造方法 3.常用方法(Integer為例) (1)compare(int x, int y) (2)max(int a, int b) 和 min(int a, int b) &…

MacPorts 創建自定義 Portfile 安裝 RoadRunner

Portfile 放 ~/Ports/net/roadrunner-server 下: # -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fencutf-8:fttcl:et:sw4:ts4:sts4PortSystem 1.0name roadrunner-server version 202…

【Java 面試 八股文】JVM 虛擬機篇

JVM 虛擬機篇 1. JVM組成1.1 JVM由那些部分組成,運行流程是什么?1.2 什么是程序計數器?1.3 你能給我詳細的介紹Java堆嗎?1.4 Java 虛擬機棧1.4.1 Java Virtual machine Stacks (java 虛擬機棧)1.4.2 棧和堆的區別1.4.3 垃圾回收是否涉及棧內…

MFC學習筆記-1

一、編輯框和按鈕 //.h文件private:CString str;//給窗口類加了一個變量(定義一個成員變量),關聯到IDC_EDIT1中(要在實現中關聯,源文件文件夾中)CString str2;//接收button2,和IDC_EDIT2綁定 p…

QT 引入Quazip和Zlib源碼工程到項目中,無需編譯成庫,跨平臺,加密壓縮,帶有壓縮進度

前言 最近在做項目時遇到一個需求,需要將升級的文件壓縮成zip,再進行傳輸; 通過網絡調研,有許多方式可以實現,例如QT私有模塊的ZipReader、QZipWriter;或者第三方庫zlib或者libzip或者quazip等&#xff1…

[oAuth2授權]Web前端+NodeCoze API Web后端程序+Coze授權服務器工作流程架構流程圖詳解

嗯,用戶之前已經了解了如何使用React和Node.js結合Coze API實現OAuth2授權,現在他們具體想實現的是在Web應用中,當用戶點擊一個按鈕(比如“和Bot對話”)時,觸發授權流程,重定向到Coze的授權服務器獲取code。用戶還提供了一個具體的cURL請求示例,展示了如何通過302重定向…

Fiddler在Windows下抓包Https

文章目錄 1.Fiddler Classic 配置2.配置瀏覽器代理自動代理手動配置瀏覽器代理 3.抓取移動端 HTTPS 流量(可選)解決抓取 HTTPS 失敗問題1.Fiddler證書過期了 默認情況下,Fiddler 無法直接解密 HTTPS 流量。需要開啟 HTTPS 解密: 1…

vue:vite 代理服務器 server: proxy 配置

Vite 代理服務器(Proxy)的配置通常用于開發環境,以解決跨域請求等問題。以下是一個詳細的配置步驟: 通過以上步驟,你就可以在 Vite 項目中配置代理服務器,以便在開發過程中方便地訪問后端服務。 ?找到 Vi…

DINOv2 + yolov8 + opencv 檢測卡車的可拉拽雨覆是否完全覆蓋

最近是接了一個需求咨詢圖像處理類的,甲方要在卡車過磅的地方裝一個攝像頭用檢測卡車的車斗雨覆是否完全, 讓我大致理了下需求并對技術核心做下預研究 開發一套圖像處理軟件,能夠實時監控經過的卡車并判斷其車斗的雨覆狀態。 系統需具備以下…

AI除了可以能提高工作效率的還可以實現哪些功能?

AI除了能顯著提高工作效率之外,其在眾多領域的潛力遠不止于此。 在教育領域,AI正逐步成為個性化教學的得力助手。通過分析學生的學習習慣和能力水平,AI能夠定制出最適合每個學生的學習計劃,不僅提升了學習效率,還極大地…

vscode settings(一):全局| 用戶設置常用的設置項

參考資料 Visual Studio Code權威指南 by 韓駿 一. 全局設置與用戶設置 1.1 Vscode支持兩種不同范圍的設置 用戶設置(User Settings):這是一個全局范圍的設置,會應用到所有的Visual Studio Code實例中。工作區設置(Workspace Settings):設…

ROS的action通信——實現階乘運算(二)

在ROS中除了常見的話題(topic)通信、服務(server)通信等方式,還有action通信這一方式,由于可以實時反饋任務完成情況,該通信方式被廣泛運用于機器人導航等任務中。本文將通過三個小節的分享,實現基于action通信的階乘運…

Spring Boot啟動過程?

目錄 1. 啟動入口 2. SpringApplication 初始化 3. 準備環境 4. 創建應用上下文(ApplicationContext) 5. 準備應用上下文 6. 刷新應用上下文 7. 啟動 Web 服務器(若為 Web 應用) 8. 發布 ApplicationStartedEvent 事件 9. 執行 Runner 10. 發布 ApplicationReady…

VUE 獲取視頻時長,無需修改數據庫,前提當前查看視頻可以得到時長

第一字段處 <el-table-column label"視頻時長" align"center"> <template slot-scope"scope"> <span>{{ formatDuration(scope.row.duration) }}</span> </template> </el-ta…

seacmsv9注入管理員賬號密碼+orderby+limit

一、seacmsv9 SQL注入漏洞 1.1 seacms漏洞介紹 海洋影視管理系統&#xff08;seacms&#xff0c;海洋cms&#xff09;是一套專為不同需求的站長而設計的視頻點播系統&#xff0c;采 用的是 php5.Xmysql 的架構&#xff0c;seacmsv9漏洞文件&#xff1a;./comment/api/index.p…

WPF學習之Prism(二)

前言 學習一下Prism。 1.Prism Prism框架提供了一套豐富的工具、類和模塊&#xff0c;幫助開發人員實現以下功能&#xff1a; 模塊化&#xff1a;Prism框架支持將應用程序拆分為多個模塊&#xff0c;每個模塊具有自己的功能和視圖。這種模塊化的設計使得應用程序更加靈活和…

【EB-03】 AUTOSAR builder與EB RTE集成

AUTOSAR builder與EB RTE集成 1. Import Arxml files to Tresos2. Run MultiTask Script3. Add Components3.1 Run EcuExtractCreator Script4. Mapping Component to Partitions5. Event Mapping/Runnables Mapping to Tasks6. Port Connect7. Run SvcAs_Trigger Script8. Ver…

算法教程:香檳塔問題

香檳塔問題 問題描述 我們將玻璃杯堆成金字塔狀,第一排有 1 個玻璃杯,第二排有 2 個玻璃杯,依此類推,直到第 100 排。每個玻璃杯裝一杯香檳。 然后,將一些香檳倒入最上面的第一個玻璃杯中。當最上面的玻璃杯裝滿時,任何多余的液體都會均勻地落到它左右兩側的玻璃杯上。當…