代码管理平台git

22.5/22.6 单机上使用git
22.7 简历远程仓库
22.8 克隆远程仓库
22.9 分支管理
22.10 远程分支管理
22.11 标签管理
22.12 git别名
22.13 搭建git服务器
22.14/22.15 安装gitlab
22.16 使用gitlab
22.17 gitlab备份和恢复
 

gitlab修改端口  http://blog.csdn.net/arybd/article/details/54635295
GitLab 修改主机名配置 http://www.mamicode.com/info-detail-1316828.html
第三方邮件:GitLab 使用163邮箱发送邮件 http://blog.csdn.net/liuruiqun/article/details/50000213
server ssh 端口并不是22   http://www.cnblogs.com/limx/p/5709101.html  

GitLab遇到SSH修改了默认端口解决方法    http://www.linuxidc.com/Linux/2017-02/141043.htm  
应该修改  /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
“# If you use non-standard ssh port you need to specify it”
ssh_port: xxxxx
gitlab的钩子相关配置 http://fighter.blog.51cto.com/1318618/1670667

gitlab常用命令  https://www.cnblogs.com/zlw-xf/p/9134274.html

一、单机上使用git

yum install -y git
mkdir /data/gitroot        
cd /data/gitroot
git init //初始化仓库

初始化完成后也会生成.git目录

dc22add05eca4c5d9c1c49e32074c8124e3.jpg

邮件地址和用户名位置

453b16c944ed3a561ba42558902bf9b1d1c.jpg

vim 1.txt //创建一个新文件
git add 1.txt//把1.txt添加到仓库
git commit -m “add 1.txt”   //add完了必须要commit才算真正把文件提交到git仓库里
再次更改1.txt
git status  //查看当前仓库中的状态,比如是否有改动的文件
git diff 1.txt  //可以对比1.txt本次修改了什么内容,相比较仓库里面的版本

59c3c10865bdd0599345314abd23c072329.jpg

当没有需要添加或提交到仓库的文件时的仓库状态

0ee0341ef0b96bc79451051b583bbe458c7.jpg

版本回退

git log     //查看所有提交记录

fb38a2f52a0fe0dde14330a741b97bee3d5.jpg

版本从下往上看(更早的版本在下面)

git log --pretty=oneline //一行显示
git reset --hard fbb2012 //回退版本,其中后面跟的字符串可以是简写
git reflog //查看所有历史版本

572a85200db3357750a5b6281b804b957da.jpg

rm -f 1.txt        //如果不小心删除了1.txt

git checkout -- 1.txt//恢复1.txt , 文件存在代码管理库中

如果1.txt文件修改,add后但没有commit,再想回退到上一次提交的状态,可以使用git reset HEAD 1.txt,可以把add的标记去掉,再执行git checkout -- 1.txt

098c3da7c90aab9eed2fc5812405128ee76.jpg

git rm 2.txt 
git commit -m "rm 2.txt"  在库中删除

401e99030453bbd7c2ee54ecb150d8bd375.jpg

二、建立远程仓库

首先到 https://github.com 注册一个账号,创建自己的git库,点右上角加号->new repository
名字自定义,此处仓库名为test1,选择public  点 create repository
增加秘钥,添加key:右上角点自己头像,选择settings,左侧选择SSH and GPG keys
点New SSH key,把linux机器上的 /root/.ssh/id_rsa.pub内容粘贴到这里

生成公钥:

774fcf1c9d7f6514868f6631ef5be7c9859.jpg

把本地仓库推送到远程仓库:

在本地创建test1目录

可以按照页面中在本地新建目录做设置

git push -u origin master  把本地的test1仓库推送到远程的test1,输入远程git的用户名密码

下一次再推送,就可以直接 git push

5496349173ba70ce78342b409b9a6d108e6.jpg

6c17e3402443fa8e2d5efcc0d9167abb7ee.jpg

回到页面上刷新:

519729489bb338100250b4ee451f2552c77.jpg

三、克隆远程仓库

克隆地址:

c3eeb58367505972a9face520c64aeecc77.jpg

cd /home   把远程的test1库直接克隆到home下
git clone  https://github.com/tobej/test1.git

14c9780d773a1da64c016e8eef081a5882c.jpg

进入到刚刚克隆的目录后,对文件进行修改,在推送到远程仓库后,会在页面显示修改的内容

 

c3546c93e40213003c281a2d3c9d7bdac79.jpg5c70412712cb1638874aa91e2e8ffce2521.jpg

也可以在远程仓库进行文件的修改,修改完成后点击提交即可

git pull    把远程的拉取到本地,此时已经是修改过的文件

d1c3fc966edb6e8c54035b9d39826cf15aa.jpg

四、分支管理

使用分支的原则

对于分支的应用,建议大家以这样的原则来:
master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上。
创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并到master
开发人员应该在dev的基础上再分支成个人分支,个人分支(在自己pc上)里面开发代码,然后合并到dev分支



dev分支合并bob分支的命令是:
git checkout dev   //先切换到dev分支,然后
git merge bob
git branch     //查看分支
git branch tobe      //创建分支,* 在master上,说明现在还在master分支上
git checkout tobe //切换到tobe分支下

5855891448e1f678f7a4b522e7fbc4bdc3c.jpg

此时已经切换到了tobe分支,编辑3.txt,会提交到tobe分支

在切换回master分支

git checkout master     //此时并没有3.txt

801e59120776f0ad6567bfafb2de1c5f68a.jpg

分支的合并:

git checkout master //合并分支之前,先切换到目标分支 
git merge tobe   //把tobe分支合并到master,此时在tobe分支下做的变更,合并到master

edba0f4ebba53d1be7589a96b787bbbadf0.jpg

解决冲突的办法:

如果master分支和tobe分支都对3.txt进行了编辑,当合并时会提示冲突,需要先解决冲突才可以继续合并。
解决冲突的方法是在master分支下,编辑3.txt,把两个分支的内容改为一样的(改为tobe分支里面3.txt的内容)。 然后提交3.txt,再合并tobe分支。
但是这样有一个问题,万一master分支更改的内容是我们想要的呢? 可以编辑3.txt内容,改为想要的,然后提交。切换到tobe分支,然后合并master分支到tobe分支即可(倒着合并)。合并分支有一个原则,那就是要把最新的分支合并到旧的分支。也就是说merge后面跟的分支名字一定是最新的分支。

两个红框中的内容分别代表两个分支中的文件内容,当两个分支中的内容不一致时,无法切换分支

把master分支中的3.txt修改成和tobe分支中的3.txt内容一致,然后添加、提交即可

0344a79258f9bb6fa151674d4e4b3332955.jpg8afeefa955469b57ccf356e812d3a72573a.jpg

git  branch -d tobe //删除分支,需要切换出要删除的分支

如果分支没有合并,删除之前会提示,那就不合并,强制删除
git branch -D tobe

653eeed433608cd1b9d343b023dcf821494.jpg

五、远程分支管理

创建新的分支

a251ace35b07b07092d1313b736a23b91e9.jpg

把之前拉取到本地的test1删除,重新拉取到home下,此时只有一个分支

本地新建的分支如果不推送到远程,对其他人就是不可见的
查看远程分支  git ls-remote origin,可以看到所有分支

126cbd0d2c5820e4939c4e519327b3e80c3.jpg

git clone的时候默认只把master分支克隆下来,如果想把所有分支都克隆下来,需要手动创建,在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称要一致

8f5ceb4e9fa08e5a149982692c912ef71aa.jpg

对于git push分支分两种情况:
当本地分支和远程分支一致时,git push会把所有本地分支的变更一同推送到远程,如果想只推送一个分支,使用git push origin branch-name。
当本地分支比远程分支多,默认git push 只推送本地和远程一致的分支,想要把多出来的本地分支推送到远程时,使用git push origin branch-name  如果推送失败,先用git pull抓取远程的新提交。
本地创建一个dev2分支,此时远程没有dev2,切换到dev2分支下,创建3.txt,此时添加、提交,并git push会提示没有任何修改

git push origin dev2 把本地分支推送到远程

7c5ea7b73afc81228518095ea45537646fa.jpgfddb9ed4e190451bd020a59e17fd32ee261.jpg

推送到远程分支后,刷新页面,切换到dev2下,有3.txt文件

c349239b3e3aad7e437521308e5ea083e14.jpg

六、标签管理

标签类似于快照功能,可以给版本库打一个标签,记录某个时刻库的状态。也可以随时恢复到该状态。

git checkout master         先切到master分支上
git tag v1.0                给master打一个标签v1.0
git show v1.0               查看标签信息
git tag                     可以查看所有的标签
git log --pretty=oneline --abbrev-commit  //先查看历史的commit

27c134fc92e0492098fa2b7ce479f923929.jpg

tag是针对commit来打标签的,所以可以针对历史的commit来打tag

git tag v0.9   //针对历史commit打标签

e931445ab4f87bf8c4f877542075b60096e.jpg

git tag -a v0.1 -m "first tag" 9586cad        可以对标签进行描述

e69a4459cfbedb706d495beae8a86f87cf4.jpg

git tag -d v0.8  //删除标签

d677344b98c95a35ed1da3f7f0e70dd5d51.jpg

git push origin v1.0   //推送指定标签到远程

git push --tag origin   //推送所有标签

638fc4371c2711baa4342664919d5bede57.jpga0b43700948645072f2d09eaae17cd2756f.jpg

如果本地删除了一个标签,远程也想要删除需要这样操作:

git tag -d v0.8    //删除本地标签
git push origin :refs/tags/v0.8   //删除远程标签

38e690a82e4261de81270dc416e05283b82.jpg104cb246feed9b94ba783b9f62ece39b8ad.jpg

七、git别名

git config --global alias.ci commit            commit别名设置为ci
git config --global alias.br  branch            branch别名设置为br

a57bbed98bdba52516e5744f7b0dfb917f9.jpg

acbf4e934c40996f9f2e3bd76616dbb48f3.jpg

查看git所有别名

git config --list |grep alias

49c5760e96207fb5c098777b7ec0f615ea5.jpg

vim /root/.gitconfig    也可以在配置文件中添加,最好使用命令行添加

5587cb16ef7068f161c713de657b5d49c0f.jpg

查询log小技巧:

会自动配置到配置文件中

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

git lg    lg为log别名

84bcb1bbedd87a13ce8182b5bef5cf7a736.jpg

取消别名

git config --global --unset alias.br

915934018023ffd4dc91cbb7ec38d60fc4f.jpg

八、 搭建git服务器

github毕竟是公开的,而私有仓库又得花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。Gitlab是个不错的选择。在介绍它之前,先讲述一下命令行的git服务器,
找一台服务器002作为服务端,001作为客户端

首先要安装git,yum install -y git 
添加git用户,并且设置shell为/usr/bin/git-shell,目的是为了不让git用户远程登陆
useradd -s /usr/bin/git-shell git 
cd /home/git
创建authorized_keys文件,并更改属主、属组和权限,用来存客户端机器上的公钥
mkdir .ssh
touch .ssh/authorized_keys
chown -R git.git .ssh
chmod 600 .ssh/authorized_keys

vim .ssh/authorized_keys        首先要把001客户端上的公钥放到git服务器002上:/home/git/.ssh/authorized_keys文件里

e6439f08bce7578683f874a7d881d99ad95.jpg

在001使用ssh连接

ssh git@192.168.183.33   说明验证成功,不允许直接登录

52f94860df905d2a429f053212d0b989208.jpg

在服务端002创建git的仓库

mkdir /data/gitroot
cd /data/gitroot
git init --bare sample.git     // 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾
chown -R git.git sample.git        设置属主属组

以上操作是在git服务器上做的,平时git服务器是不需要开发人员登录修改代码的,它仅仅是充当着一个服务器的角色,就像github一样,平时操作都是在我们自己的pc上做的

b5d06e2be06a2fb44175401d05e303552ee.jpg

在客户端上(自己pc)克隆远程仓库:

git clone git@192.168.183.33:/data/gitroot/sample.git   后面的目录为002上的git目录

直接把本地分支推送到远程会出现下图的报错,因为仓库是裸仓库,所以也没有分支,需要在push的时候把分支加上,下次再push时,直接push即可
git push origin master

此时就可以在当前目录下生成一个sample的目录,这个就是我们克隆的远程仓库了。进入到这里面,可以开发一些代码,然后push到远程。

f2707257f7808d585cbca56da01699a632c.jpg

在tmp目录下在克隆一次,进行测试,此时在上一个目录创建并push的文件都会克隆下来

95e510835bc48f76ee7a5b87b076a348dee.jpg

在/tmp/sample/目录下编辑1.txt 添加并提交、git push

回到/root/sample/
git pull    会把新的拉取下来

a1259b9b7f69e3a108ef7741f21cfdbdc03.jpg

九、安装gitlab

gitlab官网 https://about.gitlab.com/gitlab-com/
官方安装文档 https://about.gitlab.com/installation/?version=ce#centos-7     (ce/ee)  ee为企业版,ce社区版
要求服务器内存不少于2g

 

vim /etc/yum.repos.d/gitlab.repo//加入如下内容

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1

安装gitlab之前,最好把nginx停掉,还有redis,因为配置gitlab时,也会启动一个nginx和其他的服务 
/etc/init.d/nginx stop
chkconfig nginx off

yum install -y gitlab-ce
gitlab-ctl reconfigure    自动配置gitlab,并且会把所有gitlab有关的服务启动起来



ps aux |grep git
netstat -lnpt  //查看监听端口


gitlab-ctl stop/restart/start/status

76e990f1a7797a36dcdae072dc401fa0aba.jpgef6b16ffbacca1f92dee59392314986e02d.jpg

浏览器访问gitlab,输入ip即可
默认管理员root,无密码,会直接让更改密码,更改完成后会跳转到登录界面,登录即可

7db1bbe7d3392fccd2b20948194dea31e99.jpg

十、使用gitlab

ls /var/opt/gitlab/nginx/conf/nginx.conf   主配置文件

ls /var/opt/gitlab/nginx/conf/gitlab-http.conf   gitlab相关的配置文件,可以更改监听端口及server_name

通过更改server_name实现用域名访问

d842a361615e5e76df23ce4912affd0c17e.jpg

登录到gitlab页面后,先创建组,在创建项目(Project)

项目创建完成后,提示:

需要添加Key即公钥

添加Key,点击头像->settings->SSH Keys

08225a9a92e4f6cf08a08a1ea100b3e60ce.jpg

e15e233c9095f0e81550c612a282cd24f71.jpg

创建用户:

点击如下图所示图标

2dad8edf77ef584104c98656ced63e3eede.jpg

可以创建项目,用户,组

c17aa70867476988ee3120d1f87812d3ca0.jpg

十一、gitlab备份和恢复

gitlab备份:

gitlab-rake gitlab:backup:create        gitlab备份,备份所有的项目,组,用户,备份和恢复要版本一致

备份目录在/var/opt/gitlab/backups

cf22ca2d1c3f9fa7bd318d252cb5eb00d18.jpg

gitlab 恢复:  

先停服务:     gitlab-ctl stop unicorn;gitlab-ctl stop sidekiq    停掉这两个服务在那时不做变更
gitlab-rake gitlab:backup:restore BACKUP=xxxxx (这里是一个编号,即备份文件的前缀)
再启动服务 gitlab-ctl start

转载于:https://my.oschina.net/u/4093217/blog/3077476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值