后端工程师之路(4)GIT工具的使用与介绍
完整博文地址
- 由于CSDN的圖片導(dǎo)入機(jī)制的問題,導(dǎo)致在本地編寫的md文檔中的圖片無法上傳到CSDN上,因此我把博文push到了gitee上,以下是地址:請點擊:我的博文地址
1. 概述
1.1 開發(fā)使用場景
- 備份
- 代碼還原
- 協(xié)同開發(fā)
- 追溯代碼的編寫人和先寫時間
1.2 版本控制器的方式
- 集中式版本控制工具(SVN,CSV)
- 集中式版本控制工具,版本存放在中央服務(wù)器中,team里每個人工作時從中央服務(wù)器下載代碼,必須聯(lián)網(wǎng)才能工作,局域網(wǎng)或者互聯(lián)網(wǎng),個人修改后提交到中央版本庫
- 分布式版本控制工具(GIT)
- 分布式版本控制系統(tǒng)沒有“中央服務(wù)器”,每個人的電腦上都是一個完整的版本庫,這樣工作的時候,就不需要聯(lián)網(wǎng)了,因為版本庫就在自己的電腦上,多人協(xié)作只需要各自的修改推送給對方,就能看到彼此的修改了
1.3 GIT的工作流程圖
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-bR0vvKt0-1657512048320)(./image/GIT.png)]
- clone(克隆):從遠(yuǎn)程倉庫中克隆代碼到本地倉庫
- checkout(檢出):從本地倉庫中檢出一個倉庫分支進(jìn)行修訂
- add(添加):在提交前先將代碼提交到暫存區(qū)
- commit(提交):提交到本地倉庫,本地倉庫中保存修改的各個歷史版本
- fetch(抓取):從遠(yuǎn)程庫,抓取到本地倉庫,不進(jìn)行任何的合并動作,一般操作比較少
- pull(拉取):從遠(yuǎn)程倉庫拉取到本地,自動進(jìn)行合并,然后放到工作區(qū),相當(dāng)于fetch+merge
- push(推送):修改完成后,需要和團(tuán)隊成員共享代碼時,將代碼推送到遠(yuǎn)程倉庫
2. GIT基本使用
2.1 GIT-GUI&GIT-Bash
- GIT GUI:GIT提供的圖形界面工具
- Git Bash:Git提供的命令行工具
- 當(dāng)安裝了GIT之后首先要做的就是要設(shè)置用戶名稱和email地址。
2.2 設(shè)置個人信息
- 設(shè)置用戶名稱:git config --global user.name 你的名字
- 設(shè)置用戶郵箱:git config --global user.email 你的郵箱
2.3 可以為常用指令設(shè)置別名
# 用于輸出git提交日志alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'# 用于輸出當(dāng)前目錄所有文件及基本信息alias ll='ls -al'2.4 基礎(chǔ)指令操作
- 執(zhí)行g(shù)it init,輸入ll,觀察到目錄下創(chuàng)建.git文件后,即證明創(chuàng)建git目錄成功
- Git工作目錄下對于文件的修改(增加、刪除、更新)會存在幾個狀態(tài),這些修改的狀態(tài)會隨著我們執(zhí)行GIT的命令而發(fā)生變化
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-DdMl8Ivu-1657512048322)(./image/Git狀態(tài)樹.png)]
-
如何控制這些狀態(tài)?
- git add:工作區(qū)->暫存區(qū)
- git commit:暫存區(qū)->本地倉庫
- 通過輸入git status來查看當(dāng)前倉庫文件的管理狀態(tài)
- 通過輸入git commit "提交名稱-版本號"來確認(rèn)提交,將暫存區(qū)內(nèi)的緩存區(qū)提交到倉庫
-
查看提交日志
- git log [option]
- opition
- –all 顯示所有分支
- –pretty=online 將提交信息顯示為一行
- –abbrev-commit 使得輸出的commitId更簡短
- –graph 以圖的形式顯示
-
版本回退
- git reset --hard commitID
-
查看已經(jīng)刪除的記錄:這個指令可以看到已經(jīng)提交刪除的提交記錄,或者查看之前在GIT里邊的操作
- git reflog
-
忽略某個文件
- 新建管理文件touch .gitignore
- 在.gitignore中輸入文件名來讓GIT識別你不想提交的文件
3. GIT分支
-
幾乎所有的版本控制系統(tǒng)都以某種形式支持分支,使用分支意味著你可以把你的工作從開發(fā)主線上分離開來進(jìn)行重大BUG修改、開發(fā)新的功能,以免影響主線
-
查看本地分支
- git branch
- 我們在工作區(qū)只能為一個分區(qū)服務(wù)
-
新建分支
- git branch dev01
- 使用git-long可以查看各分支內(nèi)部的提交信息
- 新建時分支處于哪個分支就是基于哪個分支創(chuàng)建的
- 比如說我現(xiàn)在master帶了個*,那么我就是基于master進(jìn)行分支創(chuàng)建的
-
切換分支
- git checkout 分支名
- 還支持直接切換到一個不存在的分支(GIT會幫我們創(chuàng)建并且切換):git check -b 分支名
-
合并分支
- 一個分支上的提交可以合并到另一個分支
- git merge 分支名稱
-
刪除分支
- git branch -d b:刪除分支時,需要做各種檢查
- git branch -D b:刪除分支時,強(qiáng)制刪除
4. *如何解決沖突
- 當(dāng)兩個分支上對文件的修改可能會存在沖突,例如同時修改了同一個文件同一行,這時候就需要手動解決沖突,解決沖突的步驟如下
- 處理文件中沖突的地方
- 將解決完沖突的文件加入暫存區(qū)(add)
- 提交到倉庫
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-hDIwjzVK-1657512048323)(./image/手動解決沖突.png)]
5.*開發(fā)中分支使用原則與流程
- 在開發(fā)中,一般有如下分支使用原則和流程
- master(生產(chǎn))分支:線上分支,主分支,中小規(guī)模項目作為線上運(yùn)行的應(yīng)用對應(yīng)的分支
- develop(開發(fā))分支:是由master創(chuàng)建而來的分支,一般作為開發(fā)部門的主要開發(fā)分支,如果沒有其他并行開發(fā)不同期上線要求,都可以在此版本進(jìn)行開發(fā),階段開發(fā)完成后,需要合并到master分支,準(zhǔn)備上線
- feature/xxx分支:由develop創(chuàng)建的分支,一般是同期并行開發(fā),但不同期上線創(chuàng)建的分支,分支上研發(fā)任務(wù)完成后合并到develop分支
- hotfix/xxx分支:從master派生出來的分支,一般作為線上bug修復(fù)使用,修復(fù)完成后需要合并到master、test、develop分支
- 還有一些其他分支,例如test(用于代碼測試的分支)、pre分支(預(yù)上線分支)
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Nla902X5-1657512048324)(./image/分支使用概述.png)]
6. GIT遠(yuǎn)程倉庫使用
6.1 新建倉庫
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-S7oukBs2-1657512048324)(./image/新建git-01.png)]
- 注意下面三個勾選的地方先不要勾選,否則會出問題,因為我們本地已經(jīng)有項目了,做到一半推上去,因此如果初始化倉庫的話會產(chǎn)生沖突問題的
6.2 配置SSH公鑰
- 首先本地生成一個ssh公鑰:ssh-keygen -t rsa,輸入之后一路回車
- 然后獲取剛才生成的公鑰cat ~/.ssh/id_rsa.pub,然后會得到一串以ssh-rsa開頭的東西,我們直接全部復(fù)制下來
- 由于SSH隱私問題這里就不放圖了,個人設(shè)置->SSH公鑰->然后把你的標(biāo)題名和剛才得到的公鑰名稱給復(fù)制過去,確定即可
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-3lIyzyPA-1657512048325)(./image/使用git-01.png)]
- 完成之后輸入 ssh -T git@gitee.com進(jìn)行校驗,如果出現(xiàn)Hi 你的用戶名! You've successfully authenticated, but GITEE.COM does not provide shell access.就證明配置SSH公鑰完成了
6.3 遠(yuǎn)程倉庫添加、推送
- 接著我們將本地倉庫推到遠(yuǎn)程倉庫
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-l3UG7pCZ-1657512048326)(./image/使用git-02.png)]
- 選擇SSH,我們點擊復(fù)制一份過來
- 接著在GIT-BASH中操作
- 關(guān)于推送指令git push [-f] [--set-upstream] [遠(yuǎn)端名稱[本地分支名][:遠(yuǎn)端分支名]]
- 如果遠(yuǎn)程分支名和本地分支名一致,則可以只寫本地分支
- git push origin master
- --set-upstream推送到遠(yuǎn)端的同時并且建立起和遠(yuǎn)端分支的關(guān)聯(lián)關(guān)系
- git push --set-upstream origin master
- 如果當(dāng)前分支已經(jīng)和遠(yuǎn)端分支關(guān)聯(lián),則可以省略分支名和遠(yuǎn)端名
- git push:將master分支推送到已關(guān)聯(lián)的遠(yuǎn)端分支
- -f則表示強(qiáng)制覆蓋
- 如果遠(yuǎn)程分支名和本地分支名一致,則可以只寫本地分支
6.4 從遠(yuǎn)程倉庫中克隆
- 如果已經(jīng)有一個遠(yuǎn)端倉庫,我們可以直接clone到本地
- git clone <倉庫名稱> [本地目錄]
- 本地目錄是可以省略的,會自動生成一個目錄
6.5 從遠(yuǎn)程倉庫中抓取和拉取
- 遠(yuǎn)程分支和本地的分支一樣,我們可以進(jìn)行merge操作,只是需要先把遠(yuǎn)程倉庫的更新都下載到本地,然后再進(jìn)行操作
- 抓取,指令:git fetch [remote name] [branch name]
- 抓取指令就是將倉庫的更新都抓取到本地,而不會進(jìn)行合并
- 如果不指定遠(yuǎn)端名稱和分支名,則抓取所有分支
- 拉取,指令:git pull [remote name] [branch name]
- 拉取指令就是將遠(yuǎn)端倉庫的修改拉到本地并自動進(jìn)行合并,等同與fetch/merge
- 如果不指定遠(yuǎn)端名稱和分支名,則抓取所有并更新當(dāng)前分支
6.6 *解決合并沖突
- 在一段時間內(nèi),A、B用戶修改了同一個文件,而且修改了同一行位置的代碼,此時會發(fā)生合并沖突
- A用戶在本地修改代碼后優(yōu)先推送到遠(yuǎn)程倉庫,此時B用戶在本地修訂代碼,提交到本地倉庫后,也需要推送到遠(yuǎn)程倉庫,此時B用戶晚于A用戶,所以就需要先拉取遠(yuǎn)程倉庫的提交,經(jīng)過合并后才能推送到遠(yuǎn)端分支
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-b91ugPgt-1657512048326)(./image/使用 git-03.png)]
- 在B用戶拉取代碼時,因為A、B用戶同一段時間內(nèi)修改了同一文件的相同位置的代碼,故會發(fā)生合并沖突
- 遠(yuǎn)程分支也是分支,所以合并時沖突的解決方式也和解決本地分支沖突時相同。
7.在IDEA中操作GIT
7.1 配置GIT路徑
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-jmsrTymC-1657512048327)(./image/IDEA-01.png)]
- 修改GIT可執(zhí)行文件路徑即可
7.2 配置.gitignore
# Compiled class file *.class# Log file *.log# BlueJ files *.ctxt# Mobile Tools for Java (J2ME) .mtj.tmp/# Package Files # *.jar *.war *.nar *.ear *.zip *.tar.gz *.rar# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid*7.3 新建GIT倉庫
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-g7Ha5f9l-1657512048327)(./image/IDEA-02.png)]
- 然后選擇項目所在目錄即可
7.4 提交到本地倉庫
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-KDlrqyRo-1657512048328)(./image/IDEA-03.png)]
- 點擊綠色的箭頭,然后全選我們要管理的文件,由于已經(jīng)有了.gitingnore文件,git會自動幫我們過濾掉我們不想管理的文件,因此放心提交就好了,然后填入提交消息,點擊提交即可
7.5 推送到遠(yuǎn)程倉庫
- 如下圖,填入URL即可
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-eLDUCoGY-1657512048328)(./image/IDEA-04.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-g2Gydwpf-1657512048329)(./image/IDEA-05.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-JWMD7OEF-1657512048329)(./image/IDEA-06.png)]
這樣就是推送成功了
7.6 常用操作入口
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-n6KWGEaL-1657512048330)(./image/IDEA-07.png)]
7.7 解決同時開發(fā)的沖突
- 首先先點pull,更新項目,將沖突的代碼解決后,再推送
7.8 使用規(guī)范
- 切換分支前先提交本地的修改
- 代碼及時提交,提交過了就不會丟
- 遇到任何問題都不要刪除文件目錄
2Gydwpf-1657512048329)]
[外鏈圖片轉(zhuǎn)存中…(img-JWMD7OEF-1657512048329)]
這樣就是推送成功了
總結(jié)
以上是生活随笔為你收集整理的后端工程师之路(4)GIT工具的使用与介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iview 表单提交
- 下一篇: JDK、Tomcat安装步骤