git的用法

目錄

一、為什么需要git

二、git基本操作?

2.1、初始化git倉庫

?2.2、配置本地倉庫的name和email

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

三、git的實際操作

?3.1 提交文件

3.2? 查看git狀態以及具體的修改

3.3? git版本回退? ? git? reset

3.1 撤銷修改

四、git分支管理

4.1 理解分支

4.2 創建分支

4.3? 合并分支

4.4? 刪除分支

4.5? 合并沖突

4.6 合并分支的兩種模式:ff? 和? no-ff

4.7 分支策略

五、遠程操作

5.1 創建遠程倉庫

5.2? 克隆遠程倉庫

5.3 推送、拉取操作


一、為什么需要git

先來看看一個場景:老板讓你寫文件

?我們可以用到版本控制器:git

二、git基本操作?

2.1、初始化git倉庫

git? init

?2.2、配置本地倉庫的name和email

增加:

git? ?config? ?user.name? "XXX"? ? ? ? 也可在開頭加一個? --global ,表示在當前機器的所有倉庫上配置

git? ?config? ?user.email? "XXX"

刪除:

git? ?config? ?--unset? ? ?user.name? "XXX"? ??

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

先來創建一個ReadMe文件

思考ReadMe文件是干什么的

其實就是這個項目的說明書,比如項目目的、功能、使用方法等基本信息,它可以讓其他人一眼看懂項目,并為項目的使用和參與提供指導。它是項目開源和共享的重要組成部分。

圖解工作區、暫存區(索引區)、版本庫。

暫存區和版本庫當中存放的都是git對象庫的索引,其實也就是通過一個個git對象,能拿到不同的文件版本

三、git的實際操作

?3.1 提交文件

也可以有多個add,一次性commit?

git? log? 查看由近到遠的提交記錄

3.2? 查看git狀態以及具體的修改

git? status 查看哪些文件修改了

git? status只能查看文件有沒有修改,并不能查看具體的修改內容

使用? ?git? diff? 查看暫存區和工作區具體的修改

git? diff? HEAD? --? [filename]? 查看版本庫和工作區的差別

3.3? git版本回退? ? git? reset

本質是回退版本庫中的內容 ,工作區和暫存區回不回退取決于參數

git? ? reset 【--soft |?--mixed |?--hard】HEAD
--mixed 為默認選項,使?時可以不?帶該參數。該參數將暫存區的內容退回為指定提交版本內 容,?作區?件保持不變。
--soft 參數對于?作區和暫存區的內容都不變,只是將版本庫回退到某個指定版本。
--hard 參數將暫存區與?作區都退回到指定版本。切記?作區有未提交的代碼時不要?這個命
,因為?作區會回滾,你沒有提交的代碼就再也找不回了,所以使?該參數前?定要慎重。

HEAD說明

可直接寫成 commit id,表?指定退回的版本
? HEAD? ? ? ? ?表?當前版本
? HEAD^? ? ? ?上?個版本
? HEAD^^? ? ?上上?個版本
? 以此類推

可以使? ?數字表?
? HEAD~0 表?當前版本
? HEAD~1 上?個版本
? HEAD^2 上上?個版本
? 以此類推...

我們這里能夠回退是因為我們拿到了 之前版本的 commit? id,假如沒有的話,我們就不能這樣子操作了

如果我們現在拿不到之前的commit? id,該怎么補救呢?

使用? git? reflog ,可以查看本地每次的提交命令

我們可以發現:版本回退的時候是非常快的,為什么呢?

3.1 撤銷修改

git? checkout? -- 【filename】撤銷工作區,暫存區和版本庫還得用到git? reset? 命令

情況一:只是撤銷工作區

我們可以使用 git? checkout? --? 【filename】? ?(切記加上 -- ,不加就是切換分支的命令了?)

情況二:撤銷工作區和暫存區

我們可以用? git? reset? --mixed HEAD^? 先只把暫存區回退,那么就回到了情況一,然后再用git? checkout;

當然,我們也可以直接用一步? git? reset --hard HEAD?就行了,但是不推薦,--hard力度太大了,回退整個倉庫

情況三:已經commit了,而且沒有push

撤銷的目的:不影響遠程倉庫的內容

四、git分支管理

4.1 理解分支

4.2 創建分支

git? branch? 【新分支名字】

我們再來使用git? tree 命令來看一下git的結構發生了變化沒有:

4.3? 合并分支

我們要想操作dev分支,就需要將HEAD指向dev分支讓dev變成工作分支才行

使用? git? checkout? 【分支名字】 切換分支

我們在dev上進行提交并合并? 使用? git? merge? 合并

4.4? 刪除分支

使用? ?git? branch? -d? 【要刪除的分支名字】

4.5? 合并沖突

merge 沖突需要手動解決,并且再進行一次提交

4.6 合并分支的兩種模式:ff? 和? no-ff

模式一: Fast-forward

直接merge就是? ff模式,比較簡單,但是不能看出最新提交到底是merge進來的還是正常提交的

模式二:非 Fast-forward? ,在merge的時候再進行一次commit

4.7 分支策略

介紹分支管理要遵守的原則

master主分支要求比較穩定,dev分支是開發人員日常操作的代碼,還沒有經過測試驗證

五、遠程操作

我們之前的所有操作:分支也好,add,commit也好,都是在本地的倉庫進行的,并不能做到多人協助開發,想要多人開發,必須要進行遠程操作? ,也就是用到碼云(gitee)

Git 其實是分布式版本控制系統

5.1 創建遠程倉庫

5.2? 克隆遠程倉庫

1. 使用HTTPS協議:

這種比較簡單,直接就是git? clone? + 遠程倉庫的https地址就行了。拉下來之后就能看到我們這時候由fetch? 和? push的功能

2. 使用 SSH協議

這中就是用到本地的公匙,并且在gitee上去配置,這種主打一個安全(一般公司都是用的這種)

我們這時候需要去創建 SSH? Key

執行完命令之后就能看到? ? .ssh文件了

我們將id_rsa.pub 的內容配置到gitee上即可

配置完之后,我們就可以直接在本地的xshell上克隆遠端倉庫了

5.3 推送、拉取操作

我們先來看一下推送,也就是本地代碼 push到遠程

就是執行完commit之后 直接push就好了

拉取:

拉取的時候是有兩種操作的,一種是 git? pull? ,一種是? git? fetch,這兩種區別在于:

git? pull? 會自動執行 git? fetch拉取最新版本,然后自動執行git? merge 拉取分支合并到本地(有沖突就自己去解決),通過git? status 去查看會發現非常干凈

git? fetch 只是拉取最新版本,并不會自動合并?

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

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

相關文章

vue el-table (固定列+滾動列)【橫向滾動條】確定滾動條是在列頭還是列尾

效果圖&#xff1a; 代碼實現&#xff1a; html&#xff1a; <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//unpkg.com/element-ui2.15.14/lib/index.js"></script> <div id"app" style&quo…

【數據結構】樹如何定義 | 如何存儲 | 實際應用

前言 如上圖&#xff0c;A中的孩子的個數是不固定的。我們無法精確的每個不同的根結點有多少個孩子。所以并不能精確知道需要定義多少個孩子節點。 struct TreeNode {int val;struct TreeNode* child1;struct TreeNode* child2;struct TreeNode* child3;//...//這樣顯然是不能…

springboot 攔截器中使用@Value注解為null

攔截器中獲取配置參數為null 代碼如下&#xff1a; 解決方式一&#xff1a; 檢查你的WebMvcConfigurer實現類&#xff0c;比如我的是CCBWebMvcConfig 將攔截器以bean的形式注入&#xff1a; 我之前的寫法是new 一個放進去的&#xff0c;這種會導致Value為null AutowiredJSCCB…

2014年10月6日 Go生態洞察:Go在Google I/O和Gopher SummerFest的應用

&#x1f337;&#x1f341; 博主貓頭虎&#xff08;&#x1f405;&#x1f43e;&#xff09;帶您 Go to New World?&#x1f341; &#x1f984; 博客首頁——&#x1f405;&#x1f43e;貓頭虎的博客&#x1f390; &#x1f433; 《面試題大全專欄》 &#x1f995; 文章圖文…

《微信小程序開發從入門到實戰》學習二十七

3.4 開發參與投票頁面 3.4.2 借用偽造數據開發功能 為了便于開發&#xff0c;新建一個編譯模式&#xff1a; 之前沒看文章&#xff0c;每次都習慣性填完投票創建的信息提交再跳轉看效果。好累。 添加變異模式開發真方便。 另外&#xff0c;點擊提交后沒跳轉到投票頁面&#…

xorm源碼學習

文章目錄 XORM源碼淺析及實踐ORMORM vs. SQLXORM軟件架構 ORM 引擎 Engine——DBM*core.DB Golang&#xff1a;database/sql 源碼基本結構連接復用&#xff0c;提高性能。增加數據庫連接池數量連接管理 database/sql主要內容&#xff1a;sql.DB創建數據庫連接sql.Open()DB.conn…

Spring——感謝尚硅谷官方文檔

Spring——尚硅谷學習筆記 1 Spring簡介&#x1f47e;1.1 Spring概述1.2 Spring Framework1.2.1 Spring Framework特性1.2.2 Spring Framework五大功能模塊 2 IOC-IOC容器思想&#x1f47e;IOC容器思想IOC在Spring中的實現 3 IOC-基于XML文件管理Bean&#x1f47e;3.1 準備工作…

2023亞太杯數學建模A題思路 - 采果機器人的圖像識別技術

# 1 賽題 問題A 采果機器人的圖像識別技術 中國是世界上最大的蘋果生產國&#xff0c;年產量約為3500萬噸。與此同時&#xff0c;中國也是世 界上最大的蘋果出口國&#xff0c;全球每兩個蘋果中就有一個&#xff0c;全球超過六分之一的蘋果出口 自中國。中國提出了一帶一路倡議…

數據庫實驗四 索引創建與管理操作

數據庫實驗四 索引創建與管理操作 一、實驗目的二、設計性實驗三、觀察與思考 一、實驗目的 (1) 理解索引的概念與類型。 (2) 掌握創建、更改、刪除索引的方法。 (3) 掌握維護索引的方法。 二、設計性實驗 在數據庫job下創建worklnfo表。創建表的同時在id字段上創建名為inde…

【HarmonyOS】元服務卡片本地啟動拉起加桌沒問題,上架后拉起加桌時卡片展示異常

【關鍵字】 加桌選卡展示異常 、 2卡共用一個布局 、 代碼混淆 【問題現象】 元服務卡片在本地啟動拉起加桌時&#xff0c;多卡的選卡過程顯示是沒問題的。但是在上架后拉起加桌時&#xff0c;多卡的選卡過程卡片展示異常。 代碼邏輯是通過創建卡片的時候判斷卡片的尺寸大小…

數據結構與算法編程題13

設計算法將一個帶頭結點的單鏈表A分解為兩個具有相同結構的鏈表B、C&#xff0c;其中B表的結點為A表中值小于零的結點&#xff0c;而C表的結點為A表中值大于零的結點&#xff08;鏈表A中的元素為非零整數&#xff0c;要求B、C表利用A表的結點&#xff09; for example: A -1 2 …

SpringBoot + 通義千問 + 自定義React組件,支持EventStream數據解析!

一、前言 大家好&#xff01;我是sum墨&#xff0c;一個一線的底層碼農&#xff0c;平時喜歡研究和思考一些技術相關的問題并整理成文&#xff0c;限于本人水平&#xff0c;如果文章和代碼有表述不當之處&#xff0c;還請不吝賜教。 最近ChatGPT非常受歡迎&#xff0c;尤其是…

virtualList 封裝使用 虛擬列表 列表優化

虛擬列表 列表優化 virtualList 組件封裝 virtualList 組件封裝 本虛擬列表 要求一次性加載完所有數據 不適合分頁 新建一個select.vue 組件頁面 <template><div> <el-select transfer"true" :popper-append-to-body"true"popper-class…

YOLOv8/5不顯示FLPOs

YOLOv8/5不顯示FLPOs,避免自媒體搬運,請下滑! YOLOv8/5不顯示FLPOs,避免自媒體搬運,請下滑! YOLOv8/5不顯示FLPOs,避免自媒體搬運,請下滑! YOLOv8/5不顯示FLPOs,避免自媒體搬運,請下滑! YOLOv8/5不顯示FLPOs,避免自媒體搬運,請下滑! YOLOv8/5不顯示FLPOs,避免自…

安裝第三方包報錯 error: Microsoft Visual C++ 14.0 or greater is required——解決辦法

1、問題描述 手動安裝第三方軟件時&#xff0c;可以使用setup.py&#xff0c;來安裝已經下載的第三方包。一般文件下會存在setup&#xff0c;在所要安裝庫的目錄下的cmd執行&#xff1a;python setup.py install報錯&#xff1a;error: Microsoft Visual C 14.0 or greater i…

所有權成果輸出(宗地基本信息表、界址標示表、界址簽章表、界址點成果表、宗地圖、界址說明表、調查審核表)

一、軟件界面&#xff1a; 二、軟件功能&#xff1a; 一、所有權成果要求(宗地基本信息表、界址標示表、界址簽章表、界址點成果表、宗地圖、界址說明表、調查審核表&#xff09; 1 不動產權籍調查表封面 &#xff08;1&#xff09;宗地&#xff08;海&#xff09;代碼&…

基于element-plus定義表單配置化擴展表單按鈕

文章目錄 前言一、新增btn.vue組件二、使用總結如有啟發&#xff0c;可點贊收藏喲~ 前言 在后臺管理系統一般都存在列表查詢&#xff0c;且可輸入數據進行查詢 基于element-plus定義表單配置化 新增按鈕配置化 一、新增btn.vue組件 <template><template v-for&qu…

代碼隨想錄算法訓練營第四十二天【動態規劃part04】 | 01背包、416. 分割等和子集

01背包問題 題目鏈接&#xff1a; 題目頁面 求解思路&#xff1a; 確定dp數組及其下標含義&#xff1a;dp[i][j] 表示從下標為 [0] 到 [i] 的物品里任意選取&#xff0c;放進容量為j的背包&#xff0c;此時的價值總和最大值確定遞推公式&#xff1a; 不放物品i&#xff0c;…

centos查看空間使用情況

查看磁盤使用空間 df -h 查看該目錄下其他目錄的大小 du -sh *