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