工程化专题-git

============目录===========

1.认识
2.安装
3.git常用命令
4.git目录
5.git工作流
6.gitlibs安装
7.git hooks

============目录===========


1.认识

who why when

asvn的问题

push/pull要联网

如果服务器的硬盘坏了怎么办?

 

bgitsvn的区别

svn是集中式,统一中心管理,每个版本只记录变化的部分

git是分布式,去中心化,每个人都会一份(分布式账本概念)保证完整性,git每次更新的时候会记录全部文件,有变化的记录变化,没变化的记录引用。

分布式账本概念:每个人都有一本账本,支持本地记账,你的账目被人也可以看到,使用场景:比如我们捐的钱都是给红十字会,红十字在进行分发,我们看不到最终流向,但是如果使用了分布式账本,整个流程就透明啦

 

 

2.安装

a)官网 https://git-scm.com/

git config –-global user.name ‘xx’

git config –-global user.email ‘xx’

 

bssh key生成与配置

ssh-keygen -t rsa -C '[email protected]'

 

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常用命令

agit status 没事执行一项,它会告诉你当前要做什么

bgit clone [email protected] 从远端克隆一个工程到本地

c)把本地项目推送到远端

方式1

git init 初始化

git remote add origin [email protected] 与远端建立连接

git add .

git commit -m 'init data'

git push -u origin master 推送

方式2

git clone [email protected] 从远端导入

再把工程拷贝进去,执行addcommitpush等操作

 

d)版本回滚

git reset --hard { 要回滚的那个commitId}  本地版本回滚

git push -f origin master 强制推送

eadd/commit fetch/pull/push   

git本地仓库执行逻辑流程

创建一个文件后文件是处于工作目录,当add之后,文件就处于工作区(工作区不是目录,是说你在进行一个操作后,文件处于哪个地方),commit之后文件就正式进入git目录

 

 

fcheckout

切换新分支git checkout -b devgit checkout master

撤销更改 checkout . 恢复所有(有点号)

撤销单个文件更改 checkout fileName

gmerge/rebase

merge 分支合并概念

rebase 一条线概念 v3先把v4抓取下来,然后再合并生成v34~(流程上是一条线,比较清爽)

 

 

htag

操作方式,一般从git操作界面上新建tag

 

ialias 别名,可是设置组合键,提高效率

git config --global alias.ac '!git add -A && git commit -m'   //addcommit合并

 

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

使用场景:多人团队开发可用,如团队人数较少可精简

 

 

7.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

 

bpostfix安装,如果没有邮件可以先不安装

sudo yum install postfix

sudo systemctl enable postfix

sudo systemctl start postfix

 

cinstall

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

 

6.git hooks

Client side 客户端,比如在commit前做一些检查,冲突检查等

Server side 服务端,比如在提交的时候自动触发jekins,发布项目

 



公众号:左耳代码


猜你喜欢

转载自blog.csdn.net/charjay_lin/article/details/80788182