GIT版本控制系统
目錄
一.git安裝與介紹
1.git的概述
2.GIT的安裝
二.GIT的運用
1.先進入倉庫文件創(chuàng)建用戶與郵箱
2.寫入數(shù)據(jù)基本命令測試
3.HEAD指針
4.Git分支
5.免密通信
6.git其他操作命令:
7.踩坑瞬間
一.git安裝與介紹
1.git的概述
git是一種開源的分布式的vcs(version control system)版本控制系統(tǒng)。
集中式 SVN
分布式 GIT
關網(wǎng):Gitee - 基于 Git 的代碼托管和研發(fā)協(xié)作平臺
GitHub: Where the world builds software · GitHub
git是服務
服務端:就是提供git倉庫服務供客戶端訪問使用的
客戶端:訪問git倉庫使用數(shù)據(jù)及修改數(shù)據(jù)
所謂的服務端安裝的其實也是git
git 基本概念
--git倉庫:保存所有數(shù)據(jù)的地方
--工作區(qū):從倉庫提取出來的文件,放在磁盤上使用或修改
--暫緩區(qū):保存下次提交文件信息的列表信息也就add之后的列表
2.GIT的安裝
yum源準備
~]# vim /etc/yum.repos.d/CentOS-Base.repo [extras] gpgcheck=1 gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 baseurl=http://mirrors.tencentyun.com/centos/$releasever/extras/$basearch/ name=Qcloud centos extras - $basearch [os] gpgcheck=1 gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 baseurl=http://mirrors.tencentyun.com/centos/$releasever/os/$basearch/ name=Qcloud centos os - $basearch [updates] gpgcheck=1 gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7 enabled=1 baseurl=http://mirrors.tencentyun.com/centos/$releasever/updates/$basearch/ name=Qcloud centos updates - $basearch ? ~]# vim /etc/yum.repos.d/CentOS-Epel.repo [epel] name=EPEL for redhat/centos $releasever - $basearch failovermethod=priority gpgcheck=1 gpgkey=http://mirrors.tencentyun.com/epel/RPM-GPG-KEY-EPEL-7 enabled=1 baseurl=http://mirrors.tencentyun.com/epel/$releasever/$basearch/服務端:
# 騰訊yum或阿里的都可以 ~]# dnf -y install git ? # centos8服務端安裝git # 或7的安裝方法 ~]# yum -y install git ~]# mkdir /var/lib/git ? # 創(chuàng)建git目錄 ~]# git init /var/lib/git/project --bare # 創(chuàng)建空倉庫,用來存儲項目數(shù)據(jù) # --bare 不加這個則倉庫只能看不能寫客戶端:
~]# yum -y install git ? # 客戶端安裝git ~]# git clone 192.168.4.20:/var/lib/git/project # 克隆倉庫二.GIT的運用
1.先進入倉庫文件創(chuàng)建用戶與郵箱
# 使用前先創(chuàng)建用戶 ~]# cd project/ ? # 進入倉庫 ~]# git config --global user.name "abc" ? # 定義客戶端用戶名 ~]# git config --global user.email "abc@abc.com" # 定義客戶端郵箱 ? ~]# ls ./git (管理倉庫文件) ~]# cat ./gitconfig //檢查用戶與郵箱是否創(chuàng)建2.寫入數(shù)據(jù)基本命令測試
~]# echo "abc001" > 001.txt (寫入內(nèi)容測試) ~]# git add . # (當有多個文件的時候可以先指定單個)將倉庫有變化的文件提交到暫存區(qū)(只是通知系統(tǒng)暫時記住【為了永久保存】);可以把點換成指定的日志信息 ? ~]# git commit -m "001" # 提交之前暫存區(qū)的數(shù)據(jù)永久保存到倉庫(小的改變不保存)(-m 定義日志提示信息) ? ~]# git push ? # 將本地倉庫數(shù)據(jù)推送到遠程git倉庫服務器中 # 或者 ~]# git push -u origin master ? ~]# git log ? # 查詢完整日志 ~]# git log --pretty=oneline ? # 精簡日志 ~]# git log --oneline ? # 最精簡日志 ~]# git reflog ? # 本機操作日志 ? ~]# Git status # 查看并告訴下一步操作 ? ## 測試刪除 ~]# rm -rf project/ ~]# git clone 192.168.4.20:/var/lib/git/project ## 注意已經(jīng)導入過一次用戶不需要重復定義,(自動保存在當前加用戶下)可查看 ~]# cat ~/.gitconfig [user]name = keyaoemail = 2023630895@qq.com ~]# git log --oneline # 精簡日志,此時只有一條操作日志 ~]# git reflog ? # 本機操作日志,此時還有刪除前的日志記錄思維導圖
3.HEAD指針
可以將倉庫恢復到過去的狀態(tài)(類似虛擬機快照,只能對本倉庫)
~]# git reflog #查看日志,找到舊數(shù)據(jù)所在時間節(jié)點 ~]# git reset --hard xxxx ? #回到過去,xxxx是時間節(jié)點的記錄 #把需要找回的數(shù)據(jù),從倉庫中拷貝到另外一個目錄 # --hard 強制恢復 ? ~]# git reset --hard xxxx ? #回到現(xiàn)在 #在之前的目錄找回舊數(shù)據(jù) Ls .. #(查看上一次修改的目錄下文件) ls ..4.Git分支
常見的分支規(guī)范如下:
| MASTER分支 | MASTER是主分支,是代碼的核心 |
| DEVELOP分支 | DEVELOP最新開發(fā)成果的分支 |
| RELEASE分支 | 為發(fā)布新產(chǎn)品設置的分支 |
| HOTFIX分支 | 為了修復軟件BUG缺陷的分支 |
| FEATURE分支 | 為開發(fā)新功能設置的分支 |
當項目內(nèi)容比較多時,可以在git中使用分支,不同分支的文件可以互不干擾而不用創(chuàng)建多個倉庫
~]# git branch ? ? ? ? ? ? ? ? ? # 查看分支,*代表目前所在分支 # 如果沒有看到,需要提交一個對象,commit之后才會真正建立master分支,此時才可以建立其它分 ? ~]# git branch hotfix ? ? ? ? ? ? # 創(chuàng)建新分支, ~]# git checkout hotfix ? ? ? ? ? # 切換到新分支 ? ## 注意:此時ls查看本地有master的文件,這是git的特性,在master創(chuàng)建的文檔所有分支都可以看到(項目描述文檔),但分支創(chuàng)建之后master再次修改則就看不到了 ? ~]# echo "hotfix-001" > hotfix001.txt ? # 創(chuàng)建屬于hotfix分支的文件 ~]# git add . ? # 提交到暫存區(qū) ~]# git commit -m "hotfix001" ? ? ? ? ? # 提交到本地倉庫 ~]# git checkout master ? ? ? ? ? ? ? # 切換回默認分支 ? ~]# echo master > master.txt ~]# git add . ~]# git commit -m "master" ~]# git checkout master ~]# git merge hotfix ? ? ? Merge branch 'hotfix' ...... # 合并日志,可寫可不寫 # 將hotfix分支的數(shù)據(jù)與當前分支合并 ~]# ls a.txt hotfix001.txt master.txt # 合并之后在提交一次不然可能會報錯分支中的特殊情況:
如果分別在不同分支,創(chuàng)建同名文件,內(nèi)容不同,再進行合并時,會發(fā)生沖突,此時需要手工修改沖突文件,修改完之后,就可以解決沖突
~]# git merge hotfix ? # 合并分支,失敗,因為兩個分支有同名文件,但內(nèi)容不同CONFLICT (add/add): Merge conflict in test.txtAutomatic merge failed; fix conflicts and then commit the result. ? ~]# vim abc.txt ? # 手動修改文件(看要保存誰),保存退出后即可解決 ~]# git add . ? //提交到暫存區(qū) ~]# git commit -m "abc+" ? //提交到本地倉庫5.免密通信
使用ssh協(xié)議建立連接,實現(xiàn)
~]# ssh-keygen ? # 創(chuàng)建ssh秘鑰 ~]# ssh-copy-id 192.168.4.20 ? # 傳遞秘鑰到4.20 ~]# git clone 192.168.4.20:/var/lib/git/test ? # 克隆不需要密碼 ~]# cd test ? # 進入倉庫 ~]# echo xyz > xyz ? # 創(chuàng)建文件,然后提交 ~]# git add . ~]# git commit -m "xyz" ~]# git push ? # 上傳到服務器也無需密碼 ~]# Git pull (更新下拽最新數(shù)據(jù))6.git其他操作命令:
~]# git remote -v ? # 查看遠程服務器名字與ip(綁定了幾臺,默認兩個是一臺的名字) ~]# git remote add tom 192.168.4.20:/var/lib/git/test ? # 與新服務器關聯(lián),名字叫tom ? ~]# echo test01 > test01.txt ? # 創(chuàng)建測試文件 ~]# git add . ~]# git commit -m "test01" ~]# git push -u origin master ? ? # 指定名為origin的遠程服務器提交數(shù)據(jù)到master分支 ? ~]# git remote remove origin ? # 刪除名為origin的遠程服務器 ? ~]# git remote -v ~]# echo test02 > test02.txt ? # 創(chuàng)建測試文件分支(當有多臺遠程服務器) ? ~]# git remote add origin ~]# 192.168.4.20:/var/lib/git/web ? # 添加名為origin的服務器 ~]# git pull tom master 更新數(shù)據(jù) ~]# git pull web master ? # 從web服務器的master分支下載數(shù)據(jù),如果是克隆命令的話可以復制整個倉庫的數(shù)據(jù),如果是使用pull下載數(shù)據(jù),僅僅會下載服務器有而客戶機沒有的數(shù)據(jù)7.踩坑瞬間
1)制做倉庫時不加--bare報錯與解決
# 客戶端在項目中添加 ~]# vim .git/config ...... [receive]denyCurrentBranch = ignore 2)git push 失敗 # 指定節(jié)點 ~]# git push -u origin master總結
- 上一篇: 配置sudo权限
- 下一篇: 安装GitLab,Jenkins,及自动