【Git】實用Git操作指南:從入門到高效協作

目錄

1. Git 工作流程圖

2. 基本配置

3. 獲取本地倉庫

4. 基礎操作

5. 分支

6. Git遠程倉庫

6.1 常用的托管服務[遠程倉庫]

6.2 注冊碼云

6.3創建遠程倉庫

6.4 配置SSH公鑰

6.5 操作遠程倉庫

7. 在IDEA中使用Git

附:鐵令

下載地址:Git - Downloads

安裝:全部下一步即可

1. Git 工作流程圖

image-20250724180618964

命令如下:

  1. clone(克隆):從遠程倉庫中克隆代碼到本地倉庫

  2. checkout(檢出):從本地倉庫中檢出一個倉庫分支然后進行修訂

  3. add(添加):在提交前先將代碼提交到暫存區

  4. commit(提交):提交到本地倉庫。本地倉庫中保存修改的各個歷史版本

  5. fetch(抓取):從遠程倉庫,抓取到本地倉庫,不進行任何的合并動作,一般操作比較少

  6. pull(拉取):從遠程倉庫拉到本地倉庫,自動進行合并(merge),然后放到工作區,相當于fetch+merge

  7. push(推送):修改完成后,需要和團隊成員共享代碼時,將代碼推送到遠程倉庫。

2. 基本配置

2.1 打開Git Bash

2.2 設置用戶信息

git config --global user.name "zhangsan"

git config --global user.email "123@qq.com"

2.3 查看配置信息

git config --global user.name

git config --global user.email

2.4 解決GitBash亂碼問題

  1. 打開GitBash執行下面命令

    git config --global core.quotepath false

  2. ${git_home}/etc/bash.bashrc 文件最后加入下面兩行

export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

2.5 為常用命令配置別名

有些常用的指令參數非常多,每次都要輸入好多參數,可是使用別名。

  1. 打開用戶目錄,創建.bashrc文件(可以使用touch ~/.bashrc

  2. .bashrc文件中輸入如下內容:

    # 用于輸出git提交日志
    alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
    # 用于輸出當前目錄所有文件及基本信息
    alias ll='ls -al'
  3. source ~/.bashrc

3. 獲取本地倉庫

要使用Git對代碼進行版本控制,首先需要獲得本地倉庫

  1. 在電腦的任意位置創建一個空的目錄(例如test)作為本地Git倉庫

  2. 進入這個目錄中,點擊右鍵打開Git Bash窗口

  3. 執行命令 git init(初始化當前目錄為一個git倉庫)

  4. 如果創建完成后可在文件夾下看到隱藏的.git目錄

4. 基礎操作

Git工作目錄下對于文件的修改(增加、刪除、更新)會存在幾個狀態,這些修改的狀態會隨著我們執行Git的命令而發生變化。

image-20250703225725453

  • git add (工作區 --> 暫存區)

  • git commit (暫存區 --> 本地倉庫)

4.1 查看修改的狀態(status)

  • 作用:查看的修改的狀態(暫存區、工作區)

  • 命令:git status

4.2 添加工作區—暫存區(add)

  • 作用:添加工作區一個或多個文件的修改到暫存區

  • 命令:git add 單個文件名 | 通配符

    • 將所有修改加入暫存區:git add .

4.3 提交暫存區—本地倉庫(commit)

  • 作用:提交暫存區內容到本地倉庫的當前分支

  • 命令:git commit -m "注釋內容、用于描述"

4.4 查看提交日志(log)

  • 作用:查看提交記錄

  • 命令:git log [option] | git-log

    • option

      • --all 顯示所用分支

      • --pretty=oneline 將提交信息顯示為一行

      • --abbrev-commit 使得輸出的commitld更簡短

      • --graph 以圖的形式顯示

4.5 版本回退

  • 作用:版本切換

  • 命令:git reset --hard commitID

    • commitID 可以使用 gti log 指令查看

  • 查看已經刪除的記錄

    • git reflog 這個指令可以看到已經刪除的提交記錄

4.6 添加文件至忽略列表

一般我們總會有些文件無需納入Git的管理,也不希望他們總出現在未跟蹤文件列表。通常都是些自動生成的文件,比如日志文件,或者變異過程中創建的臨時文件等。在這種情況下,我們可以在工作目錄中創建一個名為.gitignore的文件(文件名稱固定),列出要忽略的文件模式。示例:

/target/
!.mvn/wrapper/maven-wrapper.jar### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
/build/
logs/
temp/

5. 分支

幾乎在所有的版本控制系統都以某種形式支持分支。使用分支意味著可以把工作從開發主線上分離進行重大的的Bug修改、開發新的功能,以免影響開發主線。

1. 查看本地分支

  • 命令:git branch

2. 創建本地分支

  • 命令:git branch 分支名

3. 切換分支

  • 命令:git checkout 分支名

???還可以直接切換到一個不存在的分支(創建并切換)

  • 命令:git checkout -b 分支名

4.合并分支

一個分支上提交的可以合并到另一個分支

命令:git merge 分支名 (將其他分支合并到當前分支)

5. 刪除分支

注:不能刪除當前分支,只能刪除其他分支

  • 命令:git branch -d 分支名 刪除分支時,需要做各種檢查

  • 命令:git branch -D 分支名 不做任何檢查,強制刪除(一般是當前分支數據未合并到master)

6. 解決沖突

當兩個分支上對文件的修改可能會存在沖突,例如同時修改了同一個文件的同一行,這時就需要手動解決沖突,解決沖突步驟如下:

  1. 處理文件中沖突的地方

  2. 將解決完的文件加入存在取

  3. 提交到倉庫

7.開發中分支使用原則于流程

在開發中,一般有如下分支使用原則與流程:

  • master(生產)分支

    線上分支,主分支,中小規模項目作為線上運行的應用對應的分支。

  • delvelop(開發)分支

    是從master創建的分支,一般作為開發部門的主要開發分支,如果沒有其他并行開發不同期上線的需求,都可以在此版本進行開發,階段開發完成后,需要時合并都master分支,準備上線。

  • feature/xxx分支

    從develop創建的分支,一般是同期并行開發,但不同期上線時創建的分支,分支上的研發任務完成后合并到develop分支。

  • hotfit/xxx分支

    從master派生的分支,一般作為線上bug修復使用,修復完成后需要合并到master、test、develop分支。

  • test分支

    代碼測試

  • pre分支

    預上線分支

    image-20250708010630599

6. Git遠程倉庫

6.1 常用的托管服務[遠程倉庫]

  • gitHub(url:https://github.com/)是一個面向開源及私有軟件項目的托管平臺,因為只支持 Git 作為唯一的版本格式進行托管。故名gitHub

  • 碼云(url:Gitee - 基于 Git 的代碼托管和研發協作平臺)是國內的一個代碼托管平臺,由于服務器在國內,所以相比于GitHub,碼云速度會更快

  • GitLab(url:https://about.gitlab.com/)是一個用于倉庫管理系統的開源項目,使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務,一般用于在企業、學校等內部網絡搭建git私服。

6.2 注冊碼云

6.3創建遠程倉庫

6.4 配置SSH公鑰

  • 生成SSH公鑰

    • ssh-keygen -t rsa

    • 不斷回車(如果公鑰已經存在,則自動覆蓋)

  • Gitee設置賬戶公鑰

    • 獲取公鑰

      • cat ~/.ssh/id_rsa.pub

    • image-20250725090839135

    • 驗證是否配置成功

      • ssh -T git@gitee.com

6.5 操作遠程倉庫

6.5.1 添加遠程倉庫

此操作是先初始化本地倉庫,然后與已創建的遠程倉庫進行對接。

  • 命令:git remote add <遠程名稱> <倉庫地址>

    • 遠程名稱:默認是origin,取決于遠端服務器設置

    • 倉庫路徑,從遠端服務器獲取此URL

      • 例如:https://gitee.com/zhangsan/test.git|| git@gitee.com:zhangsan/test.git

6.5.2 查看遠程倉庫

  • 命令:git remote

6.5.3 推送到遠程倉庫

  • 命令:git push [-f][--set-upstream][遠程名稱][本地分支名][:遠端分支名]

    • 如果遠程分支名和本地分支名相同,則可以只寫本地分支

      • git push origin master

    • -f 強制覆蓋(慎用)

      • 本地代碼與遠程倉庫提交有沖突,可以強制覆蓋

    • --set-upstream推送到遠端的同時并建立起和遠端分支的關聯關系

      • git push --set-upstream origin master

    • 如果當前分支已經和遠端分支關聯,則可以省略分支名和遠端名

      • git push 將master分支推動到已關聯的遠端分支。

6.5.4 本地分支與遠程分支的關聯關系

  • 命令:git branch -vv

6.5.5 從遠程倉庫克隆

如果已經有一個遠端倉庫,可以直接clone到本地。

  • 命令:git clone <倉庫路徑> [本地目錄]

    • 本地目錄可以省略,會自動生產一個目錄

6.5.6 從遠程倉庫中抓取和拉取

遠程分支和本地分支一樣,我們可以進行merge操作,只是需要先把遠端倉庫里的更新都下載到本地,再進行操作。

  • 抓取 命令:git fetch [remote name][branch name] | git fetch origin master

    • 抓取指令就是將倉庫里的更新都抓取到本地,不會進行合并

    • 如果不指定遠端名稱和分支名,則抓取所有分支

    • 如果本地分支與遠分支建立關聯關系,也可以直接git fetch

  • 拉取 命令:git pull [remote name][branch name] | git pull origin master

    • 拉取指令就是將遠端倉庫的修改拉到本地并自動進行合并,等同于getch+merge

    • 如果不指定遠端名稱和分支名,則抓取所有并更新當前分支。

7. 在IDEA中使用Git

7.1 在idea中配置Git

安裝好Intellij IDEA后,如果Git安裝在默認路徑下,那么idea會自動找到git的位置,如果更改了Git的安裝位置則可能需要手動配置下Git的路徑。選擇File→Settings→Version Control下的Git選項:(點擊Test按鈕,執行成功,配置完成)

image-20250726173751292

7.2 IDEA集成GitBash作為Terminal(windows用戶)

image

附:鐵令

  1. 切換分支前先提交本地的修改

  2. 代碼及時提交,提交過就不會丟

  3. 遇到任何問題都不要刪除文件目錄

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

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

相關文章

InstructBLIP:通過指令微調邁向通用視覺-語言模型

溫馨提示&#xff1a; 本篇文章已同步至"AI專題精講" InstructBLIP&#xff1a;通過指令微調邁向通用視覺-語言模型 摘要 大規模預訓練和指令微調在構建通用語言模型方面取得了顯著成功。然而&#xff0c;構建通用視覺-語言模型仍然面臨挑戰&#xff0c;這主要源于…

[python][flask]flask藍圖使用方法

在 Flask 中&#xff0c;藍圖&#xff08;Blueprint&#xff09;是一種用于組織和管理代碼的機制&#xff0c;可以將應用分解為多個模塊&#xff0c;每個模塊專注于特定的功能。以下是使用藍圖的基本步驟和方法&#xff1a;1. 創建藍圖首先&#xff0c;需要創建一個藍圖對象。藍…

學習dify:一個開源的 LLM 應用開發平臺

Dify 是一個開源的 LLM 應用開發平臺。其直觀的界面結合了 AI 工作流、RAG 管道、Agent、模型管理、可觀測性功能等&#xff0c;讓您可以快速從原型到生產。以下是其核心功能列表&#xff1a; 1. 工作流: 在畫布上構建和測試功能強大的 AI 工作流程&#xff0c;利用以下所有…

VEX實現物體沿線條流動

1. 效果如下&#xff1a;float offset fit01(rand(ptnum654),0.5,1)*Time*chf("speed") rand(ptnum547);int num nprimitives(1); vector pos primuv(1,"P",ptnum%num,offset%1);P pos;2.效果如下&#xff1a; float min detail(1,"min");…

puppeteer 系列模塊的系統性、詳細講解

puppeteer 系列模塊的系統性、詳細講解 &#x1f9e9; 一、核心模塊介紹 1. puppeteer全功能 Puppeteer 包&#xff0c;默認包含 Chromium 瀏覽器npm install puppeteer包含內容&#xff1a;Puppeteer API Chromium 瀏覽器適合場景&#xff1a; 想直接運行&#xff0c;不關心瀏…

golang實現一個規則引擎,功能包括實時增加、修改、刪除規則

以下是一個用 Go 實現的輕量級規則引擎,支持實時增加、修改、刪除規則,并基于表達式評估觸發規則動作: package mainimport ("errors""fmt""sync" )// Rule 定義規則結構體 type Rule struct {ID string // 規則唯一標…

算法訓練營day34 動態規劃② 62.不同路徑、63. 不同路徑 II、343整數拆分、96.不同的二叉搜索樹

動態規劃的第二篇博客&#xff01;進階題目&#xff0c;有一說一&#xff0c;尤其最后一道題&#xff0c;真的難想到這種解法 找規律&#xff01;&#xff01;&#xff01; 62.不同路徑 注意本題是路徑不是路程&#xff01;&#xff01;&#xff01; 動態規劃 確定dp數組&am…

Spring 5 事務詳解

一、核心使用方式聲明式事務&#xff08;推薦&#xff09;通過 Transactional 注解實現&#xff0c;需配合配置啟用&#xff1a;Configuration EnableTransactionManagement public class AppConfig {Beanpublic PlatformTransactionManager txManager(DataSource dataSource) …

[ctfshow web入門]web99 in_array的弱比較漏洞

信息收集 array_push(array, value)&#xff1a;向數組最后的位置插入value in_array(value, array, type)&#xff1a;其中value是要查找的值&#xff0c;array是需要查找的的數組&#xff0c;type是查找的類型&#xff0c;如果沒有指定類型&#xff0c;則以弱比較方式查找 i…

mysql5.6 常用查詢sql

mysql5.6 常用查詢sql 文章目錄 mysql5.6 常用查詢sql 1.查詢版本 2.MySQL 運行狀態(Ping) 3.慢查詢數量 4.連接數 5.最大連接數 6.InnoDB 緩沖池命中率 7.表鎖等待次數 8.二進制日志狀態 9.表空間使用率 10.查詢緩存效率 11.每次自動擴展空間大小 12.導入導出 ? 一、導出(…

【在Unity游戲開發中Dictionary、List介紹】

在Unity游戲開發中&#xff0c;Dictionary和List是最核心的兩種數據結構&#xff0c;它們各自有優勢和應用場景。以下是介紹&#xff1a;&#x1f9e0; 數據結構本質對比特性Dictionary<TKey, TValue>List底層結構哈希表&#xff08;Hash Table&#xff09;動態數組&…

windows平臺計劃任務批處理實現定時任務

無限循環加定時延時計劃任務用戶登錄執行一次下文中300代表300秒執行一次第2,3,4行為vbs隱藏窗口C:\me\corn\test.batecho off if "%1""hide" goto CmdBegin start mshta vbscript:createobject("wscript.shell").run("""%~0&quo…

深入理解 TCP 協議:從原理到實踐的技術解析

目錄 一、TCP 協議的核心定位與特性 1.1 協議棧中的位置 1.2 五大核心特性 二、TCP 連接建立與終止的底層邏輯 2.1 三次握手&#xff08;連接建立&#xff09; 2.2 四次揮手&#xff08;連接終止&#xff09; 三、TCP 可靠傳輸的核心機制 3.1 序列號與確認機制 3.2 滑…

JAVA后端開發——“全量同步”和“增量同步”

“全量同步”和“增量同步”是數據處理、系統集成和數據庫領域中兩個基本概念。描述了兩種截然不同的數據同步策略&#xff0c;理解它們的區別對于設計任何數據系統都至關重要。全量同步 核心思想&#xff1a;全部替換&#xff0c;一步到位。在技術上&#xff0c;全量同步通常意…

修改CentOS的SSH登錄端口(22端口)

要修改CentOS系統的SSH服務默認端口(22端口)&#xff0c;請按照以下步驟操作&#xff1a; 備份SSH配置文件 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak編輯SSH配置文件 sudo vi /etc/ssh/sshd_config查找并修改端口設置 找到以下行(大約在第13行左右)&#xff1a;…

python導包機制-更優方式

在學習某個大模型應用的后端時&#xff0c;發現&#xff1a; xxx |-----src |------\---modules |------\------\------b.py |-----app.py在app.py中可以使用src.modules.b來進行導入。之前我導入時是形如.modules.b這種形式&#xff08;前面有.&#xff09;&#xff0c;但是當…

檢索召回率優化探究一:基于 LangChain 0.3集成 Milvus 2.5向量數據庫構建的智能問答系統

背景 基于 LangChain 0.3集成 Milvus 2.5向量數據庫構建的 NFRA&#xff08;National Financial Regulatory Administration&#xff0c;國家金融監督管理總局&#xff09;政策法規智能問答系統&#xff0c;第一個版本的檢索召回率是 79.52%&#xff0c;尚未達到良好、甚至是優…

《整合Spring Cache:本地緩存、Redis與Caffeine對比實踐》

&#x1f680; 整合Spring Cache&#xff1a;本地緩存、Redis與Caffeine對比實踐 &#x1f4cc; 前言 在高并發、高性能的系統設計中&#xff0c;緩存始終扮演著不可替代的角色。Spring Cache 作為 Spring 框架原生提供的緩存抽象層&#xff0c;極大簡化了緩存接入的復雜度。…

easyexcel填充方式導出-合并單元格并設置邊框

填充的模板最后導出效果實體 /*** 賬戶實體類* author test* date 2025-07-28*/ Getter Setter class Test {/*** 賬戶類型*/private String accType;/*** 賬戶余額*/private String money; }導出邏輯 /*** 導出文件邏輯*/ public void exportReport(List<Test> data) { …