141.【Git版本控制-本地倉庫-遠程倉庫-IDEA開發工具全解版】

Git-深入挖掘

  • (一)、Git分布式版本控制工具
    • 1.目標
    • 2.概述
        • (1).開發中的實際常見
        • (2).版本控制器的方式
        • (3).SVN (集中版本控制器)
        • (4).Git (分布版本控制器)
        • (5).Git工作流程圖
  • (二)、Git安裝與常用命令
    • 1.Git環境配置
        • (1).安裝Git的操作
        • (2).Git的配置操作
        • (3).為常用的指令配置別名 (可選)
        • (4).解決GitBash中文亂碼問題
    • 2. 創建本地倉庫
    • 3.基礎操作命令
        • (1).查看修改的狀態 (status)
        • (2).添加工作區到暫存區 (git add)
        • (3).提交暫存區到本地倉庫 (git commit)
        • (4).查看提交日志 (git log)
        • (5).版本回退 (回退指定版本)
        • (6).添加文件至忽略列表
    • 4.分支
        • (1).查看本地分支
        • (2).創建本地分支 (branch)
        • (3).切換分支 (checkout)
        • (4).合并分支 (merge)
        • (5).刪除分支 (branch)
        • (6).解決合并沖突 (本地倉庫)
        • (7).開發中分支使用原則與流程
  • (三)、Git遠程倉庫
    • 1.常用的托管服務[遠程倉庫]
    • 2.注冊碼云
    • 3.創建遠程倉庫
    • 4.配置SSH公鑰
    • 5.操作遠程倉庫
        • (1).添加遠程倉庫
        • (2).查看遠程倉庫
        • (3).本地倉庫推送到遠程倉庫
        • (4).查看本地倉庫與遠程倉庫分支之間的關聯
        • (5).從遠程倉庫克隆到本地
        • (6).從遠程倉庫中抓取和拉取
        • (7).解決合并沖突 (遠程倉庫版本)
  • (四)、在Idea中使用Git
    • 1.在Idea中配置Git
    • 2.在idea中操作Git
        • (1).創建項目遠程倉庫
        • (2).創建本地倉庫
        • (3).提交到本地倉庫
        • (4).推送到遠程倉庫
        • (5).推送到遠程倉庫
        • (6).克隆遠程倉庫到本地
        • (7). 解決合并沖突 (idea版本)
        • (8).創建本地分支
  • (五)、場景分析
    • 1.場景再現
    • 2.場景鐵令

(一)、Git分布式版本控制工具

1.目標

  • 了解Git基本概念
  • 能夠概述Git工作流程
  • 能夠使用Git常用命令
  • 熟悉Git代碼托管服務
  • 能夠使用idea操作Git

組長:創建本地倉庫和遠程倉庫

# 1.初始化
git init 
# 2.將本地倉庫與遠程倉庫關聯
git remote add origin git@gitee.com:lwt121788/git_test.git 
# 3.將本地倉庫的master分支和遠程倉庫origin的master進行關聯 (并提交)
git push --set-upstream origin master  

開發者:第一次

# 1.首先進行克隆項目到本地倉庫
git clone; 
# 2.創建并選擇自己的分支xxx
xxx
xxxgit checkout dev01;
# 3.添加到本地倉庫 
git add .
git commit -m "提交注釋"
# 5.切換到主分支master
git checkout master
# 6.與master進行合并
git merge dev01
# 7.拉取遠程倉庫查看是否沖突
git pull
# 7.提交到遠程倉庫 (為什么要切換到master分支? 因為就master分支和遠程master進行關聯了)
git push 

開發者第二次到N次:

# 1.創建并選擇自己的分支
git checkout dev01;
# 2.首先進行拉取項目到本地倉庫
git pull; xxx
xxx
xxx# 3.添加到本地倉庫 
git add .
git commit -m "提交注釋"
# 5.切換到主分支master
git checkout master
# 6.與master進行合并
git merge dev01
# 7. 拉取遠程倉庫查看是否沖突
git pull
# 4.提交到遠程倉庫
git push 

2.概述

(1).開發中的實際常見
場景一: 備份小米負責的模塊就要完成了,就在即將Release之前的一瞬間,硬盤光榮犧牲了,幾個月來的努力付之東流。
場景二: 代碼還原這個項目需要一個很復雜的功能,老王摸索了一個星期終于有眉目了,可是這被改的面目全非的代碼已經回不到從前了。什么地方能買到哆啦A夢的時光機啊?
場景三: 協同開發小A和小B先后從文件服務器上下載了同一個文件: assay.java。小A在這個文件中的第30行增加了一個方法叫做count(),先保存到了文件服務器上。小B在assay.java文件中的第50行增加了一個方法叫做sum(),也隨后保存到了文件服務器上,于是count()方法只存在于小剛的記憶中了。
場景四: 追溯問題代碼的編寫人和編寫時間!老王式另一位項目經理,每次因為項目進度挨罵之后,他都不知道是扣哪一個程序員的工資,于是使用Gite可以追溯。
(2).版本控制器的方式
a.集中式版本控制工具集中式版本控制工具,版本是幾種存放在中央服務器上的,team里的每個人work時從中央服務器下載代碼,是必須聯網才能工作,局域網或者互聯網,個人修改后然后提交到中央版本庫。 舉例: SVNCVS
b.分布式版本控制工具分布式版本控制系統沒有 "中央服務器",每個人的電腦都是一個完整的版本庫,這樣工作的時候,無需聯網了。因為版本庫就在你自己的電腦上,多人協作只需要各自的修改推送給對方,就能互相看到對方的修改了。舉例: Git
(3).SVN (集中版本控制器)

在這里插入圖片描述

  1. 工作流程

SVN是集中式版本控制系統,版本庫是集中放在中央服務器的工作流程如下:

1.從中央服務器遠程倉庫下載代碼
2.修改后將代碼提交到中央服務器遠程倉庫
  1. 優缺點
優點: 簡單,易操作
缺點:所有代碼必須放在中央服務器  1.服務器一旦宕機無法提交代碼,即容錯性較差2.離線無法提交代碼,無法及時記錄我們的提交行為
(4).Git (分布版本控制器)

Git是分布式的,Git不需要中心服務器,我們每臺電腦擁有的東西都是一樣的,我們使用Git并且有個中心服務器。僅僅是為了方便交換大家的修改,但是這個服務器的地位和我們每個人的PC都是一樣的。沒有它大家一樣可以工作,只不過"交換"修改不方便而已。分為兩種類型的倉庫:本地倉庫和遠程倉庫

  • 速度
  • 簡單的設計
  • 對非線性開發模式的強力支持(允許成千上萬個并行并發的分支)
  • 完全分布式
  • 有能力高效管理類似 Linux 內核一樣的超大規模項目 (速度和數據量)
(5).Git工作流程圖

在這里插入圖片描述

  1. clone (克隆): 從遠程倉庫中克隆或拉取代碼到本地倉庫。
  2. checkout (檢出): 從本地進行代碼修改
  3. add (添加): 在提交前先將代碼提交到暫存區
  4. commit (提交): 提交到本地倉庫。本地倉庫中保存修改的各個歷史版本
  5. fetch (抓取): 從遠程庫,抓取到本地倉庫,不進行任何的合并動作,一般操作比較少
  6. pull (拉取): 從遠程庫拉到本地倉庫,自動進行合并(merge),然后放到工作區,相當于 fetch+merge
  7. fetch (抓取): 修改完成后,需要和團隊成員共享代碼時,將代碼push到遠程倉庫。

(二)、Git安裝與常用命令

1.Git環境配置

(1).安裝Git的操作

https://git-scm.com/download

在這里插入圖片描述
傻瓜式一鍵安裝,假如安裝成功的話。我們右鍵會得到一個這個
在這里插入圖片描述

(2).Git的配置操作

當安裝Git后首先要做的事情就是設置用戶名稱和email地址。這是非常重要的,因為每次Git提交都會使用該用戶信息。

  1. 打開Git Bash

在這里插入圖片描述

  1. 設置用戶信息 這里的郵箱和名字都可以隨意寫!!!
git config --global user.name "jsxs"
git config --global user.email "xxxxx.@qq.com"
  1. 查看配置信息
git config --global user.name
git config --global user.email

我們也可以到 C:\Users\22612\.gitconfig 下查看!
在這里插入圖片描述

(3).為常用的指令配置別名 (可選)

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

  1. 打開用戶目錄,創建 .bashrc 文件

部分windows系統不允許用戶創建點擊開頭的文件,可以打開gitBash,執行 touch ~/.bashrc

在這里插入圖片描述

  1. .bshrc文件中輸入如下內容
# 用于輸出git的提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于輸出當前目錄所有文件及其基本信息
alias ll='ls -al'

在這里插入圖片描述

  1. 打開gitBash,執行 source ~/.bashrc

在這里插入圖片描述

(4).解決GitBash中文亂碼問題
  1. 打開GitBash執行下面的命令
git config --global core.quotepath false
  1. ${git_home}/etc/bash.bashrc 文件最后假如下面兩行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
  1. 假如找不到git安裝在哪了

在這里插入圖片描述

  1. C:\Program Files\Git\etc配置我們的bash.bashrc
    在這里插入圖片描述

2. 創建本地倉庫

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

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

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

(3).執行 git init

(4).如果創建成功后可在文件夾上看到隱藏的 .git 目錄。

(5).除了.git文件夾外,其他的目錄都是工作目錄

在這里插入圖片描述

3.基礎操作命令

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

在這里插入圖片描述

  • 未跟蹤: 就是文件創建好了但是還沒有和Git有任何關聯。
  • 未暫存: 就是文件創建好了,且和Git有關聯(就是進行修改了)。
  • 已暫存: 就是將我們的文件發生了修改還未放入暫存區。
  • 已暫存: 就是我們的文件發生了修改且放入了我們的暫存區 (git add.)。
  • 本地倉庫: 就是將我么的暫存區的數據放入倉庫 (git commit)。
git add  (工作區 -> 暫存區 )gi commit (暫存區 -> 本地倉庫)
(1).查看修改的狀態 (status)
# 我們在剛才創建的本地倉庫,添加工作目錄
touch file01.txt
# 檢查我們的狀態
git status

在這里插入圖片描述

(2).添加工作區到暫存區 (git add)
# 將我們未跟蹤的工作目錄放進我們的暫存區
git add .
# 查看我們的工作目錄的狀態  (狀態為暫存區)
git status

未跟蹤狀態轉換成我們的暫存區
在這里插入圖片描述

(3).提交暫存區到本地倉庫 (git commit)
# 將暫存區的數據放入我們的本地倉庫
git commit -m "add file01"
# 將我們暫存區的數據放入我們的本地倉庫后  (工作目錄會清空)git status

暫存區轉換成本地倉庫
在這里插入圖片描述

(4).查看提交日志 (git log)
# 查看誰提交的
git log
  • git log [option]
    • option
      • –all 顯示所有分支
      • –pretty=oneline 將提交信息顯示為一行
      • –abbrev-commit 使得輸出的commit更簡短
      • –graph 以圖的形式顯示
        查看時誰提交的..

在這里插入圖片描述

#我們再次修改我們的文件內容
vim file01.txt
# 查看狀態
git status

在這里插入圖片描述

# 未暫存轉換成暫存
git add .
# 暫存轉換成本地倉庫
git commit -m "udate the textfile02"
(5).版本回退 (回退指定版本)
  • 作用: 版本切換
    在這里插入圖片描述

  • 命令形式: git reset --hard commitID

    • commitID 可以使用git-loggit log指令查看。
      在這里插入圖片描述
      回退成功,內容被清除
      在這里插入圖片描述
      查看我們的日志 git-log 我們發現沒有了
      在這里插入圖片描述
  • 如何查看已經刪除的記錄?

    • git reflog
      在這里插入圖片描述
      git reset --hard 08db245: 恢復刪除的
      在這里插入圖片描述

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

(6).添加文件至忽略列表

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

git add [fileneme]: :只添加指定文件到暫存區
git add . :添加所有工作目錄到暫存區

1.假如說我們不想要指定文件

touch .gitignorevim .gitignore

所有的以a結尾的文件,都不要加入到我們的暫存區中
在這里插入圖片描述
在這里插入圖片描述

4.分支

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

(1).查看本地分支
  • 命令: git branch
    在這里插入圖片描述
(2).創建本地分支 (branch)
  • 命令: git branch 分支名
    在這里插入圖片描述
    1.master提交 .gitignore。 dev01分支沒提交
    在這里插入圖片描述
    2.master目錄如下
    在這里插入圖片描述
(3).切換分支 (checkout)
  • 命令: git checkout 分支名

切換到我們的dev01目錄,發現沒有.gitignore文件
在這里插入圖片描述
在這里插入圖片描述

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

  • 命令: git checkout -b 分支名
(4).合并分支 (merge)

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

命令: git merge 分支名稱

我們發現我們在 A 分支提交之后,那么 B 分支我們看不到,是因為我們 A沒有和B進行 合并(merge)。我們在dev01分支上進行新建一個 file02.txt 文件,那么 master 分支上就不會有。

1.切換到我們的dev01分支并進行提交

在這里插入圖片描述
2.我們將 dev01 分支合并到我們的 master 分支下

# 我們先切換到 master 分支下
git checkout master
# 將我們的 dev01 與 master 進行合并
git merge dev01

在這里插入圖片描述
我們發現合并成功!!
在這里插入圖片描述
master擁有所有的 dev01文件;但dev01不一定有master所有的!!
在這里插入圖片描述

(5).刪除分支 (branch)

不能刪除當前分支,只能刪除其他分支。 也就是需要先切換到其他分支,然后再其他分支上進行刪除。

git branch -d b1 刪除分支時,需要做各種檢查。
git branch -D b1 不做任何檢查,強制刪除 (未合并merge就刪除,就出現不讓刪除,我們可以使用強制刪除)。

(6).解決合并沖突 (本地倉庫)

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

  1. 處理文件中沖突的地方
  2. 將解決完沖突的文件加入暫存區 (add)
  3. 提交到倉庫 (commit)
  1. 沖突部分的內容理解如下所示:

1. 使用dev分支修改我們的 file01.txt
在這里插入圖片描述
2. 使用master分支也進行修改我們的 file01.txt
未修改前:
在這里插入圖片描述
修改后: (還未執行合并)
在這里插入圖片描述
3.進行合并 merge

# 切換成我們的master
git checkout master
# 進行合并我們的分支
git merge dev

在這里插入圖片描述

  1. 如何解決我們的沖突問題

1.查看我們共同修改的文件:
在這里插入圖片描述
2.進行解析我們這個被git托管的文件
在這里插入圖片描述
3.處理文件中沖突的地方: 就是最終生成什么.
在這里插入圖片描述
4. 將解決完沖突的文件加入暫存區并提交到倉庫

我們發現我們沖突解決了,而且進行了合并

在這里插入圖片描述
5.master分支下更改成了我們想要的
在這里插入圖片描述

6.dev分支下依然是dev原有的
在這里插入圖片描述

(7).開發中分支使用原則與流程

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

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

  • master (生產) 分支
    • 線上分支,主分支,中小項目線上運行的應用對應的分支。
  • develop (開發) 分支(小版本)
    • 是從master創建的分支,一般作為開發部門的主要開發分支,如果沒有其他分支開發不同期上線要求,都可以在次版本進行開發,但開發完成后,需要時合并到master分支,準備上線。
  • feature/xxxx 分支 (功能開發)
    • 從develop創建的分支,一般是同期并行開發,但不同期上線時創建的分支,分支上的研發性任務完成后合并到develop分支
  • hotfix/xxxx 分支 (BUG修改)
    • 從master派生的分支,一般作為線上bug修復使用,修復完后需要合并到 master、test、develop分支
  • 還有一些其他分支,在此不再詳述,列如test分支 (用于代碼測試)、pre分支(預上線分支)等等。

在這里插入圖片描述

(三)、Git遠程倉庫

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

前面我們已經知道了Git中存在兩種類型的倉庫,即本地倉庫和遠程倉庫。那么我們如何搭建Git遠程倉庫呢?我們可以借用互聯網上提供的一些代碼托管服務來實現,其中比較常用的就是 碼云、GitLab、Github等等。

2.注冊碼云

要想使用碼云的相關服務,需要注冊賬號:

3.創建遠程倉庫

1.創建倉庫
在這里插入圖片描述
在這里插入圖片描述

4.配置SSH公鑰

  • 創建SSH公鑰 ssh-keygen -t rsa

  • 不斷回車

    • 如果公鑰已經存在,則自動覆蓋
  • Gitt設置賬戶公鑰

    • 查看生成的公鑰
      • cat ~/.ssh/id_rsa.pub

    在這里插入圖片描述
    在這里插入圖片描述

  • 驗證是否配置成功

    • ssh -T git@gitee.com
      在這里插入圖片描述

5.操作遠程倉庫

1.將本地倉庫與遠程倉庫進行關聯

關聯語法: git remote [遠程倉庫名] [遠程倉庫SSH]

# 將本地倉庫與遠程倉庫管理 git@gitee.com:lwt121788/git_test.gitgit remote add origin git@gitee.com:lwt121788/git_test.git
# 查看本地倉庫關聯的遠程倉庫
git remote

在這里插入圖片描述
2.將本地倉庫推送到已關聯的遠程倉庫

本地倉庫推送到遠程倉庫語法: git push [遠程倉庫名] [分支名]

# 
git push origin master

在這里插入圖片描述

(1).添加遠程倉庫

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

  • 命令: git remote add <遠端名稱> <遠倉路徑>
    • 遠端名稱,默認是orign,取決于遠端服務器設置
    • 倉庫路徑,從遠端服務器獲取此URL
    • 列如: git remote add origin git@gitee.com:lwt121788/git_test.git
      在這里插入圖片描述
(2).查看遠程倉庫
  • 命令: git remote
    在這里插入圖片描述
(3).本地倉庫推送到遠程倉庫
  • 命令: git push [-f] [-set-upstream] [遠端名稱 [本地分支][:遠端分支]]
    • 如果遠程分支名和本地分支名相同,則可以只些本地分支

      • git push origin master
        在這里插入圖片描述
    • --set -upstream 推送到遠端的同時并且建立起本地和遠端分支的關聯關系

      • git push --set-upstream origin master
        在這里插入圖片描述
    • 如果當前分支已經和遠端分支關聯,則可以省略分支名和遠端名。

      • 執行本地和遠程關聯之前,也就是本地倉庫的master和遠程倉庫的master未執行 git push --set-upstream origin master
        在這里插入圖片描述
      • git push 將master分支推送到已關聯的遠端分支 git push。也就是本地倉庫和遠程倉庫執行 git push --set-upstream origin master 之后。

在這里插入圖片描述

(4).查看本地倉庫與遠程倉庫分支之間的關聯
#將本地的master與遠程的master進行關聯
git push --set-upstream origin master
# 查看本地倉庫的分支與遠程倉庫的分支關系git branch -vv

在這里插入圖片描述

(5).從遠程倉庫克隆到本地

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

  • 命令: git clone <倉庫路徑> [本地目錄]
    • 本地目錄可以省略,會自動生成一個目錄。
      git clone git@gitee.com:lwt121788/git_test.git hello-git
      在這里插入圖片描述
(6).從遠程倉庫中抓取和拉取

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

  • 抓取命令: git fetch [remote name] [branch name]
    • 抓取指令就是將倉庫里的更新都抓取到本地,不會進行合并。
      1.未執行合并操作 git fetch
      在這里插入圖片描述
      2.進行合并剛才拉取的文件 git merge origin/master
      在這里插入圖片描述

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

  • 拉取 命令: git pull [remote name] [branch name]
    • 拉取指令就是將遠端倉庫的修改拉到本地并進行自動合并,等于fetch+merge。
      1. 執行拉取 git pull
      在這里插入圖片描述

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

(7).解決合并沖突 (遠程倉庫版本)

在一段時間A、B用戶修改了同一個文件,且修改了同一行位置的代碼,此時會發生合作沖突。

A用戶再本地修改代碼后優先推送到遠程倉庫,此時B用戶再本地修訂代碼,提交到本地倉庫后,也要繼續推送到遠程倉庫,此時B用戶晚于A用戶,故需要先拉取遠程倉庫的提交,經過合并后才能推送到遠端分支,如下圖所示:

在這里插入圖片描述

在B用戶拉取代碼時,因為A、B用戶同一段時間修改了同一個文件的相同位置代碼,故會發生合并沖突。

遠程分支也是分支,所以合并時沖突的解決方式也和解決本地分支沖突相同

  1. 解決遠程合并沖突

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
因為剛開始的時候都處于同一個階段,所有的文件都一樣。然后A開始第一次遠程推送,推送成功?。代表著修改的同一個文件的同一個位置已經進行了修改,此時B分支還不知道他和A修改的是同一個位置,但知道A進行了一次遠程推送。所以先進行一次拉取合并的操作,因為提交記錄中有和B分支一樣修改的內容會覺得有沖突。

總結: 在我們push之前,先進行pull拉取。

(四)、在Idea中使用Git

1.在Idea中配置Git

安裝好Idea后,如果Git安裝在默認路徑下,那么idea會自動找到git的位置,如果更改了Git的安裝位置則需要手動配置下Git的路徑。選擇File->Settings打開設置窗口,找到 Version Controller下的Gitde 選項。

2.在idea中操作Git

場景: 本地已經有一個項目,但是并不是git項目,我們需要將這個放到碼云的倉庫里,和其他開發人員繼續一起寫作開發。

(1).創建項目遠程倉庫

在這里插入圖片描述

(2).創建本地倉庫

在這里插入圖片描述
在這里插入圖片描述

(3).提交到本地倉庫

工作區 -> 暫存區 -> 倉庫區
在這里插入圖片描述
在這里插入圖片描述

(4).推送到遠程倉庫

``
在這里插入圖片描述
將本地倉庫和遠程倉庫進行關聯
在這里插入圖片描述

(5).推送到遠程倉庫

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

(6).克隆遠程倉庫到本地

在這里插入圖片描述

(7). 解決合并沖突 (idea版本)
  1. 分支之間的沖突

在這里插入圖片描述
在這里插入圖片描述

  1. 其他分支進行提交

發現分支之間出現沖突
在這里插入圖片描述
在這里插入圖片描述

  1. 解決沖突

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
一個遠程分支代表一個版本!!!

(8).創建本地分支

1.使用idea創建遠程分支

在這里插入圖片描述
在這里插入圖片描述

(五)、場景分析

1.場景再現

  1. 由組長,基于項目創建本地倉庫創建遠程倉庫,推送項目到遠程倉庫。

在這里插入圖片描述

  1. 每一位組員從遠程克隆項目到idea中,這樣每位同學在自己電腦上就有一個工作副本,可以正式的開始開發了。我們模擬兩個組員(組員A、組員B),克隆兩個工作區。

在這里插入圖片描述
3. 組員A修改工作區,提交到本地倉庫,再推送到遠程倉庫。組員B可以直接從遠程倉庫獲取最新的代碼。

在這里插入圖片描述
4. 組員A和組員B修改了同一份文件的同一行,提交到本地沒有問題,但是推送到遠程倉庫時,后一個推送操作就會失敗

解決辦法: 需要先獲取遠程倉庫到本地倉庫,編輯沖突,提交并推送代碼。
在這里插入圖片描述

2.場景鐵令

  1. 切換分支前線提交本地的修改
  2. 代碼計時提交,提交過了就不會丟。
  3. 遇到任何問題都不要刪除文件目錄。

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

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

相關文章

element中el-switch的v-model自定義值

一、問題 element中的el-switch的值默認都是true或false&#xff0c;但是有些時候后端接口該字段可能是0或者1&#xff0c;如果說再轉換一次值&#xff0c;那就有點太費力了。如下所示&#xff1a; <template><el-switchinactive-text"否"active-text&quo…

【Seata源碼學習 】篇四 TM事務管理器是如何開啟全局事務

TM發送 單個或批量 消息 以發送GlobalBeginRequest消息為例 TM在執行攔截器鏈路前將向TC發送GlobalBeginRequest 消息 io.seata.tm.api.DefaultGlobalTransaction#begin(int, java.lang.String) Overridepublic String begin(String applicationId, String transactionServi…

操作系統發展過程--單道批處理系統、多道批處理系統、分時系統、實時系統

一、單道批處理系統 計算機早期&#xff0c;為了能提高利用率&#xff0c;需要盡量保持系統的連續運行&#xff0c;即在處理完一個作業之后&#xff0c;緊接著處理下一個作業&#xff0c;以減少機器的空閑等待時間 1.單道批處理系統的處理過程 為了實現對作業的連續處理&…

51單片機應用從零開始(七)·循環語句(if語句,swtich語句)

51單片機應用從零開始&#xff08;一&#xff09;-CSDN博客 51單片機應用從零開始&#xff08;二&#xff09;-CSDN博客 51單片機應用從零開始&#xff08;三&#xff09;-CSDN博客 51單片機應用從零開始&#xff08;四&#xff09;-CSDN博客 51單片機應用從零開始&#xff08;…

數倉成本下降近一半,StarRocks 存算分離助力云覽科技業務出海

成都云覽科技有限公司傾力打造了鳳凰瀏覽器&#xff0c;專注于為海外用戶提供服務&#xff0c;公司致力于構建一個全球性的數字內容連接入口&#xff0c;為用戶帶來更為優質、高效、個性化的瀏覽體驗。 作為數據驅動的高科技公司&#xff0c;從數據中挖掘價值一直是公司核心任務…

【Spring進階系列丨第四篇】學習Spring中的Bean管理(基于xml配置)

前言 在之前的學習中我們知道&#xff0c;容器是一個空間的概念&#xff0c;一般理解為可盛放物體的地方。在Spring容器通常理解為BeanFactory或者ApplicationContext。我們知道spring的IOC容器能夠幫我們創建對象&#xff0c;對象交給spring管理之后我們就不用手動去new對象。…

基于單片機的智能藍牙避障循跡小車

智能小車循跡與避障運動控制系統的設計 摘 要:本設計主要由STC89C52單片機來進行控制&#xff0c;通過輸入輸出兩個端口控制驅動模塊來調節電機的工作狀態。本設計預利用機器視覺&#xff0c;通過識別條帶狀路標實現自主導航且利用超聲波模塊實時檢測距離以實現避障功能&…

vue3 webSocket 封裝及使用

vue3 webSocket 封裝及使用 封裝 import { ref, onUnmounted } from vue; interface SocketOptions {heartbeatInterval?: number;reconnectInterval?: number;maxReconnectAttempts?: number; }class Socket {url: string;ws: WebSocket | null null;opts: SocketOption…

【Docker】從零開始:9.Docker命令:Push推送倉庫(Docker Hub,阿里云)

【Docker】從零開始&#xff1a;9.Docker命令:Push推送倉庫 知識點1.Docker Push有什么作用&#xff1f;2.Docker倉庫有哪幾種2.1 公有倉庫2.2 第三方倉庫2.3 私有倉庫2.4 搭建私有倉庫的方法有哪幾種 3.Docker公有倉庫與私有倉庫的優缺點對比 Docker Push 命令標準語法操作參數…

openEuler 22.03 LTS x86_64 cephadm 部署ceph18.2.0 未完成 筆記

環境 準備三臺虛擬機 10.47.76.94 node-1 10.47.76.95 node-2 10.47.76.96 node-3 下載cephadm [rootnode-1 ~]# yum install cephadm Last metadata expiration check: 0:11:31 ago on Tue 21 Nov 2023 10:00:20 AM CST. Dependencies resolved. Package …

酷開系統 | 酷開科技聚焦價值人群 助力營銷增長

2023年&#xff0c;是消費復蘇回暖的一年&#xff0c;市場中充溢著大量品牌重啟增長的機遇與實例。品牌商期望能夠把握住市場趨勢&#xff0c;通過營銷獲得確定性的業績提升&#xff0c;并在未來收獲長期穩定的增長。作為數字媒介的代表之一&#xff0c;OTT大屏營銷的屬性和價值…

Vue學習之路------指令

Vue指令 vue會根據不同的指令&#xff0c;針對標簽實現不同的功能 指令:帶有v-前綴的特殊標簽屬性 1&#xff1a;v-html&#xff1a;指令 <div v-html"msg"></div> 2&#xff1a;v-show 作用&#xff1a;控制元素顯示隱藏 語法&#xff1a;v-show&quo…

【SpringMVC】 對請求的不同響應

前言 本文學習如何運用不同的注解來返回不同的響應. 1.返回靜態頁面Controller 返回index.html頁面 Controller 和 RestController的區別 controller 只有加上這個注解,Spring才會幫我們管理這個代碼.后續我們訪問時才能訪問到. RestController 等同于 Controller ResponseBo…

UML建模圖文詳解教程01——Enterprise Architect的安裝與使用

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Enterprise Architect概述 官方網站&#xff1a;https://www.sparxsystems.cn/products/ea/&#xff1b;圖示如下&#xff1a; Enterprise Architect是一個全功能的、基于…

B033-Servlet交互 JSP

目錄 ServletServlet的三大職責跳轉&#xff1a;請求轉發和重定向請求轉發重定向匯總請求轉發與重定向的區別用請求轉發和重定向完善登錄 JSP第一個JSP概述注釋設置創建JSP文件默認字符編碼集 JSP的java代碼書寫JSP的原理三大指令九大內置對象改造動態web工程進行示例內置對象名…

2.HTML入門

目錄 一.HTML介紹 二.HTML常用標簽 2.1 標題標簽 2.2 段落標簽 2.3 超鏈接標簽 2.4 圖片標簽 2.5 換行與空格 2.6 布局標簽 2.7 列表標簽 2.8 表單標簽 一.HTML介紹 定義&#xff1a;將內容顯示在網頁&#xff0c;用來描述網頁的一種語言&#xff0c;負責網頁的架構…

Adiponectin 脂聯素 ; T-cadherin +exosome

T-cadherin Adiponectin exosome T-cadherin Adiponectin exosome 代謝綜合征中 外泌體、脂肪組織 和 脂聯素 的器官間通訊-2019.pdf

【華為OD】C卷真題 100%通過:數組去重和排序 C/C++實現

華為OD 數組去重和排序 C源碼實現&#xff0c;100%通過 目錄 題目描述&#xff1a; 示例1 代碼實現&#xff1a; 題目描述&#xff1a; 給定一個亂序的數組&#xff0c;刪除所有的重復元素&#xff0c;使得每個元素只出現一次&#xff0c;并且按照出現的次數從高到低進行排…

C語言之字符串函數

C語言之字符串函數 文章目錄 C語言之字符串函數1. strlen的使用和模擬實現1.1 strlen的使用1.2 strlen的模擬實現 2. strcpy的使用和模擬實現2.1 strcpy的使用2.2 strncpy的使用2.3 strcpy的模擬實現 3. strcat的使用和模擬實現3.1 strcat的使用3.2 strncat3.3 strcat的模擬實現…

C語言--每日五道選擇題--Day23

第一題 1. 已知int i1, j2;&#xff0c;則表達式ij的值為&#xff08; &#xff09; A&#xff1a;1 B&#xff1a;2 C&#xff1a;3 D&#xff1a;4 答案及解析 C 本題考查的是前置和后置的優先級&#xff0c;后置的優先級是高于前置的&#xff0c;所以這個表達式就可以轉變為…