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
Gitlab服務構成
GitLab由主要由以下服務構成,他們共同承擔了Gitlab的運作需要
nginx: 靜態web服務器
gitlab-shell: 用於處理Git命令和修改authorized keys列表
gitlab-workhorse: 輕量級的反向代理服務器
logrotate:日志文件管理工具
postgresql:數據庫
redis:緩存數據庫
sidekiq:用於在后台執行隊列任務(異步執行)
unicorn:HTTP服務,GitLab Rails應用是托管在這個服務器上面的。
主要配置文件目錄
主配置文件: /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
[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
配置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
gitlab-rake gitlab:backup:create
2.修改默認本分目錄,vim /etc/gitlab/gitlab.rb
gitlab_rails['backup_path'] = '/data/backups'
恢復
gitlab-rake gitlab:backup:restore BACKUP=serail_number_date
遠程倉庫相關命令
#檢出倉庫: 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
分支(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
版本(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'
子模塊(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) 手動刪除子模塊殘留的目錄
忽略一些文件、文件夾不提交
在倉庫根目錄下創建名稱為“.gitignore”的文件,寫入不需要的文件夾名或文件,每個元素占一行即可,如下:
# Maven target/ ../target target/* *.class *.ser *.ec # IntelliJ Idea .idea/ out/ *.ipr *.iws *.iml # Eclipse .classpath .project .settings/ .metadata/ # OS X .DS_Store
Git常用命令匯總
git branch 查看本地所有分支 git status 查看當前狀態 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看本地所有分支 git commit -am "init" 提交並且加注釋 git remote add origin git@192.168.1.119:ndshow git push origin master 將文件給推到服務器上 git remote show origin 顯示遠程庫origin里的資源 git push origin master:develop 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 add . 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 remote add origin git@github.com:username/Hello-World.git git push origin master 將本地項目給提交到服務器中 git pull 本地與服務器端同步 git push (遠程倉庫名) (分支名) 將本地分支推送到服務器上去。 git push origin serverfix:awesomebranch 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分支 du -hs
實例
mkdir WebApp cd WebApp git init touch .gitignore git add .gitignore touch README git add README git commit -m 'first commit' git remote add origin git@git.100credit.cn:application/test.git git push -u origin master