gitlab常用命令
文章目录
- 1.运维管理
- 2.服务控制命令
- 3.日志相关
- 4.Gitlab服务构成
- 5.主要配置文件目录
- 6.重设管理员或指定用户密码
- 7. 配置gitlab访问方式为https
- 8.备份
- 9.恢复
- 10.远程仓库相关命令
- 11.分支(branch)操作相关命令
- 12.版本(tag)操作相关命令
- 13.子模块(submodule)相关操作命令
- 14.忽略一些文件、文件夹不提交
- 15.Git常用命令汇总
1.运维管理
功能 | 命令 |
查看版本 | cat /opt/gitlab/embedded/service/gitlab-rails/VERSION |
实时查看日志 | gitlab-ctl tail |
数据库关系升级 | gitlab-rake db:migrate |
清理redis缓存 | gitlab-rake cache:clear |
升级GitLab-ce 版本 | yum update gitlab-ce |
升级PostgreSQL最新版本 | gitlab-ctl pg-upgrade |
2.服务控制命令
启动/停止/重启所有 gitlab 组件: | gitlab-ctl start/stop/restart |
启动指定模块组件: | gitlab-ctl start redis/postgresql/gitlab-workhorse/logrotate/nginx/sidekiq/unicorn |
停止指定模块组件: | gitlab-ctl stop 模块名 |
查看服务状态 | gitlab-ctl status |
生成配置并启动服务 | gitlab-ctl reconfigure |
3.日志相关
功能 | 命令 |
实时查看所有日志 | gitlab-ctl tail |
实时各个模块日志 | gitlab-ctl tail redis/postgresql/gitlab-workhorse/logrotate/nginx/sidekiq/unicorn |
4.Gitlab服务构成
GitLab由主要由以下服务构成,他们共同承担了Gitlab的运作需要
服务 | 功能 |
nginx: | 静态web服务器 |
gitlab-shell: | 用于处理Git命令和修改authorized keys列表 |
gitlab-workhorse: | 轻量级的反向代理服务器 |
logrotate: | 日志文件管理工具 |
postgresql: | 数据库 |
redis: | 缓存数据库 |
sidekiq: | 用于在后台执行队列任务(异步执行) |
unicorn: | HTTP服务,GitLab Rails应用是托管在这个服务器上面的。 |
5.主要配置文件目录
目录 | 地址 |
主配置文件: | /etc/gitlab/gitlab.rb |
文档根目录: | /opt/gitlab |
默认存储库位置: | /var/opt/gitlab/git-data/repositories |
Nginx配置文件: | /var/opt/gitlab/nginx/conf/gitlab-http.conf |
Postgresql数据目录: | /var/opt/gitlab/postgresql/data |
6.重设管理员或指定用户密码
[root@test bin]# gitlab-rails console production
-------------------------------------------------------------------------------------
GitLab: 11.10.4 (62c464651d2)
GitLab Shell: 9.0.0
PostgreSQL: 9.6.11
-------------------------------------------------------------------------------------
Loading production environment (Rails 5.0.7.2)
irb(main):001:0> user = User.where(id:1).first
=> #<User id:1 @root>
irb(main):002:0> user.password = 'qwer1234'
=> "qwer1234"
irb(main):003:0> user.password_confirmation = 'qwer1234'
=> "qwer1234"
irb(main):004:0> user.save
Enqueued ActionMailer::DeliveryJob (Job ID: 4752a4a4-4e85-4e8b-9f27-72788abfe97c) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", #<GlobalID:0x00007f519e7501d8 @uri=#<URI::GID gid://gitlab/User/1>>
=> true
irb(main):005:0> exit
使用smtp来发送邮件通知
vim /etc/gitlab/gitlab.rb
gitlab_rails['smtp_address'] = "smtp.yourdomain.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxx"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_domain'] = "smtp.yourdomain.com"
gitlab_rails['smtp_authentication'] = 'plain'
gitlab_rails['smtp_enable_starttls_auto'] = true
7. 配置gitlab访问方式为https
# 创建ssl证书存放目录
mkdir -p /etc/gitlab/ssl
chmod 0700 /etc/gitlab/ssl
# 上传证书,修改证书访问权限
chmod 600 /etc/gitlab/ssl/gitlab.xxx.com.crt
# 修改住配置,支持ssl访问
vim /etc/gitlab/gitlab.rb
external_url "[https://gitlab.bjwf125.com] (https://gitlab.bjwf125.com)"
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.xxx.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.xxx.com.key"
# 重启
gitlab-ctl reconfigure
# 开启防火墙
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewal-cmd reload
8.备份
1.备份默认目录是/var/opt/gitlab/backups
gitlab-rake gitlab:backup:create
2.修改默认本分目录,vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_path'] = '/data/backups'
9.恢复
gitlab-rake gitlab:backup:restore BACKUP=serail_number_date
10.远程仓库相关命令
#检出仓库:
git clone git://github.com/jquery/jquery.git
#查看远程仓库:
git remote -v
#添加远程仓库:
git remote add [name] [url]
#删除远程仓库:
git remote rm [name]
#修改远程仓库:
git remote set-url --push [name] [newUrl]
#拉取远程仓库:
git pull [remoteName] [localBranchName]
#推送远程仓库:
git push [remoteName] [localBranchName]
#提交本地test分支作为远程的master分支
git push origin test:master
#提交本地test分支作为远程的test分支
git push origin test:test
11.分支(branch)操作相关命令
#查看本地分支:
git branch
#查看远程分支:
git branch -r
#创建本地分支:
git branch [name] ----注意新分支创建后不会自动切换为当前分支
#切换分支:
git checkout [name]
#创建新分支并立即切换到新分支:
git checkout -b [name]
#删除分支:
git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
#合并分支:
git merge [name] ----将名称为[name]的分支与当前分支合并
#创建远程分支(本地分支push到远程):
git push origin [name]
#删除远程分支:
git push origin :heads/[name] or gitpush origin :[name]
创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)**
git symbolic-ref HEAD refs/heads/[name]
rm .git/index
git clean -fdx
12.版本(tag)操作相关命令
#查看版本:
git tag
#创建版本:
git tag [name]
#删除版本:
git tag -d [name]
#查看远程版本:
git tag -r
#创建远程版本(本地版本push到远程):
git push origin [name]
#删除远程版本:
git push origin :refs/tags/[name]
#合并远程仓库的tag到本地:
git pull origin --tags
#上传本地tag到远程仓库:
git push origin --tags
#创建带注释的tag:
git tag -a [name] -m 'yourMessage'
13.子模块(submodule)相关操作命令
添加子模块:$ git submodule add [url] [path]
如:$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模块:$ git submodule init ----只在首次检出仓库时运行一次就行
更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下
删除子模块:(分4步走哦)
1) $ git rm --cached [path]
2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
3) 编辑“ .git/config”文件,将子模块的相关配置节点删除掉
4) 手动删除子模块残留的目录
14.忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如下:
# Maven
target/
../target
target/*
*.class
*.ser
*.ec
# IntelliJ Idea
.idea/
out/
*.ipr
*.iws
*.iml
# Eclipse
.classpath
.project
.settings/
.metadata/
# OS X
.DS_Store
15.Git常用命令汇总
命令 | 功能 |
git branch | 查看本地所有分支 |
git status | 查看当前状态 |
git commit | 提交 |
git branch -a | 查看所有的分支 |
git branch -r | 查看本地所有分支 |
git commit -am “init” | 提交并且加注释 |
git push origin master | 将文件给推到服务器上 |
git remote show origin | 显示远程库origin里的资源 |
git push origin master:hb-dev | 将本地库与服务器上的库进行关联 |
git checkout --track origin/dev | 切换到远程dev分支 |
git branch -D master develop | 删除本地库develop |
git checkout -b dev | 建立一个新的本地分支dev |
git merge origin/dev | 将分支dev与当前分支进行合并 |
git checkout dev | 切换到本地dev分支 |
git remote show | 查看远程库 |
git rm 文件名(包括路径) | 从git中删除指定文件 |
git clone git://github.com/schacon/grit.git | 从服务器上将代码给拉下来 |
git config --list | 看所有用户 |
git ls-files | 看已经被提交的 |
git rm [file name] | 删除一个文件 |
git commit -a | 提交当前repos的所有的改变 |
git add [file name] | 添加一个文件到git index |
git commit -v | 当你用-v参数的时候可以看commit的差异 |
git commit -m “This is the message describing the commit” | 添加commit信息 |
git commit -a | -a是代表add,把所有的change加到git index里然后再commit |
git commit -a | -v 一般提交命令 |
git log | 看你commit的日志 |
git diff | 查看尚未暂存的更新 |
git rm a.a | 移除文件(从暂存区和工作区中删除) |
git rm --cached a.a | 移除文件(只从暂存区中删除) |
git commit -m “remove” | 移除文件(从Git中删除) |
git rm -f a.a | 强行移除修改后文件(从暂存区和工作区中删除) |
git diff --cached | 或 $ git diff --staged 查看尚未提交的更新 |
git stash push | 将文件给push到一个临时空间中 |
git stash pop | 将文件从临时空间pop下来 |
git push origin master | 将本地项目给提交到服务器中 |
git pull | 本地与服务器端同步 |
git push (远程仓库名) (分支名) | 将本地分支推送到服务器上去。 |
git fetch | 相当于是从远程获取最新版本到本地,不会自动merge |
git commit -a -m “log_message” | (-a是提交所有改动,-m是加入log信息) 本地修改同步至服务器端 : |
git branch branch_0.1 master | 从主分支master创建branch_0.1分支 |
git branch -m branch_0.1 branch_1.0 | 将branch_0.1重命名为branch_1.0 |
git checkout branch_1.0/master | 切换到branch_1.0/master分支 |