141.【Git版本控制】

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/163903.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163903.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163903.shtml

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

相關文章

輕松解決rpm軟件包的依賴問題 yum download ,rpm和deb不同系列

centos rpm系列的 為它往往有很多依賴項目。比如&#xff0c;我們來查看一下net-tools的依賴項有哪些&#xff1a; yum deplist net-tools 推薦使用以下幾種方法&#xff1a; 1.repotrack 我這里也以上期講到的Mariadb為例演示&#xff0c;以下操作需要在有網絡的環境下進…

國內企業出海首選的免費開源訂單管理系統(OMS)解決方案

用開源智造Odoo訂單管理系統 (OMS) 解決方案實現"訂單到收款"流程自動化 開源智造Odoo 訂單管理軟件功能消除了手動操作瓶頸&#xff0c;可防止出錯&#xff0c;還建立了從銷售報價到訂單履行的順暢工作流來確保及時開票和付款&#xff0c;從而幫助您理順訂單處理過程…

Python將多個視頻幀組合成.mp4視頻

已經有很多文章描述了如何將視頻拆分成視頻幀&#xff0c;例如&#xff1a;https://blog.csdn.net/WYKB_Mr_Q/article/details/124929081 那我們如何將很多視頻幀重新組合成視頻呢&#xff1f; 這里我們主要用到了 OpenCV 庫中的 VideoWriter 類。 OpenCV種的 cv2.VideoWrit…

jdbc批量插入或更新數據

mybatis可以批量插入或更新數據&#xff0c;不過mybatis底層也是基于jdbc來實現的&#xff0c;如何使用jdbc批量操作數據&#xff1f;本文給出demo。 /*** JDBC分批次批量插入* * throws IOException*/public static void testJDBCBatchInsertUser() throws IOException {Conne…

工作流引擎的架構設計主要考慮以下方面

工作流引擎的架構設計主要考慮以下方面&#xff0c;以馳騁工作流引擎為例來說明。 高度抽象和封裝&#xff1a;為了適應各種業務場景&#xff0c;工作流引擎應具備高度抽象和封裝的特性&#xff0c;以便統一處理各流程。靈活配置&#xff1a;工作流引擎應支持靈活的配置&#…

Linux之實現簡易的shell

1.打印提示符并獲取命令行 我們在使用shell的時候&#xff0c;發現我們在輸入命令是&#xff0c;前面會有&#xff1a;有用戶名&#xff0c;版本&#xff0c;當前路徑等信息&#xff0c;這里我們可以用環境變量去獲取: 1 #include <stdio.h>2 #include <stdlib.h>…

python如何快速查找到想要的文檔

字多不看版&#xff0c;直接體驗 待補充 演示代碼 # -*- coding:UTF-8 -*-# region 導入必要的依賴包 import os import subprocess from enum import Enum模塊名 pyperclip try:import pyperclip # 需要安裝 pyperclip 模塊&#xff0c;以支持粘貼板操作 except ImportEr…

PTA-成績轉換

本題要求編寫程序將一個百分制成績轉換為五分制成績。轉換規則&#xff1a; 大于等于90分為A&#xff1b;小于90且大于等于80為B&#xff1b;小于80且大于等于70為C&#xff1b;小于70且大于等于60為D&#xff1b;小于60為E。 輸入格式: 輸入在一行中給出一個整數的百分制成…

羊大師教你如何科學控制體重,輕松瘦下來

羊大師教你如何科學控制體重&#xff0c;輕松瘦下來 我們都知道&#xff0c;控制體重對于保持健康和美麗至關重要。然而&#xff0c;許多人在減肥的道路上走得波折重重&#xff0c;常常陷入挫敗和不知所措的境地。那么&#xff0c;如何科學控制體重&#xff0c;輕松瘦下來呢&a…

項目經理只需要有PMP證書就行?

就目前而言&#xff0c;大部分人對于項目經理的認識還停留在&#xff1a;有項目管理經驗&#xff0c;有對應的工作年限&#xff0c;有PMP證書。所以絕大多數人都認為只要報考了PMP項目管理&#xff0c;取得PMP證書&#xff0c;即可加入項目經理的圈子&#xff0c;薪資翻倍。 但…

協同過濾與矩陣分解講解(PPT)

總覽 協同過濾算法&#xff0c;就是一種完全依賴用戶和物品之間行為關系的推薦算法。 從字面理解&#xff0c;協同大家的反饋、評價和意見一起對海量的信息進行過濾&#xff0c;從中篩選出用戶可能感興趣的信息。 知識概括 從這幾個方面進行分析。 一、基于用戶的協同過濾 顯示…

6個PPT素材網站,讓你快速做出好看的PPT

找PPT模板一定要收藏好這6個網站&#xff0c;能讓你快速做出好看的PPT&#xff0c;重點十可以免費下載&#xff0c;趕緊收藏&#xff01; 1、菜鳥圖庫 https://www.sucai999.com/search/ppt/0_0_0_1.html?vNTYwNDUx 菜鳥圖庫網有非常豐富的免費素材&#xff0c;像設計類、辦公…

力扣labuladong——一刷day48

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣1602. 找到二叉樹中最近的右側節點二、力扣437. 路徑總和 III三、力扣560. 和為 K 的子數組 前言 二叉樹的遞歸分為「遍歷」和「分解問題」兩種思維模式…

第7章-使用統計方法進行變量有效性測試-7.4.2-多元線性回歸

目錄 多元線性回歸模型 總體回歸函數 樣本回歸函數 線性回歸模型的假定 普通最小二乘法&#xff08;Ordinary Least Squares&#xff0c;OLS&#xff09; 擬合優度指標 F檢驗 回歸系數的t檢驗 Python中構建多元線性回歸模型 數據理解 數據讀取 數據清洗 相關分析 …

想考教師編制專業不對口怎么辦?

很多人在想要步入教師行業時&#xff0c;會遇到一個問題&#xff1a;專業不對口。這種情況可能會讓你感到困惑和沮喪&#xff0c;但不要氣餒&#xff0c;因為有很多方法可以讓你實現自己的夢想。 可以通過提高自己的教育水平和能力來彌補專業不對口的缺陷。你可以通過參加教師資…

品牌小紅書koc投放策略分享,純干貨!

作為中國具有影響力的時尚美妝社交平臺&#xff0c;小紅書與其充滿活力的用戶群體成為品牌尋找優質KOC合作的理想平臺。本文伯樂網絡傳媒將探討品牌如何利用小紅書的KOC投放策略&#xff0c;實現更廣泛的市場覆蓋和更有效的品牌營銷。 一、明確目標受眾與KOC合作需求 在開始策…

containerd Snapshots功能解析

containerd Snapshots功能解析 snapshot是containerd的一個核心功能&#xff0c;用于創建和管理容器的文件系統。 本篇containerd版本為v1.7.9。 本文以 ctr i pull命令為例&#xff0c;分析containerd的snapshot “創建” 相關的功能。 ctr命令 ctr image相關命令的實現在cmd…

《人件》讀書筆記

文章目錄 一、書名和作者二、書籍概覽2.1 主要論點和結構2.2 目標讀者和應用場景 三、核心觀點與主題3.1 管理團隊主題3.2 改善工作環境主題3.3 正確的人主題3.4 團隊項目管理主題 四、亮點與啟發4.1 最有影響的觀點4.2 對個人專業發展的啟示 五、批評與局限性5.1 可能存在爭議…

leetcode (力扣) 97. 交錯字符串(動態規劃)

文章目錄 題目描述思路分析完整代碼 題目描述 給定三個字符串 s1、s2、s3&#xff0c;請你幫忙驗證 s3 是否是由 s1 和 s2 交錯 組成的。 兩個字符串 s 和 t 交錯 的定義與過程如下&#xff0c;其中每個字符串都會被分割成若干 非空 子字符串&#xff1a; s s1 s2 … sn t …

數據庫——查詢連續的月份

一、GP或PGSQL with recursive t(n) as (select date(2023-01-01) union all select n1 from t where n < now()) select to_char(n, yyyy-mm) as ny from t group by ny order by ny 二、Hive select add_months(FROM_UNIXTIME(unix_timestamp(SUBSTR(start_date, 1, 7…