git使用秘訣(詳解0到1)

前言:


? ? ? ? 不知道大家有沒有使用git提交代碼或者拉取代碼的經歷,自從上一家公司實習結束以后,對git的使用歷歷在目,從一開始的add、commit到后來的pull都有著許多的疑惑。

? ? ? ? 自從有一次merge代碼以后,被師兄批了一頓以后(不小心把師兄寫的代碼給覆蓋了!!尷尬),我下定決心要搞明白git的基本原理以及使用方法!!!!!

git的安裝:

? ? ? ? git的安裝盡量到官網去安裝(畢竟是免費的),當然如果有網盤安裝地址也可。

? ? ? ? 官方安裝地址:https://git-scm.com/

?

根據電腦的系統選擇安裝的方式:

注:安裝路徑盡量是英文的安裝路徑。

安裝完成后,如果在桌面右鍵,菜單里面出現了如下選項:

證明安裝成功!!!

注冊身份:

? ? ? ? 由于git是用來適應多人協作工作時的需求,所以每個人提交代碼時需要有身份的說明,所以當安裝好git以后就需要注冊或者說設置使用者的身份,這里我使用

命令框進行身份的設置:

代碼如下:

git config --global user.name 你的用戶名

git config --global user.email 你的郵箱地址

?

kong'jian'shuo'm注意:后面你的用戶名和郵箱號必須要用 "?" 引起來(否則就會報bash: $'\302\226git': command not found錯誤

空間說明:

? ? ? ? 在搞懂git所有使用命令之前首先要了解git的所有存儲空間,都有什么作用。

Workspace:工作區(數據存儲在緩存中)
Index / Stage:暫存區(數據存儲在內存中)
Repository:倉庫區(或本地倉庫)(數據存儲在硬盤中)
Remote:遠程倉庫(數據存儲在遠程倉庫中)

?上述的四個區域對所有命令指令的理解非常重要,需要理解+記憶

git的使用步驟:

? ? ? ? 了解了區域以后就可以展開對git使用的理解了。我將從以下幾點對git的操作展開:

一:提交文件信息(本地——>遠程):

1.git init 初始化git(將指定的文件夾交給git進行管理)

2.git add 將文件添加進暫存區

3.git commit 將文件提交到本地倉庫

4.git push 將文件提交到遠程倉庫

二:拉取遠程倉庫中的文件信息(遠程——>本地):

1.git pull 拉取遠程代碼

git Init初始化git:

? ? ? ? 如果此時創建一個普通的文件夾:

里面假設有一個文本文件:

那么我想要把這個文件推送到我的gitee倉庫進行管理,我應該怎么做?

首先就是要將這個文件交給git進行管理,此時可以在這個文件中打開git控制臺:

之后如果想要將該文件夾創建為git的版本庫,也就是交給git進行管理的話,使用:
git init 命令

之后文件夾中會多出一個隱藏文件夾:

如果沒有找到的話需要從這里進行勾選"隱藏項目":

如果出現了那證明第一步就完成了,將該文件夾交給git管理成功。

本地——>遠程

git add:

? ? ? ? add指令是將文件信息放入暫存區,也就是暫存區(內存中),完整代碼如下:

git add [選項] [文件路徑]

-h,?--help顯示幫助信息
-v,?--verbose顯示詳細輸出,顯示每個文件的處理過程
-f,?--force強制添加,即使文件被忽略也會添加
-u,?--update僅添加已跟蹤文件的修改,不添加新文件
-A,?--all添加所有文件(包括新文件、修改文件、刪除文件)
--ignore-removal忽略刪除操作,只添加修改和新文件
--patch,?-p交互式添加,逐塊選擇要添加的代碼變更
--intent-to-add標記文件為 “待添加”,不實際添加內容,用于后續提交
-i,?--interactive交互式模式,分步選擇要添加的文件和變更
git add .  # 添加當前目錄下的所有文件
git add *  # 添加當前目錄下的所有文件(與 . 類似,但不包含隱藏文件)
git add --all  # 等價于 git add .,但更明確

一般用的最多的就是add .(適用于大多是程序員)?

git commit:

? ? ? ? 將需要上傳的文件信息放入緩存區以后,就需要將緩存區的文件進行整理放入本地倉庫中為接下來的往遠程倉庫提交做準備。

? ? ? ? 當然有人問了為什么要設計這樣一個過程,我直接add完之后,直接把文件信息提交到遠程倉庫不香嗎~

? ? ? ? 設計git的大佬這樣設計肯定有道理滴,如果此時一個文件同時被A,B,C三人改寫,B提交了,那么A和C提交的時候會不會就把B的給覆蓋了?

? ? ? ? 答案是肯定會的,那么為了防止出現上述的情況,此時就設計了一個解決沖突的過程,這個后面再說~ (后續在git pull操作會說)

完整代碼如下:

git commit [選項] [-m "提交信息"] [文件路徑]
選項描述
-m,?--message "信息"直接指定提交信息
-a,?--all提交所有已跟蹤文件的修改(等價于先?git add -u?再提交)
-s,?--signoff在提交信息末尾添加?Signed-off-by?簽名
-c,?--amend修改最后一次提交(用于修正提交信息或添加遺漏的變更)
-v,?--verbose在提交信息中顯示文件差異
-F,?--file <文件>從文件中讀取提交信息
--no-verify跳過提交驗證鉤子(如代碼規范檢查)
--dry-run模擬提交,不實際執行
-i,?--interactive交互式選擇要提交的代碼塊
-S,?--gpg-sign使用 GPG 簽名提交(需配置 GPG 密鑰)

?大多數程序員會用到的操作:

git commit -m "初始化項目結構"  # 提交暫存區所有文件并添加信息
git commit src/index.js -m "修改首頁布局"  # 僅提交指定文件

如果執行上述操作以后就相當于把文件信息放在.git文件中的版本庫中了(放在硬盤中)?,當然。git文件中的版本庫和普通文件夾是有區別的。

版本庫可以記錄每一次提交的版本,每次commit的數據內容會被永久的記錄在磁盤中方便后續查看歷史提交記錄。

git的好處是在每次提交時,會保存提交信息的快照內容(完整的副本信息)。每次commit時會通過哈希算法創建一個唯一id,之后將創建一棵git數,如下:

那么有一個問題,在多人合作時,如果上一個人已經push代碼,此時我commit時發生了沖突,git是如何發現我commit的內容與其他人的內容是沖突的?(留在后續解答)

git push:

? ? ? ? 如果完成了上述的操作之后,接下來就需要進行最后一步就可以將信息資源上傳到遠程倉庫了,需要git push操作。

? ? ? ? git push 會將上述commit的所有本地倉庫中未推送至遠程倉庫的信息全部推送上去。

? ? ? ? 具體語法如下:

git push [遠程倉庫名] [本地分支名]:[遠程分支名]

?遠程——>本地

上述的操作都是如何將信息一步步的推送至遠程倉庫中。接下來的操作是如何將遠程倉庫中的信息拉取到本地。

git clone:

? ? ? ? 如何我們在瀏覽git hub時,發現有博主研究出新的插件玩法,我們想要拉取博主的源碼研究研究,此時可以使用git clone命令拉取。(以網址的方式拉取)

????????

? ? ? ? 除了以網址的方式拉取以外,還可以以SSH密鑰的解密的方式拉取

? ??

? ? 當然想要將源碼獲取到的方式也有很多,git clone是方法之一。也可以直接將資源信息下載下來使用。

git pull:

? ? ? ? 如果之前就已經拉取過代碼,此時如果你以后拉過一次代碼后可以直接在idea中進行拉取倉庫最新代碼。

? ? ? ? 語法如下:

git pull [遠程倉庫名] [遠程分支名]:[本地分支名]

原理分解:

?????????git pull 命令實則是兩個命令的合體:

  1. git fetch:從遠程倉庫下載所有提交和文件更新。
  2. git merge:將下載的更新合并到當前本地分支。

????????所以在沒有進行commit,如果直接pull代碼的話會出現問題,就是會自動將遠程代碼與當前本地分支的代碼進行合并,有可能會直接覆蓋當前自己寫的代碼

注意:

? ? ? ? 如果此時直接進行pull代碼,pull過來的代碼會直接與當前

? ? ? ? 如果此時將拉取的代碼已經修改過一部分以后,想要pull一下倉庫中的最新代碼,此時需要做的是先要將所寫的代碼commit到本地倉庫,之后進行pull。

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

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

相關文章

RHEL 9.5 離線安裝 Ansible 完整教程

文章目錄RHEL 9.5 離線安裝 Ansible 完整教程環境準備系統要求準備工作清單方法一&#xff1a;使用 RPM 包離線安裝步驟 1&#xff1a;在聯網機器上下載必要的 RPM 包步驟 2&#xff1a;創建本地倉庫元數據步驟 3&#xff1a;在離線服務器上安裝方法二&#xff1a;使用 Python …

44、鴻蒙HarmonyOS Next開發:視頻播放 (Video)組件和進度條 (Progress)組件的使用

目錄 視頻播放 (Video) 創建視頻組件 加載視頻資源 加載本地視頻 加載沙箱路徑視頻 加載網絡視頻 添加屬性 事件調用 Video控制器使用 其他說明 示例代碼 進度條 (Progress) 創建進度條 設置進度條樣式 場景示例 視頻播放 (Video) Video組件用于播放視頻文件并…

6、微服務架構常用十種設計模式

目錄 1、微服務架構 2、微服務架構的優點 3、微服務架構的缺點 4、何時使用微服務架構 5、微服務架構常用十種設計模式 ① 獨享數據庫&#xff08;Database per Microservice&#xff09; ② 事件源&#xff08;Event Sourcing&#xff09; ③ 命令和查詢職責分離&…

Docker 初學者需要了解的幾個知識點 (六):docker-compose.yml (ThinkPHP)

下面這個文 docker-compose.yml 文件定義了一個包含 PHP、Nginx、MySQL、Redis 的完整 ThinkPHP 開發環境&#xff0c;各配置項的含義如下&#xff1a;version: 3.8services:# PHP-FPM 服務php-fpm:image: php:8.1-fpmvolumes:- ./tp-demo:/var/www/html- ./php.ini:/usr/local…

TiDB 詳解

TiDB 詳解&#xff1a;架構、特性與應用實踐 TiDB 是 PingCAP 公司開發的開源分布式 NewSQL 數據庫&#xff0c;采用 “計算-存儲分離” 架構設計&#xff0c;兼具傳統關系型數據庫的 ACID 事務特性和 NoSQL 系統的水平擴展能力。以下是 TiDB 的全面技術解析。一、核心架構設計…

推客小程序商業模型設計:合規分傭體系×盈利模式×LTV提升策略

一、推客小程序的市場背景與商業價值在當今移動互聯網紅利逐漸消退的背景下&#xff0c;社交電商正成為流量增長的新突破口。推客小程序作為一種基于社交關系的分銷工具&#xff0c;完美融合了社交傳播與電商變現的雙重優勢&#xff0c;為企業和個人創業者提供了全新的商業機會…

Matlab處理多個循環的判斷的方式:

1、使用正則表達式&#xff1a;pattern strcat(\b, strjoin(tuple, \b|\b), \b);% 4. 逐行處理文件內容 modifiedContents {}; % 存儲修改后的內容 for i 1:length(fileContents)line fileContents{i};% 使用正則表達式檢查當前行是否包含元組中的任何元素if ~isempty(reg…

從字符串中“薅出”最長子串:LeetCode 340 Swift 解法全解析

文章目錄摘要描述題解答案題解代碼分析詳細解析&#xff1a;示例測試及結果結果解釋&#xff1a;時間復雜度總結摘要 在日常開發中&#xff0c;我們經常需要處理字符串&#xff0c;比如分析用戶輸入、文本挖掘、數據清洗等等。而這道題就特別實用&#xff1a;如何找到一個字符…

時序數據庫廠商 TDengine 發布 AI 原生的工業數據管理平臺 IDMP,“無問智推”改變數據消費范式

在工業企業越來越依賴數據驅動決策的今天&#xff0c;數據的獲取不再是難題&#xff0c;難的是從紛繁復雜的數據中提煉出有用的信息。而 AI 的崛起&#xff0c;正在重塑整個數據分析的邏輯。 7 月 29 日晚&#xff0c;TDengine 發布了一款全新產品 —— TDengine IDMP&#xf…

HBase、MongoDB 和 Redis 的區別詳解

這三者都是流行的 NoSQL 數據庫&#xff0c;但設計目標、數據模型和適用場景有顯著差異。以下是它們的核心對比&#xff1a; 1. 數據模型對比特性HBaseMongoDBRedis數據模型寬列存儲&#xff08;類似 BigTable&#xff09;文檔存儲&#xff08;BSON/JSON&#xff09;鍵值存儲&a…

設計模式之單例模式及其在多線程下的使用

很多時候&#xff0c;我們在使用類創建類的實例并不想可以創建很多實例對象&#xff0c;比如在數據庫連接的時候&#xff0c;對于一個數據庫的連接通常只需要連接池中的某個連接的實例&#xff0c;連接一次即可&#xff0c;對于session會話&#xff0c;用戶在訪問網頁做會話保持…

Apache Ignite 2.8 引入的新指標系統(New Metrics System)的完整說明

這段文檔是關于 Apache Ignite 2.8 引入的“新指標系統&#xff08;New Metrics System&#xff09;” 的完整說明。這是 Ignite 監控體系的一次重大升級&#xff0c;相比舊的、分散的統計方式&#xff0c;新系統更統一、靈活、可擴展。 我們來逐層拆解、通俗易懂地理解這個新…

【氮化鎵】GaN同質外延p-i-n二極管中星形與三角形擴展表面缺陷的電子特性

2025年7月23日,美國國家標準與技術研究院(NIST)與美國海軍研究實驗室的Andrew J. Winchester等人在《Applied Physics Letters》期刊發表了題為《Electronic properties of extended surface defects in homoepitaxial GaN diodes》的文章,基于光電發射電子顯微術、導電原子…

使用 Scrapy 框架定制爬蟲中間件接入淘寶 API 采集商品數據

一、引言 在電商數據分析、市場調研等領域&#xff0c;獲取淘寶平臺上的商品數據是一項常見需求。淘寶提供了 API 接口&#xff0c;允許開發者通過授權的方式獲取商品信息。本文將介紹如何使用 Scrapy 框架定制爬蟲中間件&#xff0c;實現對淘寶 API 的接入&#xff0c;從而高…

Jmeter全局變量跨線程組的使用

一、線程組1中從數據庫中查詢到字段值二、BeanShell取樣器中設置為全局變量#為什么說props.put("Out1",Out);其實是設置Out1為Jmeter的屬性了呢&#xff1f; 因為在后面的調試取樣器運行結果中&#xff0c;會發現如果只打開顯示變量開關&#xff0c;是看不到Out1運行…

前端技術棧詳解

前端技術棧是指構建現代Web應用程序所需的一系列技術和工具的集合。以下是當前主流前端技術棧的詳細解析&#xff1a; 一、核心基礎技術 1. HTML5 作用&#xff1a;網頁內容的結構化標記關鍵特性&#xff1a; 語義化標簽&#xff08;<header>, <section>, <arti…

Git Pull 時遇到 Apply 和 Abort 選項?詳解它們的含義與應對策略

在使用 Git 進行團隊協作時&#xff0c;git pull 是最常用的命令之一&#xff0c;用于拉取遠程倉庫的最新代碼并合并到本地分支。但有時執行 git pull 后&#xff0c;Git 會提示 ?Apply&#xff08;應用&#xff09;?? 和 ?Abort&#xff08;中止&#xff09;?? 兩個選項…

暑期算法訓練.11

目錄 47. 力扣203 移除鏈表元素 47.1 題目解析&#xff1a; ?編輯 47.2 算法思路&#xff1a; 47.3 代碼演示&#xff1a; ?編輯 48. 力扣2.兩數相加 48.1 題目解析&#xff1a; ?編輯 48.2 算法思路; 48.3 代碼演示&#xff1a; 48.4 總結反思&#xff1a; …

nl2sql grpo強化學習訓練,加大數據量和輪數后,準確率沒提升,反而下降了,如何調整

在NL2SQL任務中使用GRPO強化學習訓練時&#xff0c;增加數據量和訓練輪數后準確率下降&#xff0c;通常是由過擬合、訓練不穩定、獎勵函數設計不合理、數據質量問題或探索-利用失衡等原因導致的。以下是具體的診斷思路和調整策略&#xff0c;幫助定位問題并優化性能&#xff1a…

PHP/Java/Python實現:如何有效防止惡意文件上傳

文章目錄 木馬病毒防范:文件上傳如何徹底防止偽造文件類型 引言 一、文件類型偽造的原理與危害 1.1 常見偽造手段 1.2 潛在危害 二、防御體系設計 2.1 防御架構 三、核心防御技術實現 3.1 服務端驗證實現 3.1.1 文件內容檢測(Python示例) 3.1.2 擴展名與內容雙重驗證(Java示…