Git教程

文章目錄

  • Git分布式版本控制工具
    • 版本控制器的方式
    • 常用命令
    • 遠程倉庫
    • Tip

Git分布式版本控制工具

? Git是一個開源的分布式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。

? Git是分布式的,Git不需要有中心服務器,我們每臺電腦擁有的東西都是一樣的。我們使用Git并且有個中心服務器,僅僅是為了方便交換大家的修改,但是這個服務器的地位和我們每個人的PC是一樣的。我們可以把這個服務器當作一個開發者的PC就可以,就是為了大家代碼容易交流不關機用的。沒有這個服務器大家一樣可以工作,只不過“交換“修改不方便而已。
在這里插入圖片描述

版本控制器的方式

集中式版本控制工具

? 集中式版本控制工具,版本庫是集中存放在中央服務器的,team里每個人work時從中央服務器下載代碼,是必須聯網才能工作,局域網或互聯網。個人修改后提交到中央版本庫。如:SVN、CVS
在這里插入圖片描述

分布式版本控制工具

? 分布式版本控制系統沒有“中央服務器”,每個人的電腦上都是一個完整的版本庫,這樣工作的時候,無需要聯網了,因為版本庫就在你自己的電腦上。多人協作只需要各自的修改推送給對方,就能互相看到對方的修改了。如:Git

常用命令

Git工作流程
在這里插入圖片描述

  • clone:從遠程倉庫中克隆代碼到本地倉庫

  • checkout:從本地倉庫中檢出一個倉庫分支然后進行修改

  • add:在提交前先將代碼提交到暫存區

  • commit:提交到本地倉庫,本地倉庫中保存修改的各個歷史版本

  • fetch:從遠程庫抓取到本地倉庫,不進行任何的合并動作

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

  • push:將代碼推送到遠程倉庫

  • git config:配置信息

    # 設置用戶信息
    git config --global user.name "userName"
    git config --global user.email "Email"# 查看配置信息
    git config --global user.name
    git config --global user.email
    
  • alias:配置命令別名,在~/.bashrc中添加配置,修改完成后需要執行source ~/.bashrc

    # 部分windows系統不允許用戶創建.開頭的文件,可以在gitBash中執行
    touch ~/.bashrc# 在~/.bashrc中添加內容,輸出git提交日志
    alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
    
  • git init:初始化當前目錄為一個git倉庫,執行成功后會多個.git文件夾

  • git status:查看修改狀態(暫存區、工作區)
    在這里插入圖片描述

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

    git add 單個文件名 | 通配符# 將所有修改加入到暫存區
    git add .
    
  • git commit:提交暫存區內容到本地倉庫的當前分支,git commit -m '注釋內容'

  • git log:查看提交日志,配置別名git-log

    git log [option]--all 顯式所有分支--pretty=oneline 將提交信息顯示為一行--abbrev-commit 使得輸出的commitId更簡短--graph 以圖的形式顯示
    
  • git reset:版本回退

    # 查看已經刪除的記錄,可以看到已經刪除的提交記錄
    git reflog# 版本切換,commitId可以通過git log查看
    git reset --hard commitId
    
  • git branch:查看本地分支,使用分支意味著可以把工作從開發主線上分離開來進行Bug修復和開發新功能,以免影響主線

    • master(生產)分支:線上分支,主分支,中小規模項目作為線上運行的應用對應的分支

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

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

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

    • test(測試)分支

    • pre(預上線)分支
      在這里插入圖片描述

    # 查看本地分支
    git branch# 創建本地分支
    git branch 分支名# 切換分支
    git checkout 分支名# 切換到一個不存在的分支,創建并切換
    git checkout -b 分支名# 合并分支,一個分支上的提交可以合并到另一個分支
    git merge 分支名# 刪除分支,不能刪除當前分支,只能刪除其它分支
    # 刪除時需要做各種檢查
    git branch -d 分支名
    # 強制刪除,不做任何檢查
    git branch -D 分支名
    
  • 沖突解決:當兩個分支上對文件的修改可能會存在沖突,如同時修改了同一文件的同一行,需要手動解決沖突,步驟如下:

    1. 處理文件中沖突的地方
    2. 將解決完沖突的文件加入暫存區(add)
    3. 提交到倉庫(commit)

遠程倉庫

  • git remote add:添加遠程倉庫,此操作是先初始化本地庫,然后與已創建的遠程庫進行對接

    git remote add <遠端名稱> <倉庫路徑>遠端名稱:默認是origin,取決于遠程服務器設置倉庫路徑:從遠端服務器獲取此URL
    git remote add origin git@gitee.com:lshibo/local-git-store.git
    
  • git remote:查看遠程倉庫

  • git push:推送到遠程倉庫庫

    git push [-f] [--set-upstream] [遠端名稱 [本地分支名][:遠端分支名]]-f 強制覆蓋--set-upstream 推送到遠端的同時并且建立起和遠端分支的關聯關系# 如果遠端分支名=本地分支名,則可以只寫本地分支
    git push origin master# 如果當前分支已經和遠端分支關聯,則可以省略分支名和遠端名
    # 將master分支推送到已關聯的遠端分支
    git push
    
  • git branch -vv:查看本地分支與遠程分支的關聯關系

  • git clone:clone遠端倉庫到本地

    git clone <倉庫路徑> [本地目錄]本地目錄可以省略,會自動生成一個目錄
    
  • git fetch [remote name] [branch name]:將倉庫里的更新都抓取到本地,不會進行合并。如果不指定遠端名稱和分支名,則抓取所有分支

  • git pull [remote name] [branch name]:拉取指令就是將遠端倉庫的修改拉到本地并自動進行合并,等同于fetch+merge。如果不指定遠端名稱和分支名,則抓取所有并更新當前分支。

  • 解決合并沖突:先拉去遠程倉庫,經過合并后才能推送到遠端分支
    在這里插入圖片描述

Tip

  • 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"
      
  • 添加文件到忽略列表:在工作目錄創建.gitignore文件(文件名稱固定),列出要忽略的文件模式

    # no .a files
    *.a
    # but do track lib.a, even though you're ignoring .a files above
    !lib.a
    # only ignore the TODO file in the current directory, not subdir/TODO
    /TODO
    # ignore all files in the build/ directory
    build/
    # ignore doc/notes.txt, but not doc/server/arch.txt
    doc/*.txt
    # ignore all .pdf files in the doc/ directory
    doc/**/*.pdf
    

參考:黑馬

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

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

相關文章

【感謝告知】本賬號內容調整,聚焦于Google賬號和產品的使用經驗和問題案例分析

親愛的各位朋友&#xff1a; 感謝您對本賬號的關注和支持&#xff01; 基于對朋友們需求的分析和個人興趣的轉變&#xff0c;該賬號從今天將對內容做一些調整&#xff0c;有原來的內容改為Google&#xff08;谷歌&#xff09;賬號和產品的使用經驗&#xff0c;以及相關問題的…

24西安電子科技大學經濟與管理學院—考研錄取情況

24西安電子科技大學—經理與管理學院—考研錄取統計 01、經理與管理學院各個方向 02、24經濟與管理近三年復試分數線對比 1、經管院24年院線相對于23年院線普遍下降2-15分&#xff0c;個別專業上漲4-10分。 2、經管院應用經濟學2024年院線350分&#xff1b;管理科學與工程院線…

java join與yield方法

join() join() 方法的主要作用是使當前線程&#xff08;調用 join() 方法的線程&#xff09;等待目標線程完成執行。當目標線程執行完畢后&#xff0c;當前線程才會繼續執行。 代碼示例&#xff1a; public class JoinExample {public static void main(String[] args) {Thr…

保研復習 | 數據結構

目錄 CH1?緒論☆ 數據項、數據元素、數據結構☆ 邏輯結構和存儲結構的區別☆ 順序存儲結構和鏈式存儲結構的比較☆ 算法的重要特性☆ 算法的復雜度 CH2?線性表☆ 單鏈表 CH3?棧、隊列和數組☆ 棧和堆是什么&#xff1f;☆ 棧在括號匹配中的應用☆ 棧在表達式求值中的應用☆ …

Linux|信號

Linux|信號 信號的概念信號處理的三種方式捕捉信號的System Call -- signal 1.產生信號的5種方式2.信號的保存2.1 core 標志位 2.信號的保存2.1 對pending 表 和 block 表操作2.2 阻塞SIGINT信號 并打印pending表例子 捕捉信號sigaction 函數驗證當前正在處理某信號&#xff0c…

數據庫SQL Server常用字符串函數

文章目錄 字符串函數 字符串函數 CONCAT:拼接字符串 CONCAT(COLUMN1,_,COLUMN2) AS COLCONVERT&#xff1a;轉換數據類型 CONVERT(data_type(length),data_to_be_converted,style)例如&#xff1a;CONVERT(VARCHAR(10),GETDATE(),110) SUBSTRING()&#xff1a;從字符串中返回…

java項目總結5

1.單列集合頂層接口Collction 集合體系結構 注意&#xff1a;因為Collection定義的方法是共性的&#xff0c;使用不能通過搜引來刪除&#xff0c;只能通過元素的對象進行刪除&#xff0c;返回值是boolean類型。例如我添加了"aaa"進List集合&#xff0c;刪除則要對象…

STM32-01 推挽輸出-點亮LED

本文以STM32中點亮LED為例&#xff0c;解讀推挽輸出的原理 推挽輸出介紹 所謂的推挽輸出&#xff0c;就是通過控制輸出控制模塊&#xff0c;打開或者關閉P-MOS或者N-MOS。 ─ 推挽模式下&#xff1a;輸出寄存器上的’0’激活N-MOS&#xff0c;而輸出寄存器上的’1’將激活P-M…

局部靜態變量實現的單例存在多個對象

文章目錄 背景測試代碼運行測試嘗試打開編譯器優化進一步分析 背景 業務中出現日志打印失效&#xff0c;發現是因為管理日志對象的單例在運行過程中存在了多例的情況。下面通過還原業務場景來分析該問題。 測試代碼 /* A.h */ #ifndef CALSS_A #define CALSS_A#include <…

打造屬于自己的腳手架工具并發布到npm倉庫

一、創建項目 使用 npm init -y 創建項目創建項目入口文件 index.js在 package.json 中添加 bin 字段使用 npm link 命令將文件映射至全局&#xff0c;使可以在本地測試 zp 命令 // "zp" 為用于全局執行腳手架的命令&#xff0c;vue-cli中使用的是vue命令 "bi…

pyecharts可視化案例大全(11~20)

pyecharts可視化案例大全(11~20) 十一、設置動畫效果十二、直方圖帶視覺組件十三、設置漸變色(線性漸變)十四、設置漸變色(徑向漸變)十五、設置分割線十六、設置分隔區域十七、面積圖十八、堆疊面積圖十九、自定義線樣式二十、折線圖平滑處理十一、設置動畫效果 在圖表加載前…

【AI原理解析】—主成分分析(PCA)原理

目錄 一、PCA的思想 二、PCA的步驟 三、關鍵概念 四、PCA的優勢與應用 PCA&#xff08;主成分分析&#xff0c;Principal Component Analysis&#xff09;是一種廣泛使用的數據降維算法&#xff0c;它通過線性變換將原始數據轉換為一組各維度線性無關的表示&#xff0c;從而…

iOS應用的內存優化

對一個 iOS 項目進行內存優化&#xff0c;可以從多個方面入手&#xff0c;確保應用在不同場景下都能高效穩定地運行。以下是一些具體的內存優化措施和詳細說明&#xff1a; 1. 自動引用計數&#xff08;ARC&#xff09;管理 1.1 避免循環引用 循環引用會導致內存泄漏。使用 …

低代碼平臺的設計模式介紹

低代碼平臺是一種快速交付應用程序的開發工具&#xff0c;主要通過圖形拖拽用戶界面、應用配置界面&#xff0c;使開發者能夠以最少的手動編碼&#xff0c;或者不需要代碼快速交付應用。這種平臺的核心優勢在于提高開發速度和降低技術門檻&#xff0c;使得非技術背景的用戶也能…

基于java+springboot+vue實現的旅游管理系統(文末源碼+lw+ppt)23-402

研究的內容 當下流行的WPS、Word等辦公軟件成為了人們耳熟能詳的系統&#xff0c;但一些更加專業性、性能更加強大的網絡信息工具被人們“埋沒”在互聯網的大海中。甘肅旅游管理系統是一個便于用戶查看熱門景點、酒店信息、推薦線路、旅游攻略、景點資訊等&#xff0c;管理員進…

【Python基礎篇】你了解python中運算符嗎

文章目錄 1. 算數運算符1.1 //整除1.2 %取模1.3 **冪 2. 賦值運算符3. 位運算符3.1 &&#xff08;按位與&#xff09;3.2 |&#xff08;按位或&#xff09;3.3 ^&#xff08;按位異或&#xff09;3.4 ~&#xff08;按位取反&#xff09;3.5 <<&#xff08;左移&#…

HTML 【實用教程】(2024最新版)

核心思想 —— 語義化 【面試題】如何理解 HTML 語義化 ?僅通過標簽便能判斷內容的類型&#xff0c;特別是區分標題、段落、圖片和表格 增加代碼可讀性&#xff0c;讓人更容易讀懂對SEO更加友好&#xff0c;讓搜索引擎更容易讀懂 html 文件的基本結構 html 文件的文件后綴為 …

【高錄用、快檢索、過往5屆均已檢索、SPIE 出版】第六屆無線通信與智能電網國際會議(ICWCSG 2024)

隨著科技的飛速發展和能源需求的日益增長&#xff0c;智能電網技術逐漸成為電力行業的重要發展方向。與此同時&#xff0c;無線通信技術在近年來也取得了顯著的進步&#xff0c;為智能電網的發展提供了強有力的支持。為了進一步推動無線通信與智能電網的結合與發展&#xff0c;…

Vue3 對于內嵌Iframe組件進行緩存

1&#xff1a;應用場景 對于系統內所有內嵌iframe 的頁面均通過同一個路由/iframe, 在router.query內傳入不同src 參數&#xff0c;在同一組件內顯示iframe 內嵌頁面&#xff0c;對這些頁面分別進行緩存。主要是通過v-show 控制顯示隱藏從而達到iframe 緩存邏輯 2&#xff1a…

Github 2024-07-03 C開源項目日報 Top9

根據Github Trendings的統計,今日(2024-07-03統計)共有9個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量C項目9Java項目1Python項目1顯示和控制你的 Android 設備 創建周期:2416 天開發語言:C, Java協議類型:Apache License 2.0Star數量:105222 個…