1.Git簡介
什么是git
git是一個(gè)開源的分布式版本控制系統(tǒng),可以有效眠冈、高速地處理從很小到非常大的項(xiàng)目版本管理滚秩。
git的工作流圖:
命令如下:
- clone(克轮殉啤): 從遠(yuǎn)程倉庫中克隆代碼到本地倉庫
- checkout (檢出):從本地倉庫中檢出一個(gè)倉庫分支然后進(jìn)行修訂
- add(添加): 在提交前先將代碼提交到暫存區(qū)
- commit(提交): 提交到本地倉庫。本地倉庫中保存修改的各個(gè)歷史版本
- fetch (抓取) : 從遠(yuǎn)程庫飞几,抓取到本地倉庫砚哆,不進(jìn)行任何的合并動(dòng)作,一般操作比較少屑墨。
- pull (拉取) : 從遠(yuǎn)程庫拉到本地庫躁锁,自動(dòng)進(jìn)行合并(merge),然后放到到工作區(qū)卵史,相當(dāng)于
fetch+merge - push(推送) : 修改完成后战转,需要和團(tuán)隊(duì)成員共享代碼時(shí),將代碼推送到遠(yuǎn)程倉庫
2.Git的配置
設(shè)置用戶配置
git config --global user.name “名字”
git config --global user.email “郵箱”
查看配置信息
git config --global user.name
git config --global user.email
設(shè)置常用配置指令的別名(可選)
打開gitBash以躯,輸入touch ~/.bashrc
在 .bashrc 文件中輸入如下內(nèi)容:
#用于輸出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于輸出當(dāng)前目錄所有文件及基本信息
alias ll='ls -al'
執(zhí)行 source ~/.bashrc
解決GitBash亂碼問題
- 打開GitBash執(zhí)行下面命令
git config --global core.quotepath false
- ${git_home}/etc/bash.bashrc 文件最后加入下面兩行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
3.基礎(chǔ)操作指令:
1.獲取本地倉庫:
新建一個(gè)目錄 在該目錄下打卡git bash 然后執(zhí)行git init
2.本地倉庫的狀態(tài):
git add
(工作區(qū)->暫存區(qū))git commit
(暫存區(qū)->倉庫)查看的修改的狀態(tài)(暫存區(qū)槐秧、工作區(qū)):
git status
添加工作區(qū)到暫存區(qū)(add):
命令形式:
git add 單個(gè)文件名|通配符
將所有修改加入暫存區(qū):
git add .
提交暫存區(qū)到本地倉庫(commit):
作用:提交暫存區(qū)內(nèi)容到本地倉庫的當(dāng)前分支
命令形式:
git commit -m '注釋內(nèi)容'
查看提交日志(log)
命令形式:
git log [option]
options:
--all 顯示所有分支
--pretty=oneline 將提交信息顯示為一行
--abbrev-commit 使得輸出的commitId更簡短
--graph 以圖的形式顯示
設(shè)置別名后直接使用
git-log
即可版本切換:
git reset commitID --hard
git reflog
這個(gè)指令可以看到已經(jīng)刪除的提交記錄添加文件至忽略列表:
在工作目錄中創(chuàng)建一個(gè)名為 .gitignore 的文件(文件名稱固定),列出要忽略的文件模式忧设。
4.分支
幾乎所有的版本控制系統(tǒng)都以某種形式支持分支刁标。 使用分支意味著你可以把你的工作從開發(fā)主線上分離開來進(jìn)行重大的Bug修改、開發(fā)新的功能址晕,以免影響開發(fā)主線膀懈。
git branch
查看本地分支
git branch 分支名
添加新的分支
git checkout 分支名
切換分支
git checkout -b 分支名
切換同時(shí)創(chuàng)建一個(gè)分支
git merge 分支名
分支合并
git branch -d 分支名
做檢查的刪除分支
git branch -D 分支名
強(qiáng)制的刪除分支
解決沖突:
當(dāng)兩個(gè)分支上對文件的修改可能會(huì)存在沖突,例如同時(shí)修改了同一個(gè)文件的同一行谨垃,這時(shí)就需要手動(dòng)解
決沖突启搂,解決沖突步驟如下:
- 處理文件中沖突的地方
- 將解決完沖突的文件加入暫存區(qū)(add)
- 提交到倉庫(commit)
在開發(fā)中硼控,一般有如下分支使用原則與流程:
- master (生產(chǎn)) 分支
線上分支,主分支胳赌,中小規(guī)模項(xiàng)目作為線上運(yùn)行的應(yīng)用對應(yīng)的分支淀歇; - develop(開發(fā))分支
是從master創(chuàng)建的分支,一般作為開發(fā)部門的主要開發(fā)分支匈织,如果沒有其他并行開發(fā)不同期上線
要求,都可以在此版本進(jìn)行開發(fā)牡直,階段開發(fā)完成后缀匕,需要是合并到master分支,準(zhǔn)備上線。 - feature/xxxx分支
從develop創(chuàng)建的分支碰逸,一般是同期并行開發(fā)乡小,但不同期上線時(shí)創(chuàng)建的分支,分支上的研發(fā)任務(wù)完
成后合并到develop分支饵史。 - hotfix/xxxx分支满钟,
從master派生的分支,一般作為線上bug修復(fù)使用胳喷,修復(fù)完成后需要合并到master湃番、test、 - develop分支吭露。
還有一些其他分支吠撮,在此不再詳述,例如test分支(用于代碼測試)讲竿、pre分支(預(yù)上線分支)等
等泥兰。
5.Git倉庫
常用的托管服務(wù)[遠(yuǎn)程倉庫]:
github、馬云题禀、gitlab
Gitee操作流程:
1.登錄gitee
2.新建倉庫
3.選擇ssh 即可得到遠(yuǎn)程倉庫的地址
4.配置SSH公鑰:
-
ssh-keygen -t rsa
不斷回車 -
cat ~/.ssh/id_rsa.pub
獲取公鑰
在gitee的安全設(shè)置中加入獲取的公鑰
驗(yàn)證是否配置成功ssh -T git@gitee.com
5.操作遠(yuǎn)程倉庫
此操作是先初始化本地庫鞋诗,然后與已創(chuàng)建的遠(yuǎn)程庫進(jìn)行對接。
命令:git remote add <遠(yuǎn)端名稱> <倉庫路徑>
遠(yuǎn)端名稱迈嘹,默認(rèn)是origin削彬,取決于遠(yuǎn)端服務(wù)器設(shè)置
倉庫路徑,從遠(yuǎn)端服務(wù)器獲取此URL
eg: git remote add origin git@gitee.com:bythere/git_test.git
- 查看遠(yuǎn)程倉庫:
git remote
- 推送到遠(yuǎn)程倉庫
命令:git push [-f] [--set-upstream] [遠(yuǎn)端名稱 [本地分支名][:遠(yuǎn)端分支名] ]
如果遠(yuǎn)程分支名和本地分支名稱相同秀仲,則可以只寫本地分支
git push origin master
-f 表示強(qiáng)制覆蓋
--set-upstream 推送到遠(yuǎn)端的同時(shí)并且建立起和遠(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
//三步即可直接使用git push
git push origin master
git push --set-upstream origin master
git push
查看關(guān)聯(lián)關(guān)系我們可以使用
git branch -vv
從遠(yuǎn)程倉庫克隆
如果已經(jīng)有一個(gè)遠(yuǎn)端倉庫酌心,我們可以直接clone到本地。
命令:git clone <倉庫路徑> [本地目錄]
本地目錄可以省略挑豌,會(huì)自動(dòng)生成一個(gè)目錄抓取
命令:git fetch [remote name] [branch name]
抓取指令就是將倉庫里的更新都抓取到本地倉庫安券,不會(huì)進(jìn)行合并拉取
命令:git pull [remote name] [branch name]
拉取指令就是將遠(yuǎn)端倉庫的修改拉到本地倉庫并自動(dòng)進(jìn)行合并墩崩,等同于fetch+merge
如果不指定遠(yuǎn)端名稱和分支名,則抓取所有并更新當(dāng)前分支侯勉。