gitlab后期使用

一 怎么把本地代码上传到gitlab上面

1 首先,登录自己的账户,去gitlab上面创建一个项目,会生成

http://192.168.7.18/huningfei/auto.git

2 安装git客户端

然后在你自己的电脑上面安装git客户端,然后进入到相应的目录下,安装shieft并右键打开git bash here

3 提交代码(三种情况)

1 新项目,直接克隆

git clone http://192.168.7.18/huningfei/auto.git
cd auto
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

2 本地已存在的项目,但从来没提交过的
cd existing_folder
git init
git remote add origin http://192.168.7.18/huningfei/auto.git
git add .
git commit -m "Initial commit"
git push -u origin master

3 已存在的项目,已经多次提交过的
已存在的 Git 版本库  这个是已经存在的项目,去提交

cd existing_repo
git remote rename origin old-origin
git remote add origin http://192.168.7.18/huningfei/auto.git
git push -u origin --all
git push -u origin --tags

大致流程介绍:

1  确保有git仓库
2 git status  查看文件状态,看那些是修改的文件(红色显示的)
3 git add . 就是把更改的文件添加到本地git缓存区
4 git commit -m "修复XXbug"   推送修改到本地git库中
5 git push <远程主机名> <远程分支名>  把当前提交到git本地仓库的代码推送到远程主机的某个远程分之上
 git push origin master   你第一次从远端克隆仓库的时候,默认的名字就叫origin, master是分支的名字

上面这些步骤当你在提交代码的时候,每次都需要输入用户名和密码,这样显得比较麻烦,如何不用输入密码。

4 免密码提交

这里我以windows客户端为例,我在windows上面生成一个密钥
ssh-keygen -t rsa -C "huningfei@p2peye.com"
如图所示:

然后会在你用户的家目录下面生成一个.ssh文件夹,其中打开中间.pub结尾的文件,里面是公钥,然后复制到gitlab上面

gitlab粘贴公钥的地方:

二 拉取代码如何免密码

说明:这个根据自身情况而定,我目前是用过这两个方法

1 第一种方式:

进入到用户的家目录下面,然后执行

git config --global user.name "huningfei"
 git config --global user.email "huningfei@p2peye.com"
 git config --global credential.helper store

 然后会出现一个..gitconfig的隐藏文件,如下所示
yx@es-1:~$ cat .gitconfig 
[user]
	name = huningfei
	email = huningfei@p2peye.com
[credential]
	helper = store

之后cd到项目目录,执行git pull命令,会提示输入账号密码。输完这一次以后就不再需要,并且会在用户家目录生成一个.git-credentials文件


yx@es-1:~$ cat .git-credentials 
http://huningfei:Huningfei2018@192.168.7.18
# 里面包含了用户名和密码,还有服务器的ip地址

2 第二种方式

进入项目目录,然后执行git config --global credential.helper store
然后git pull,输入一次密码,以后就不需要在输入了

三 gitlab提示Forbidden

背景:我迁移了gitlab之后,随后多个开发大量的访问,(都是来自同一个ip),然后gitlab打开页面的时候显示的是空白页面,提示Forbidden
在网上查询了原因大部分都是说: Gitlab使用rack_attack做了并发访问的限制。gitlab的rack-attack机制是为了限制某个ip对gitlab进行基本认证失败请求的次数,杜绝恶意的攻击和密码破解等行为,通过限制每个ip每分钟内尝试的基本认证的次数来实现,如果某个ip进行的基本认证失败请求的次数超过这个限制,则这个ip的其他的所有的请求都会返回403.

1 403如何解决

于是我更改了配置文件,如下


打开 /etc/gitlab/gitlab.rb 取消gitlab_rails['rack_attack_git_basic_auth']有关的注释

gitlab_rails['rack_attack_git_basic_auth'] = {
   'enabled' => true,
   'ip_whitelist' => ["127.0.0.1","Gitlab部署的IP地址"],
   'maxretry' => 100,
   'findtime' => 60,
   'bantime' => 60
 }

gitlab-ctl reconfigure
# 配置好后,载入配置

重新加载之后,好像是稍微好了一点,但是过一段时间还是出现403.但是过了一两天,就慢慢的好起来了,我怀疑还是短时间内,同一个ip大量的访问造成的。(这个问题一直还有些疑惑)

2 如何查看被禁ip

查看被禁ip

/opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket keys '*' | grep 'rack::attack'

删除被禁ip

/opt/gitlab/embedded/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket keys '*' | grep 'rack::attack' | xargs /opt/gitlab/embedded
#出现下面提示,删除成功
/bin/redis-cli -s /var/opt/gitlab/redis/redis.socket DEL

四 gitlab设置分支保护

设置分支保护,防止其他人随意push。
详情见 https://www.cnblogs.com/xiuxingzhe/p/11196188.html

原文地址:https://www.cnblogs.com/huningfei/p/12786991.html