版本控制系统概述 git

Git基本概述

Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。

Git安装配置

#安装Git
yum install -y git #配置用户信息,用户名称和电子邮件地址,每次 Git提交时都会引用这两条信息,说明是谁提交了更新;
git config --global user.name "onelpc"
git config --global user.email "614257760@qq.com"
git config --global color.ui true #配置颜色,非必须 #会生成一个配置文件
[root@gitlab ~]# cat ~/.gitconfig
[user]
name = onelpc
email = 614257760@qq.com
[color]
ui = true

Git基本命令

   add       #添加文件内容至索引
bisect #通过二分查找定位引入 bug 的变更
branch #列出、创建或删除分支
checkout #检出一个分支或路径到工作区
clone #克隆一个版本库到一个新目录
commit #记录变更到版本库
diff #显示提交之间、提交和工作区之间等的差异
fetch #从另外一个版本库下载对象和引用
grep #输出和模式匹配的行
init #创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log #显示提交日志
merge #合并两个或更多开发历史
mv #移动或重命名一个文件、目录或符号链接
pull #获取并合并另外的版本库或一个本地分支
push #更新远程引用和相关的对象
rebase #本地提交转移至更新后的上游分支中
reset #重置当前HEAD到指定状态
rm #从工作区和索引中删除文件
show #显示各种类型的对象
status #显示工作区状态
tag #创建、列出、删除或校验一个GPG签名的 tag 对象

Git基本操作

创建git本地仓库

#创建本地工作目录
mkdir /demo
cd /demo/ #初始化为git工作目录
git init

提交数据

#提交文件到缓存区,
git add file1
git add . //点(.)代表当前目录下所有文件 #提交文件到本地仓库
git commit -m "添加file1" #当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改(-a参数不会造成新文件被提交,只能修改)
git commit -a -m "修改了xxx等x个文件"

移动数据

git mv file1 file4  #修改文件名称
git commit -m 'change file name' #提交

对比数据

#本地文件与缓冲区文件对比
git diff file1 #缓冲区文件与仓库文件对比
git diff --cached file1

撤销修改的文件

#提交到缓冲的区文件撤回
git reset HEAD filename #未add到缓冲区的文件撤回
git checkout filename

查看版本与回退

#查看现在版本
git log --oneline
git reset --hard 942bdf3 #查看所有历史版本
git reflog --oneline
git reset --hard 942bdf3

Git分支管理

#增加一个新分支
git branch dev01 #切换分支
git checkout dev01 #查看当前分支情况/所在分支(*代表当前所在)
git branch #切回主分支
git checkout master #在主分支合并dev01分支
git merge dev01 -m '注释' #删除dev01分支
git branch -d dev01

Git标签管理

#给当前版本打标签
git tag v1.2 #删除标签
git tag -d v1.2 #给任意版本打标签
git tag -a v1.0 -m '优化了1111 修复bug' a119962 #查看代码标签信息,(-n,显示tag信息)
git tag -n

Git远程仓库

将远程仓库与本地仓库关联

gitee创建一个仓库

生成公钥文件

[root@gitlab ~/demo]# ssh-keygen
[root@gitlab ~/demo]# cat /root/.ssh/id_rsa.pub
>>将公钥内容复制

将公钥添加到gitee

按照提示操作

提交一个文件至远程仓库

工作区:   touch file5
暂存区: git add .
本地仓库: git commit -m "new file file5"
远程仓库: git push origin master

Gitlab仓库

Gitlab介绍

gitlab是一个开源仓库,社区版ce,企业版ee.(基于git基础上开发)

gitlab 部署

#下载gitlab
[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm #安装gitlab 依赖
[root@gitlab ~]# yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
#安装gitlab
[root@gitlab ~]# yum localinstall -y gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm #配置gitlab
1.备份gitlab配置文件
[root@gitlab ~]# cp -v /etc/gitlab/{gitlab.rb,gitlab.rb_bak}
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
2.修改gitlab访问的url
external_url 'http://gitlab.oldxu.com'
3.关闭一些没有用程序
prometheus['enable'] = false
prometheus_monitoring['enable'] = false
4.配置邮箱
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "614257760@qq.com" # 发件邮箱
gitlab_rails['gitlab_email_display_name'] = 'OneLpc' # 发件人显示名称
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "614257760@qq.com" #发件人邮箱账户
gitlab_rails['smtp_password'] = "qweasdzxc" #发件人邮箱客户端授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true #初始化gitlab
[root@gitlab ~]# gitlab-ctl reconfigure #启动 gitlab
[root@gitlab ~]# gitlab-ctl start 浏览器访问,设置密码

Gitlab汉化

汉化包下载地址:https://gitlab.com/xhang/gitlab

#停止gitlab
[root@gitlab ~]# gitlab-ctl stop #备份原文件
[root@gitlab ~]# \cp -rp /opt/gitlab/embedded/service/gitlab-rails{,.bak_$(date +%F)} #替换语言包
[root@gitlab ~]# tar xf gitlab-12-0-stable-zh.tar.gz
[root@gitlab ~]# \cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/ #重新加载gitlab
[root@gitlab ~]# gitlab-ctl reconfigure #启动gitlab
[root@gitlab ~]# gitlab-ctl start #访问gitlab网站设置语句
选择右上角--->setttings---》Preferences -->Language

Gitlab备份

#手动备份
[root@gitlab-ce ~]# gitlab-rake gitlab:backup:create
>>默认的备份目录:`/var/opt/gitlab/backups`目录下tar的压缩包 #修改gitlab备份目录
[root@gitlab-ce ~]# vim /etc/gitlab/gitlab.rb
...
gitlab_rails['backup_path'] = "/data/gitlab/backups" #控制备份后的产物放在哪里
gitlab_rails['backup_keep_time'] = 604800 #保留多久的数据
...
[root@gitlab-ce ~]# gitlab-ctl reconfigure

Gitlab 数据恢复

# 停止相关数据连接服务
[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq # 从1576659867_2019_12_18_12.3.5编号备份中恢复
[root@gitlab-ce ~]# gitlab-rake gitlab:backup:restore BACKUP=1576659867_2019_12_18_12.3.5 # 启动Gitlab
[root@gitlab-ce ~]# gitlab-ctl start

Gitlab迁移

迁移如同备份与恢复的步骤一样, 只需要将老服务器备份文件拷贝到新服务器上

需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同.

Gitlab升级

关闭 gitlab 服务

[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq
[root@gitlab-ce ~]# gitlab-ctl stop nginx

备份gitlab 数据

[root@gitlab-ce ~]# gitlab-rake gitlab:backup:create

安装新版本的rpm包

//直接安装
[root@gitlab-ce ~]# yum install gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm //报错.
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]' //解决方法:
[root@gitlab-ce ~]# chmod 2770 /var/opt/gitlab/git-data/repositories

启动gitlab

[root@gitlab-ce ~]# gitlab-ctl reconfigure
[root@gitlab-ce ~]# gitlab-ctl restart
[root@gitlab-ce ~]# head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 12.3.0

Gitlab更改默认Nginx

最新文章

  1. Lesson 15 Good news
  2. JAVA中I/O流
  3. shell问题(转)
  4. winform.布局
  5. C++11中async中future用法(一)
  6. HDU 1394 Minimum Inversion Number(线段树的单点更新)
  7. Nagios监控memcached
  8. svn检出maven工程到eclipse里面,部署到tomcat的步骤
  9. mongodb更新数据
  10. Java基础---GUI
  11. 彻底理解线程同步与同步代码块synchronized
  12. Android中代码运行指定的Apk
  13. JAVA篇<一> 继承extends(已转移到JAVA总结篇)
  14. HelloWorld带我入门JAVA(一)
  15. chrome:禁用缓存
  16. Java并发编程基础-线程安全问题及JMM(volatile)
  17. Treiber Stack介绍
  18. freeRTOS中文实用教程2--队列
  19. 【Java】 剑指offer(45) 把数组排成最小的数
  20. 23.Mysql应用优化

热门文章

  1. rancher部署kubernets集群
  2. AX 2012 Computed column IIF语句使用
  3. Wampserver图标黄色解决
  4. C# 练习题 将一个正整数分解质因数
  5. navicat连接mysql出现2059
  6. Matlab观察者模式
  7. 【开发笔记】- 转义html特殊字符
  8. node.js数据库操作
  9. SpringCloud之服务注册与发现Eureka+客户端Feign
  10. POSIX多线程之创建线程pthread_create && 线程清理pthread_cleanup