目录
1.认识
who why when
a)svn的问题
push/pull要联网
如果服务器的硬盘坏了怎么办?
b)git与svn的区别
svn是集中式,统一中心管理,每个版本只记录变化的部分
git是分布式,去中心化,每个人都会一份(分布式账本概念)保证完整性,git每次更新的时候会记录全部文件,有变化的记录变化,没变化的记录引用。
分布式账本概念:每个人都有一本账本,支持本地记账,你的账目被人也可以看到,使用场景:比如我们捐的钱都是给红十字会,红十字在进行分发,我们看不到最终流向,但是如果使用了分布式账本,整个流程就透明啦
2.安装
a)官网 https://git-scm.com/
git config –-global user.name ‘xx’
git config –-global user.email ‘xx’
b)ssh key生成与配置
ssh-keygen -t rsa -C '123456@qq.com'
c)配置多个ssh key
使用场景,当你两个git仓库使用不同key时使用
# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile C:\Users\Administrator\.ssh\gitlab_id-rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile C:\Users\Administrator\.ssh\github_id-rsa
3.git常用命令
a)git status 没事执行一项,它会告诉你当前要做什么
b)git clone git@xxx.com 从远端克隆一个工程到本地
c)把本地项目推送到远端
方式1:
git init 初始化
git remote add origin git@xxx.git 与远端建立连接
git add .
git commit -m 'init data'
git push -u origin master 推送
方式2:
git clone git@xxx.git 从远端导入
再把工程拷贝进去,执行add,commit,push等操作
d)版本回滚
git reset --hard { 要回滚的那个commitId} 本地版本回滚
git push -f origin master 强制推送
e) add/commit fetch/pull/push
git本地仓库执行逻辑流程
创建一个文件后文件是处于工作目录,当add之后,文件就处于工作区(工作区不是目录,是说你在进行一个操作后,文件处于哪个地方),commit之后文件就正式进入git目录
f)checkout
切换新分支git checkout -b dev;git checkout master
撤销更改 checkout . 恢复所有(有点号)
撤销单个文件更改 checkout fileName
g)merge/rebase
merge 分支合并概念
rebase 一条线概念 v3先把v4抓取下来,然后再合并生成v34~(流程上是一条线,比较清爽)
h)tag
操作方式,一般从git操作界面上新建tag
i)alias 别名,可是设置组合键,提高效率
git config --global alias.ac '!git add -A && git commit -m' //add与commit合并
j)其他
git config --list 查看配置
git 命令 --help 查看命令帮助
4.git目录
hooks:执行某个操作时预处理
log:操作记录
refs:有变化文件的记录变化,没变化的记录引用
HEAD:当前分支指向
5.git工作流
dev分支:所有的改动都在开发分支,开发完在对应合并到对应的分支,10个人开发不同功能则10个分支
test分支:该分支给开发与测试人员测试用,并且预防有人误操作分支,使用push -f强制覆盖更新
release分支:测试完毕后,合并到release分支进行最终测试,为什么不用test分支呢,因为test分支比较乱,测试完合并到master上线
mater:该分支不允许修改,只允许合并进来,合并之前记录tag
使用场景:多人团队开发可用,如团队人数较少可精简
6.gitlibs安装
https://bitnami.com/stack/gitlab/virtual-machine
开源地址 https://github.com/gitlabhq/gitlabhq
下载地址 https://about.gitlab.com/downloads/#centos7
硬件要求:安装gitlibs的服务器建议需要4g内存
a)安装命令
sudo yum install curl openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
b)postfix安装,如果没有邮件可以先不安装
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
c)install
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
sudo gitlab-ctl reconfigure
d)其他
访问:直接访问安装服务器的ip即可,遇到502的时候不着急,再等一会,出现登录页面的时候代表成功
重启: sudo gitlab-ctl restart
7.git hooks
Client side 客户端,比如在commit前做一些检查,冲突检查等
Server side 服务端,比如在提交的时候自动触发jekins,发布项目