分布式版本控制系統(tǒng):優(yōu)點(diǎn)離線使用、分支管理
1 基本用法
1 安裝與配置
yum install git
git config --global user.name "wuzuquan"
git config --global user.email "403621433@qq.com"
git config --global color.ui true
git config http.sslVerify "false" 解除文件上傳限制
2、創(chuàng)建倉庫
mkdir -p git/test
cd git/test
git init:初始化,目錄下多了個(gè).git目錄
注意事項(xiàng):版本控制只能跟著文本文件的改動(dòng);如果沒有歷史遺留問題,統(tǒng)一使用UTF-8編碼;不要使用windows記事本
3、基本使用
git add -A 添加所有修改,包括新增
git commit -m "message" 提交到本地倉庫
git status 顯示當(dāng)前倉庫status
git diff readme.md 顯示修改內(nèi)容
4、版本回退
git log --pretty=oneline 顯示所有版本日志
HEAD表示當(dāng)前版本 HEAD ^ HEAD ^^ HEAD ~100
git reset --hard commitid 版本回退
git reflog 顯示所有命令記錄
head指向當(dāng)前分支
5、工作區(qū) 版本庫
stage 暫存區(qū),master為自動(dòng)創(chuàng)建的第一個(gè)分支
add命令是把修改添加到暫存區(qū),可以多次add
commit命令是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支
6、撤銷修改
git checkout -- readme.md #撤銷工作區(qū)的修改,撤銷回到版本庫一樣,一鍵還原
如果已經(jīng)添加到暫存區(qū),又做了修改,現(xiàn)在撤銷修改就回到添加到暫存區(qū)后的狀態(tài)
注意事項(xiàng):一定要加 -- ,不然就到另一個(gè)分支了
git reset 可以把暫存區(qū)的內(nèi)容撤銷,重新回到工作區(qū)
git reset HEAD readme.md
二者配合起來用
場景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- file
。
場景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,分兩步,第一步用命令git reset HEAD <file>
,就回到了場景1,第二步按場景1操作。
2 遠(yuǎn)程倉庫
1、推到遠(yuǎn)程庫
git remote rm origin
git remote add origin git@server-name:path/repo-name.git
git push -u origin master
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
2、從遠(yuǎn)程庫 克隆
$ git clone git@github.com:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.
3 分支管理
git checkout -b dev # 創(chuàng)建并切換到dev分支
git branch #查看當(dāng)前分支
git add -A
git commit -m "dev branch test"
git checkout master # 切換到master分支
git merge dev #將dev分支內(nèi)容合并到當(dāng)前分支master
git branch -d dev # 刪除dev分支
1、如何解決分支沖突
合并后提示沖突,git status命令查看哪些文件沖突
vim 修改沖突的文件
git add -A
git commit
git log --graph --pretty=oneline --abbrev-commit #查看分支合并情況
2、分支管理策略
master分支是非常穩(wěn)定的,僅用于發(fā)布新版本,平時(shí)不能再上面干活
在dev分支干活,每個(gè)人可以有自己的分支
合并分支時(shí),加上--no-ff
參數(shù)就可以用普通模式合并,合并后的歷史有分支,能看出來曾經(jīng)做過合并,而fast forward
合并就看不出來曾經(jīng)做過合并
4 標(biāo)簽管理
git tag v1.0 默認(rèn)打在當(dāng)前分支最新的commit上
git tag 查看所有tag
git tag -d v1.0 刪除標(biāo)簽
git show v1.0 查看tag 信息
git tag -a v0.8 -m "version0.8 released" 6f9ea49
git push origin v0.8 推送tag到遠(yuǎn)程倉庫
git push origin :refs/tags/v0.8 刪除遠(yuǎn)程倉庫tag
git push origin --tags 推送所有
5 個(gè)性化配置
在根目錄下建立.gitignore文件,提交到git,過濾掉不需要提交的文件類型
6 搭建git服務(wù)器
yum install autoconf
yum install zlib
yum install zlib-devel
yum remove git 刪除舊版本git
wget https://github.com/git/git/archive/v2.18.0.tar.gz
tar -vxf git-2.18.0.tar.gz
make configure
./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv
sudo make install install-doc install-html
sudo vim /etc/profile
在最后一行添加
export PATH=/usr/local/git/bin:$PATH
保存后使其立即生效
source /etc/profile
git --version
adduser testgit # 創(chuàng)建git賬戶
passwd testgit
vim /etc/ssh/sshd_config
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys
禁止testgit賬戶shell登錄:
vim /etc/passwd
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
su testgit
mkdir .ssh
touch .ssh/authorized_keys
git init --bare test.git# 創(chuàng)建一個(gè)裸倉庫
在客戶端創(chuàng)建SSH密鑰并上傳
ssh-keygen -t rsa -C "403621433@qq.com"
該命令會(huì)產(chǎn)生兩個(gè)文件: id_rsa對應(yīng)私鑰,id_rsa.pub對應(yīng)公鑰
將id_rsa.pub中的內(nèi)容拷貝到服務(wù)器的authorized_keys文件
git init
git remote rm origin
git remote add origin testgit3@172.18.245.163:/home/testgit3/test.git
git push -u origin master
git remote -v #查看遠(yuǎn)程倉庫信息
git push origin dev # 推送dev分支
git pull origin dev #拉分支
git branch --set-upstream-to=origin/dev dev #將遠(yuǎn)程分支與本地分支連接起來
git rebase
7、centos7搭建gitlab服務(wù)器
1. 安裝依賴軟件
yum -y install policycoreutils openssh-server openssh-clients postfix
2.設(shè)置postfix開機(jī)自啟,并啟動(dòng),postfix支持gitlab發(fā)信功能
systemctl enable postfix && systemctl start postfix
3、下載gitlab安裝包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
yum install policycoreutils-python
rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
4、修改gitlab配置文件制定服務(wù)器ip和自定義端口
vim /etc/gitlab/gitlab.rb
ps:注意這里設(shè)置的端口不能被占用,默認(rèn)是8080端口,如果8080已經(jīng)使用,請自定義其它端口,并在防火墻設(shè)置開放相對應(yīng)得端口
5、啟動(dòng)gitlab
gitlab-ctl reconfigure
gitlab-ctl restart
netstat -lnp|grep 80 查看端口占用情況
ps 1328 查看進(jìn)程詳情
6、訪問gitlab頁面
初始賬戶: root 密碼: 5iveL!fe
第一次進(jìn)來修改密碼
7、發(fā)信設(shè)置
vim /etc/gitlab/gitlab.rb
修改后執(zhí)行g(shù)itlab-ctl reconfigure
測試郵件是否生效
gitlab-rails console
Notify.test_email('wuzuquan2@xiamenair.com', '郵件標(biāo)題', '郵件正文').deliver_now
在卸載gitlab然后再次安裝執(zhí)行sudo gitlab-ctl reconfigure的時(shí)候往往會(huì)出現(xiàn):ruby_block[supervise_redis_sleep] action run,會(huì)一直卡無法往下進(jìn)行!
解決方案:
1、按住CTRL+C強(qiáng)制結(jié)束;
2、運(yùn)行:sudo systemctl restart gitlab-runsvdir;
3、再次執(zhí)行:sudo gitlab-ctl reconfigure
8、設(shè)置sshkeys
settings->ssh keys ,添加ssh 公鑰