Git知識點

一、Git簡介

1.1 項目的版本管理

在項目開發過程中,項目沒開發到一個節點就會對當前項目進行備份,這個備份就是項目的一個版本;當我們繼續開發一個階段后,再次進行備份,就生成新的版本——多個版本的集合就是項目的版本庫

在項目版本管理中,我們可以使用手動進行管理,但是存在一些問題:

  • 需要手動維護版本的更新日志,記錄每個版本的變化
  • 需要手動查找歷史版本,當歷史版本比較多的時候,查找工作很繁瑣
  • 當我們需要回退到某個版本時,只能夠手動的通過IDE工具手動打開

1.2 團隊協同開發

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UIBI9Oy5-1639493889409)(imgs/1616032657017.png)]

1.3 版本管理工具—Git

Git是一個開源的分布式版本控制系統,用于敏捷高效的處理任何大小項目的版本管理。

核心功能:

  • 項目的版本管理
  • 團隊協同開發

二、Git下載及安裝

2.1 下載Git

https://git-scm.com/
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CPgIpSJI-1639493889413)(imgs/1616033012417.png)]

2.2 安裝Git

除了選擇安裝位置以外,其他都傻瓜式安裝

2.3 檢查

  • win + r
  • 輸入cmd
  • 輸入 git --version

三、Git架構

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cCFrAe8W-1639493889414)(imgs/1616034871080.png)]

四、Git基本使用

4.1 創建版本庫

  • 在工作空間的目錄中,右鍵“Git Bash Here”打開git終端

  • 在Git終端中輸入git init指令,創建版本庫(就是一個.git目錄)

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-l7wW7Shn-1639493889417)(imgs/1616036472274.png)]

4.2 查看版本庫狀態

git status

4.3 將工作空間的修改添加到暫存區

git add a.txt   ## 只將工作空間中的某個文件add到暫存區
git add . ## 將工作空間中所有文件都add暫存區

4.4 將暫存區內容提交到版本庫(倉庫)

git commit -m '版本說明'

4.5 查看版本庫中的歷史版本

git log --oneline  ## 每個版本信息只顯示一行
get log  ## 顯示每個版本的詳細信息

4.6 設置用戶信息

因為我們將暫存區的內容提交到版本時,會記錄當前版本的提交的用戶信息,因此在版本提交之前需要先綁定用戶信息

git config --global user.name 'ergou'
git config --global user.email 'haha@hehe.com'

4.7 同步歷史版本到工作空間

git checkout 版本號

五、遠程倉庫

5.1 遠程倉庫

遠程倉庫,遠程版本庫;實現版本庫的遠程存儲,以實現團隊的協同開發

遠程倉庫
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BdS1W4Zj-1639493889419)(imgs/1616038980419.png)]

5.2 如何獲得遠程倉庫

  • 使用GitLab搭建私服
  • 遠程倉庫提供商
    • GitHub https://gitbub.com
    • Gitee(碼云) https://gitee.com
    • Coding

5.3 創建遠程倉庫(碼云)

  • 注冊賬號

    • 366274379 / admin123

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-5O0L8CvS-1639493889420)(imgs/1616039783023.png)]

  • 創建遠程倉庫:https://gitee.com/qfytao/j2010.git

  • 遠程倉庫管理(添加開發人員)

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VWFAU8Pi-1639493889420)(imgs/1616040201202.png)]

六、遠程倉庫操作

6.1 push本地倉庫到遠程倉庫

6.1.1 準備工作
  1. 創建本地工作空間

    D:\fmwysrcmainjavaresourcestestjavapom.xml
    
  2. 初始化本地倉庫

    git init
    
  3. 將工作空間搭建的項目結構add到暫存區

    git add .
    
  4. 將暫存區文件提交到版本庫,生成第一個版本

    git commit -m '創建項目'
    
  5. 為當前項目創建一個遠程倉庫

    https://gitee.com/qfytao/fmwy.git

6.1.2 本地倉庫關聯遠程倉庫

建立D:\fmwy中的本地倉庫 和 遠程倉庫https://gitee.com/qfytao/fmwy.git的關聯

 git remote add origin https://gitee.com/qfytao/fmwy.git
6.1.3 查看遠程倉庫狀態
git remote -v
6.1.4 將本地倉庫push到遠程倉庫

push到遠程倉庫需要gitee的帳號和密碼

git push origin master

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fzPZAkpC-1639493889421)(imgs/1616049675765.png)]

6.2 其他開發者pull遠程倉庫到本地

其他開發者:www.1114325587@qq.com *****

6.2.1 先創建本地倉庫
  • 在E盤創建ws目錄(空目錄),進入ws目錄,打開Git客戶端

  • 創建本地版本庫

    git init
    
6.2.2 拉取遠程倉庫到本地
  • 拉取遠程倉庫

    git pull 遠程倉庫地址 master
    git pull https://gitee.com/qfytao/fmwy2.git master
    

6.3 解決協同開發沖突問題

場景:    Helloworld.java  [bbb]開發者1:濤哥                              開發者2:小喬
-------------------------------------------------------------------------------------------
git pull fmwy2 master                    git pull fmwy2 master							在Hellworld.java中新增內容 “bbb”
在Hellworld.java中新增內容 “aaa”git add .git commit -m ''git push fmwy2 master
git add .
git commit -m ''
git push fmwy2 master【會失敗!!!----在我pull之后,push之前被其他開發人員push過】
問題:我該如何操作?
git pull fmwy2 master 【將小喬修改的內容拉取到我本地】對文件進行沖突合并git add .
git commit -m ''
git push fmwy2 maste

HelloWorld.java

>>>>>>>>>>>>>>>>>>>>>HEAD
aaa
=================
bbb
<<<<<<<<<<<<<<<<<<<<< sikdfhjkasdfhjasdfhjk

七、分支管理

7.1 什么是分支

分支就是版本庫中記錄版本位置(支線),分支之間項目會影響,使用分支可以對項目起到保護作用

分支就是一條時間線,每次提交就在這條時間線上形成一個版本

7.2 分支特性

  • 創建一個新的版本庫,默認創建一個主分支—master分支
  • 每個分支可以進行單獨管理(常規分支、保護分支、只讀分支)
  • 分支是可以合并的

7.3 分支操作

7.3.1 創建分支
git branch branch_name
7.3.2 查看分支
git branch
7.3.3 切換分支
git branch branch_name  # 切換到指定分支上的最新版本
7.3.4 檢出分支
git checkout 歷史版本 -b branch_name  # 簽出指定的歷史版本創建新分支
7.3.5 分支合并
  • 三方合并
  • 快速合并
# 在master分支執行 git merge dev   表示將dev分支合并merge
git merge breanch_name

八、Idea整合Git使用

作為Java開發工程,我們代碼的編寫工作都是在IDE工具(idea)中完成,因此我們需要了解和掌握直接使用IDE工具完成Git的操作

8.1 IDEA關聯Git

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-i4t3nA2j-1639493889422)(imgs/1616118889055.png)]

8.2 IDEA中Git版本管理

準備工作:打開IDEA新建一個web工程

8.2.1 創建本地版本庫
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ENbgEJzN-1639493889422)(imgs/1616119511804.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yl3JQ2To-1639493889423)(imgs/1616119549533.png)]
8.2.2 設置忽略文件

在工作空間中有些文件是不需要記錄到版本庫中的(例如.idea、target、.iml文件),可以通過設置忽略提交來實現

  • 在工作空間的根目錄(項目的根目錄)中創建一個名為.gitignore文件

  • .gitignore文件配置忽略過濾條件

    .idea
    target
    *.iml
    
8.2.3 將工作空間add到暫存區
  • 選擇項目/文件—右鍵—Git—Add(添加到暫存區的文件–綠色)

  • 如果一個文件創建好之后還沒有添加到暫存區–棕紅色

  • 添加到暫存區的操作可以設置默認添加

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-VC6ef12H-1639493889423)(imgs/1616120607480.png)]

8.2.4 將暫存區提交到版本庫
  • 選擇項目/文件—右鍵—Git–Commit(記錄到版本庫的文件–黑色)

  • 如果對記錄到 版本庫的文件進行了修改,也就是說工作空間和版本庫不一致–藍色

8.3 IDEA中Git分支管理

8.3.1 創建分支
  • 點擊IDEA右下角Git
  • 在彈窗中點擊New Branch
  • 輸入新分支的名稱
8.3.2 切換分支
  • 點擊IDEA右下角Git
  • 點擊非當前分支右邊的箭頭
  • 在選項卡點擊checkout
8.3.3 刪除分支
點擊右小角git
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7pY3Jm1O-1639493889424)(imgs/1616123528818.png)]
8.3.4 合并分支

例如:將dev合并到master

  • 切換到master分支
  • 點擊dev分支右面的箭頭,在展開的菜單中選擇Merge into current

8.4 IDEA中使用Git進行團隊協同開發

8.4.1 項目管理者
  1. 完成項目搭建

  2. 為當前項目創建本地版本庫

  3. 將搭建好的項目提交到本地版本庫

    • add到暫存區
    • commit到版本庫
  4. 創建遠程版本庫(遠程倉庫)

    • https://gitee.com/qfytao/git-jd.git
    • 管理—添加開發者
  5. 將本地倉庫push到遠程倉庫(master分支——master分支)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-eRiobKUN-1639493889425)(imgs/1616124645208.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-C9XlLNfv-1639493889425)(imgs/1616124765710.png)]
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yvHXxc7t-1639493889426)(imgs/1616124999737.png)]
  1. 在本地創建dev分支

    在遠程倉庫checkout as 新建本地dev分支(master需要進行保護)

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6hwSjGsm-1639493889426)(imgs/1616125230163.png)]
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-7MEV8S42-1639493889427)(imgs/1616125375770.png)]
  2. 將本地dev分支push到遠程倉庫,新建遠程倉庫的dev分支

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-frrc3mPO-1639493889427)(imgs/1616125529083.png)]

  3. 設置遠程倉庫中master分支為保護分支

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Ahh2hSdC-1639493889428)(imgs/1616125664648.png)]

8.4.2 項目開發者
  1. 從管理員提供的遠程倉庫pull項目到本地

    • 遠程倉庫 https://gitee.com/qfytao/git-jd.git
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-oPKui0pu-1639493889428)(imgs/1616126055257.png)]
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-79ZV88tQ-1639493889429)(imgs/1616126193999.png)]
  2. 打開項目(此時本地工作空間的項目和遠程倉庫是同步的)

  3. 開發步驟:

    • 選擇要修改的文件–pull
    • 進行修改操作
    • 測試本地修改
    • add到暫存區
    • commit到本地版本庫
    • push到遠程倉庫(dev)

8.5 解決團隊協同開發的沖突問題

沖突:在pull之后,push之前被其他開發者這push成功

  • 選擇產生沖突的文件—pull
  • 彈出彈窗提示:accpet yours | accept theirs | Merge
    • accpet yours 保留自己的版本(提交時會覆蓋其他開發者代碼)
    • accpet theirs 保留遠程倉庫上的版本(會導致自己修改的代碼丟失)
    • Merge 手動合并(和其他開發者溝通合并方案)

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

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

相關文章

(1)初始化項目

2019獨角獸企業重金招聘Python工程師標準>>> &#xff08;1&#xff09;初始化項目 1 使用vue-cli初始化項目 vue init webpack my-renren得到以下輸出&#xff1a; ? Project name my-renren ? Project description A Vue.js project ? Author neumeng <4048…

C語言變量

C語言二進制、八進制、十六進制詳解 什么是二制制? 在數學計算中&#xff0c;二進制計數系統的公分母是最小的&#xff0c;它以2為基數。你還記得在小學或中學時所學的不同的計數系統嗎?筆者在上小學時&#xff0c;曾在一堂數學課中學過以6為基數的計數系統&#xff1b;你先…

Spring Data JPA - 參考文檔 地址

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Spring Data JPA - 參考文檔 文檔地址

JS內置方法(Array)

concat() 用于連接兩個或多個數組&#xff0c;該方法不會改變現有的數組&#xff0c;而是返回被連接數組的一個副本。join() 把數組中的所有元素放入一個字符串&#xff0c;元素是通過指定的分隔符進行分隔的。若省略了分隔符參數&#xff0c;則使用逗號作為分隔符。push() 向…

模切ERP和免費OA系統是互相結合提高效率

模切ERP和免費OA系統是互相結合提高效率在模切行業中&#xff0c;模切ERP在管理上的作用占了很大的比重&#xff0c;但是免費OA在管理上的地位都不容忽視的。點晴OA的核心問題是如何提高日常的辦公效率問題。因此點晴OA系統里包含的功能是非常全面&#xff0c;如&#xff1a;辦…

maven知識點

一、Maven簡介 1.1 在項目中如何導入jar包&#xff1f; 下載jar包 &#xff08;mvn&#xff09;將下載的jar包拷貝到項目中&#xff08;WEB-INF/lib&#xff09;選擇jar文件–右鍵–Add as Library 1.2 傳統導入jar包的方式存在什么問題&#xff1f; 步驟多&#xff08;相對…

使用SpringBoot yml配置文件

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.上一次我們已經使用SpringBoot實現了一個簡單的HelloWord程序&#xff0c;辣么接下來我們簡單的使用一下他的yml格式的配置文件。 2.在…

軟件行業資訊

為什么只有設計師才能發明流行的新語言 先回顧一下知名編程語言的作者和創造時間&#xff1a;Fortran 語言&#xff0c;50年代&#xff0c;IBM 研究員&#xff1b;Lisp 語言&#xff0c;50年代&#xff0c;MIT 的教授和學生&#xff1b;C語言&#xff0c;70年代&#xff0c;貝爾…

spring知識點

一、Spring概述 1.1 web項目開發中的耦合度問題 在Servlet中需要調用service中的方法&#xff0c;則需要在Servlet類中通過new關鍵字創建Service的實例 public interface ProductService{public List<Product> listProducts(); }public class ProductServiceImpl1 imple…

Linux系統下的權限試題測試

不會做的留言&#xff0c;到時在發布答案&#xff01;一、 有兩個參賽團隊team1、team2&#xff0c;兩個團隊各3人, 這兩個團隊互相競爭&#xff0c;各需提交一份報告&#xff0c;每組成員可以修改自己團隊內的所有文件&#xff0c;且不能讓其他團隊的人修改自己的文件內容&…

電子科大軟件系統架構設計——軟件建模詳細設計

文章目錄 軟件建模詳細設計概述軟件建模詳細設計目標軟件建模詳細設計原則開閉原則里氏 (Liskov) 替換原則依賴倒置原則接口分離原則單一職責原則最少知識原則&#xff08;迪米特法則&#xff09;高內聚原則松耦合原則可重用原則 軟件建模詳細設計內容 UML 軟件靜態結構視圖建模…

YAML文件解析

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 YAML是“另一種標記語言”的外語縮寫,YAML 是一種比JSON&#xff08;json多層次{ 與 [ 會被搞暈的&#xff09;更直觀的表現形式&#xf…

120分鐘React快速掃盲教程

在教程開端先說些題外話&#xff0c;我喜歡在學習一門新技術或讀過一本書后&#xff0c;寫一篇教程或總結&#xff0c;既能幫助消化&#xff0c;也能加深印象和發現自己未注意的細節&#xff0c;寫的過程其實仍然是一個學習的過程。有個記錄的話&#xff0c;在未來需要用到相關…

springmvc知識點

一、SpringMVC概述 Spring MVC 是由Spring官方提供的基于MVC設計理念的web框架。 SpringMVC是基于Servlet封裝的用于實現MVC控制的框架&#xff0c;實現前端和服務端的交互。 1.1 SpringMVC優勢 嚴格遵守了MVC分層思想 采用了松耦合、插件式結構&#xff1b;相比較于我們封裝的…

spring @component的作用

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、controller 控制器&#xff08;注入服務&#xff09; 2、service 服務&#xff08;注入dao&#xff09; 3、repository dao&#xff…

微信小程序 懸浮按鈕

2019獨角獸企業重金招聘Python工程師標準>>> 效果視頻 https://pan.baidu.com/s/1yfrDaG9YAX0--v0EA3awZA 布局需要按照圓形排列&#xff0c;所以我們需要計算每個點的坐標 代碼部分 <view styleposition:fixed; wx:for"{{list}}" wx:for-index"i…

C語言const關鍵字—也許該被替換為readolny

const 是constant 的縮寫&#xff0c;是恒定不變的意思&#xff0c;也翻譯為常量、常數等。很不幸&#xff0c;正是因為這一點&#xff0c;很多人都認為被const 修飾的值是常量。這是不精確的&#xff0c;精確的說應該是只讀的變量&#xff0c;其值在編譯時不能被使用&#xff…

dbus服務自啟動方法

Linux 一般發行版上 "/usr/share/dbus-1/services/"目錄就是dbus放service文件的地方。 需要自動啟動的服務器 就在這個目錄放一個 service文件&#xff0c;內容如下&#xff1a; $ cat /usr/share/dbus-1/services/dhcdbd.service [D-BUS Service] Namecom.redhat.…

在Spring Boot中使用 @ConfigurationProperties 注解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 上一篇博客寫了 如何在Spring Boot application中配置mail . 使用 Value 注解注入屬性. 但 Spring Boot 提供了另一種方式 &#xff0c;能…

Micronaut教程:如何使用基于JVM的框架構建微服務

\本文要點\\Micronaut是一種基于jvm的現代化全棧框架&#xff0c;用于構建模塊化且易于測試的微服務應用程序。\\tMicronaut提供完全的編譯時、反射無關的依賴注入和AOP。\\t該框架的開發團隊和Grails框架的開發團隊是同一個。\\tMicronaut框架集成了云技術&#xff0c;服務發現…