Git基本操作1

Git 是一款分布式版本控制系統,主要用于高效管理代碼版本和團隊協作開發。它能精確記錄每次代碼修改,支持版本回溯和分支管理,讓開發者可以并行工作而互不干擾。通過本地提交和遠程倉庫同步,Git 既保障了代碼安全,又實現了多人協作開發,同時支持離線工作,是現代軟件開發中不可或缺的工具。

比如下面的場景:在學校中,你的老師要求你寫一個的文檔。你奮筆疾書地寫下了第一版并且交給了老師,但老師不滿意,認為還有改進的地方,于是你在這個第一版的word文件上直接進行覆蓋式的修改,得到的第二版交給了老師,老師仍然覺得不滿意,于是第三版,第四版......當你把最終版交給老師之后,老師來一句“我覺得還不如你的第一版,就要第一版吧!”。這時你崩潰了,因為你修改的時候是直接在原來版本的基礎上直接進行修改的,根本沒有保存以前的版本,拿不出來第一版。

這種情況就會讓人很難受,因為你基本沒有辦法恢復出第一版,所以就有了Git,來記錄每次的修改及版本迭代的一個管理系統。

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

比如我們在當前目錄下創建一個ReadMe文件。

?當前目錄下的.git就是版本庫,或者說真正的倉庫,ReadMe所在的位置就是工作區。

圖示為:

暫存區也被稱為索引,是版本庫的一部分。目前情況下,Git能否管理ReadMe文件?

答案是不能的

? ? ? ? 在建立的倉庫的工作區中進行一次add,文件的修改信息(包括新增,修改,刪除)就會在保存在stage的暫存區中,再對該文件進行commit操作就會將文件信息提交到master分支,也就是本地倉庫,對應的還有個概念是遠程倉庫,遠程倉庫就是我們在Gitee中創建的倉庫,可以克隆到本地倉庫。????????

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

2、添加文件

可一次提交一個文件,多個文件或所有文件。

git add ReadMe
git commit -m "描述"
git add file1 file2
git commit -m "描述"
git add .
git commit -m "描述"

一個文件:

多個文件:

查看git日志命令:

git log
git log --pretty=oneline

上面的兩個都可以,第二個顯示的更加簡潔:

3、修改文件

git追蹤管理的其實是修改,而不是文件

使用git diff查看暫存區和工作區的差異,例如:在ReadMe中添加了hello git,使用git status就能查看到當前被修改的文件:

使用git diff 文件名:

git diff 文件名

該命令用來顯示暫存區和工作區文件的區別:

最下面的綠色字體就是新增的內容。這樣就能看到做了什么修改,可以大致檢查一下再提交,就會放心很多。

4、版本回退

git reset [--soft | --mixed | --hard] [HEAD]

使用git reset進行版本回退,要注意的是主要有三個地方的可能回退,工作區、暫存區、版本庫;工作區的內容修改后進行add才會保存到暫存區,經過commit后才會保存到版本庫。

--soft 只會回退版本庫的內容;

--mixed 會回退版本庫和暫存區的內容;也是git的默認選項;

--hard 會回退所有的內容,這個要慎用,因為工作區的也被回退,可能你寫了很多代碼,沒有保存時使用了這個,那么所有的內容都會被回退,這樣就會導致你所寫的代碼全部不在了。

HEAD選項表示回退到當前版本庫的版本,也就是回退到當前版本。?

git reflog

這個命令可以查看變更歷史,找到對應版本的對象ID,通過該ID可以回退到指定的版本,是 Git 本地數據恢復的關鍵工具。

5、撤銷修改

版本庫中的代碼經過git push 可以推送到遠程倉庫;遠程倉庫的代碼才是自己真正用的,所以要保證遠程倉庫的代碼正確性,就有了撤銷操作:目的就是不影響遠程倉庫的代碼。

6、刪除文件

刪除后再add和commit,也就是現在工作區中刪除,再在暫存區中刪除,最后在版本庫中刪除。

這兩個命令可以合并成一個命令,git rm [filename]

git rm [filename]

這個命令幫我們同時做了兩件事,首先在工作區中刪除,其次在暫存區中刪除,所以我們為了方便,一般會用這個命令進行刪除。

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

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

相關文章

React Native 組件間通信方式詳解

React Native 組件間通信方式詳解 在 React Native 開發中,組件間通信是核心概念之一。以下是幾種主要的組件通信方式及其適用場景: 簡單父子通信:使用 props 和回調函數兄弟組件通信:提升狀態到共同父組件跨多級組件:…

TCP的可靠傳輸機制

TCP通過校驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現可靠性的傳輸。 先來看第一個可靠性傳輸的方法。 通過序列號和可靠性提供可靠性 TCP是面向字節的。TCP把應用層交下來的報文(可能要劃分為許多較短的報文段)看成一個一個字節…

沒有DBA的敏捷開發管理

前言一家人除了我都去旅游了,我這項請假,請不動啊。既然在家了,閑著也是閑著,就復盤下最近的工作,今天就復盤表結構管理吧,隨系統啟動的,不是flyway,而是另一個liquibase&#xff0c…

go-carbon v2.6.10發布,輕量級、語義化、對開發者友好的 golang 時間處理庫

carbon 是一個輕量級、語義化、對開發者友好的 Golang 時間處理庫,提供了對時間穿越、時間差值、時間極值、時間判斷、星座、星座、農歷、儒略日 / 簡化儒略日、波斯歷 / 伊朗歷的支持。 carbon 目前已捐贈給 dromara 開源組織,已被 awesome-go 收錄&am…

【AI News | 20250708】每日AI進展

AI Repos 1、claude-code-templates Claude Code Templates是一款全面的命令行工具,旨在為不同編程語言和框架(如JavaScript/TypeScript、Python等,Go和Rust即將推出)提供優化的Claude Code配置。它通過交互式設置、自動化鉤子&a…

Nginx源碼安裝+靜態站點部署指南(CentOS 7)

安裝包:可自行前往我的飛書下載 Docs 也可以進入 nginx 官網,下載自己所需適應版本 nginx 開始安裝nginx 1. 創建準備目錄 cd /opt mkdir soft module # 創建軟件包和源碼解壓目錄 2. 安裝依賴環境 yum -y install make zlib zlib-devel gcc-c l…

交換機的核心原理和作用

一、交換機的核心原理交換機是一種用于連接多臺設備的網絡硬件,其核心原理基于二層網絡(數據鏈路層)的 MAC 地址尋址1. MAC 地址學習與存儲當交換機接收到數據幀時,會讀取幀中的源 MAC 地址,并將該地址與對應的端口號記…

【工具變量】上市公司企業金融強監管數據、資管新規數據(2001-2024年)

數據簡介:參考頂刊《經濟研究》李青原(2022)老師的做法,Post 為時間虛擬變量,根據資管新規實施的時間,當觀測期為2018 年上半年及之后時,Post 取值1,否則取值0。PreFin 為資管新規實…

CSS Grid與Flexbox布局實戰對比

概述 CSS布局技術在過去幾年經歷了重大變革,從傳統的基于浮動和定位的方法,到現在強大的Flexbox和Grid布局系統。這兩種現代布局方法極大地簡化了復雜界面的開發過程,但它們各自適用于不同的場景。本文將對Flexbox和Grid進行深入比較&#x…

[Pytest][Part 4]多種測試運行方式

實現需求2:有兩種運行測試的方式:通過config配置文件運行,測試只需要修改config配置文件cmdline 運行這里是新建一個config類來存儲所有的測試配置,以后配置有修改的話也只需要修改這個類。根據目前的測試需求,config中…

平衡二叉樹的刪除操作

對于平衡二叉樹的操作應對與考試只需要模擬出過程即可,且他的過程和插入的平衡方法一樣,不一樣的只是對于平衡因子的計算上。接下來我將給出方法①刪除結點(方法同“二叉排序樹”) ②一路向北找到最小不平衡子樹,找不到…

Spark 4.0的 VariantType 類型優點以及使用分析

背景 本文基于Spark 4.0。 總結 對于半結構化的數據來說,我們一般會有兩種方式進行存儲: 第一種是存儲為JSON String,這種可以保證Schema free,但是在使用的時候得解析為JSON,從而進行運算操作。 第二種是存儲為Struct類型,這種雖…

17-C#封裝,繼承,多態與重載

C#封裝繼承多態 1. 2. 3.多態 public abstract class animal//抽象類 {public abstract void eat();//抽象方法 } public class cat : animal//繼承 {public override void eat()//重寫{messagebox.show("cat eat");} } public class dog: animal//繼承 {public over…

恒創科技:香港站群服務器做seo站群優化效果如何

香港站群服務器做 SEO 站群優化效果如何?在當前搜索引擎優化競爭日益激烈的環境下,越來越多的企業開始關注站群策略這一高效的 SEO 手段。作為亞洲重要的網絡樞紐,香港站群服務器因其獨特優勢,正成為實施 SEO 站群優化的熱門選擇。本文將客觀…

Linux-進程管理

Linux-進程管理Linux 進程管理1. 進程的含義2. 進程狀態3. 進程工作模式4. 守護進程5. 進程查看命令5.1 ps 命令5.2 top 命令5.3 pstree 命令6. 終止進程的 kill 命令7. 前后臺運行8. 暫停進程9. 進程文件系統 /proc10. 定時任務管理10.1 at 命令10.2 batch 命令10.3 cron 與 c…

OpenCV圖像增強秘籍:高通濾波與特效藝術

> 在數字圖像處理領域,邊緣是圖像最富信息的區域。掌握高通濾波技術,你就能讓圖像中的隱藏細節"躍然紙上",甚至創造驚艷的藝術效果。 ## 一、圖像增強與高通濾波基礎 ### 1.1 圖像增強的核心目標 圖像增強不是簡單的美化,而是通過技術手段**突出重要特征*…

347. 前K個高頻元素

題目: 給你一個整數數組 nums 和一個整數 k ,請你返回其中出現頻率前 k 高的元素。你可以按 任意順序 返回答案。 示例: 輸入: nums [1,1,1,2,2,3], k 2 輸出: [1,2] 解題思路: 要返回出現頻率前k高的元素,那么我們首…

C++面試沖刺筆記1:虛函數的基本工作原理

C面試沖刺筆記1:虛函數的基本工作原理 前言 ? 筆者最近開始投簡歷,出于應對之后快速的面試流程需求,這里準備的是將常見的C八股文進行總結,從而方便自己進行學習,檢查和評估。 什么是虛函數 ? 虛函數,本質…

Spring Boot 事務失效問題詳解:原因、場景與解決方案

在 Spring Boot 開發中,事務管理是保證數據一致性和完整性的核心機制。然而,許多開發者在使用 Transactional 注解時,可能會遇到事務失效的問題,導致數據異常或業務邏輯錯誤。本文將深入分析 Spring Boot 中事務失效的常見原因&am…

Python-文件操作-StringIO和BytesIO-路徑操作-shutil模塊-csv,ini序列化和反序列化-argparse使用-學習筆記

序 欠4年前的一份學習筆記,獻給今后的自己。 文件操作 馮諾依曼體系架構CPU由運算器和控制器組成 運算器,完成各種算數運算、邏輯運算、數據傳輸等數據加工處理 。 控制器,控制程序的執行 存儲器,用于記憶程序和數據,例…