美文网首页
docker 搭建gogsgit及Git常规使用

docker 搭建gogsgit及Git常规使用

作者: liurongming | 来源:发表于2023-04-06 16:52 被阅读0次

    docker 搭建gogsgit

    docker pull gogs/gogs
    [root@itdev7001 ~]# docker pull gogs/gogs
    Using default tag: latest
    Trying to pull repository docker.io/gogs/gogs ...
    latest: Pulling from docker.io/gogs/gogs
    ddad3d7c1e96: Pull complete
    98bfa715d475: Pull complete
    41833e5090f7: Pull complete
    0eaa2e62e844: Pull complete
    099dafadbd3c: Pull complete
    a65e863c4361: Pull complete
    6f047877c3f9: Pull complete
    Digest: sha256:1c42233010268ef058cd98ca42e4940d20ff2276f01a7db83f9114b1dd8e17ed
    Status: Downloaded newer image for docker.io/gogs/gogs:latest
    

    查看镜像

    [root@iep-02 ~]# docker images
    REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
    docker.io/redis       latest              08502081bff6        2 weeks ago         105 MB
    docker.io/gogs/gogs   0.12                4075c4a42f12        9 months ago        92.6 MB
    [root@iep-02 ~]#
    
    安装镜像
    docker run -d --name=gogs --restart=always -p 2222:22 -p 9030:3000 -v /usr/local/docker/gogs:/data gogs/gogs
    
    打卡端口
    firewall-cmd --zone=public --add-port=9030/tcp --permanent  
    firewall-cmd --zone=public --add-port=2222/tcp --permanent  
    firewall-cmd --reload
    

    查看所有容器

    # docker ps -a 
    
    [root@iep-02 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                    NAMES
    630aa3447f9b        gogs/gogs:0.12      "/app/gogs/docker/..."   2 minutes ago       Exited (2) 2 minutes ago                            gogs
    aa1c2b3a996a        redis               "docker-entrypoint..."   22 hours ago        Up 22 hours                0.0.0.0:6379->6379/tcp   redis
    [root@iep-02 ~]#
    
    查看日志
    [root@iep-02 ~]#  docker logs --tail 0 -f 8fdadbd21cf44f6f68f7ea4cae039550de8d3f7577b42c60e57401cb8b4d1931
    usermod: no changes
    Jul  9 09:52:16 syslogd started: BusyBox v1.31.1
    Jul  9 09:52:16 sshd[32]: Server listening on :: port 22.
    Jul  9 09:52:16 sshd[32]: Server listening on 0.0.0.0 port 22.
    2021/07/09 09:52:16 [ WARN] Custom config "/data/gogs/conf/app.ini" not found. Ignore this warning if you're running for the first time
    2021/07/09 09:52:16 [TRACE] Log mode: Console (Trace)
    2021/07/09 09:52:16 [ INFO] Gogs 0.13.0+dev
    2021/07/09 09:52:16 [TRACE] Work directory: /app/gogs
    2021/07/09 09:52:16 [TRACE] Custom path: /data/gogs
    2021/07/09 09:52:16 [TRACE] Custom config: /data/gogs/conf/app.ini
    2021/07/09 09:52:16 [TRACE] Log path: /app/gogs/log
    2021/07/09 09:52:16 [TRACE] Build time: 2021-05-19 07:16:50 UTC
    2021/07/09 09:52:16 [TRACE] Build commit: ba8be9489e6d959fa9005fc7d38bf62562580d23
    2021/07/09 09:52:16 [ INFO] Run mode: Development
    2021/07/09 09:52:16 [ INFO] Listen on http://0.0.0.0:3000
    
    创建Mysql用户
    create database if not exists gogs default charset utf8 collate utf8_general_ci;
    CREATE USER 'gogs'@'%' IDENTIFIED BY 'yourpassword';
    
    # 登录授权
    [root@itdev9903 ~]# mysql -uroot -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 200
    Server version: 5.7.30 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> show grants for 'gogs'@'%';
    +----------------------------------+
    | Grants for gogs@%                |
    +----------------------------------+
    | GRANT USAGE ON *.* TO 'gogs'@'%' |
    +----------------------------------+
    1 row in set (0.00 sec)
    
    mysql> grant insert,select,update,delete,create,drop,alter,index on gogs.* to 'gogs'@'%';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql>FLUSH PRIVILEGES;
    

    回收所有权限

    revoke all privileges on gogs.* from 'gogs'@'%';
    show grants for 'gogs'@'%';
    

    附录:

    1. git 常用命令

    # 配置
    git config --global user.name "Your Name Comes Here"
    git config --global user.email you@yourdomain.example.com
    
    # 查看
    git --version
    git status  
    
    # 初始仓库
    git init
    
    # 添加至暂存区
    git add ./file (将需要提交的提交到暂存区)
    
    # 提交本地仓库
    git commit - m 'feat: 注释' (提交到本地)
    git commit --amend
    
    # 快捷提交
    git commit -am 'feat: 注释'
    
    # 直接回退
    git log --oneline
    git checkout filename
    
    # 从暂存区回退
    git reset HEAD filename
    git checkout -- filename
    
    # 从本地仓回退
    git log --oneline
    git reset --hard XXX
    
    # 从本地仓重置回退
    git reflog
    git reset --hard XXX
    
    # 查看分支
    git branch 查看本地所有分支
    git branch -a 查看所有的分支
    git branch -r 查看远程所有分支
    
    # 创建分支
    git branch 分支名称
    
    # 切换分支
    git checkout 分支名称
    
    # 创建并切换
    git checkout -b 分支名称
    
    # 合并分支
    git merge 目标分支 -m "描述"
    git rebase 目标分支
    
    # 将本地的Test分支推送到远端的master分支
    git push origin Test:master
    
    # 删除分支
    git branch -d 分支
    # 删除远程分支
    git push origin --delete 分支    
    
    # 查看tag
    git tag
    
    # 查看详情
    git show tag名称
    
    # 创建tag
    git tag -a "v1.0" -m "描述"
    git tag -a "v1.0" 标识码 -m "描述"
    
    # 删除tag
    git tag -d 标签名
    
    # 查看远程仓库
    git remote [-v]
    
    # 删除关联
    git remote remove origin
    
    # 推送tag
    git push origin --tags
    git push tag名称
    
    # 删除远程tag
    git push origin --delete tag名称
    
    # 获取远程tag
    git fetch origin tag V1.2
    
    # 拉取远程代码
    git pull <远程主机名> <远程分支名>:<本地分支名>
    
    # 一、开发分支(develop)上的代码达到上线的标准后,要合并到 master 分支
    git checkout develop
    git pull
    git checkout master
    git merge develop
    git push -u origin master
    
    # 二、当master代码改动了,需要更新开发分支(develop)上的代码
    git checkout master 
    git pull 
    git checkout develop
    git merge master 
    git push -u origin develop
    

    更多参考请查阅:常用 Git 命令清单 - 阮一峰的网络日志 (ruanyifeng.com)

    2 git 提交规范

    • git add 时候尽量不使用git add . 这样很容易把一些不必要的文件给提交上去了。

    • git commit -m 备注规范: git commit -m "<font color='red'>注释前缀:备注内容</font>"

    注释前缀 含义 样例
    feat 新功能(feature) git commit -m "feat:导入主干"
    fix 修补 bug git commit -m "fix: 修复bug"
    docs 文档(documentation) git commit -m "docs:添加文档"
    style 格式(不影响代码运行的变动) git commit -m "style:添加样式"
    refactor 重构(即不是新增功能,也不是修改 bug 的代码变动) git commit -m "refactor:重构代码"
    test 增加测试 git commit -m "test:添加测试代码"
    chore 构建过程或辅助工具的变动 git commit -m "chore:修改构建顺序"
    • git push 时候不允许 直接提交主分支 这样可能会污染主分支。

    3. Git-SVN

    yum -y install git-svn

    # 下载一个 SVN 项目和它的整个代码历史,并初始化为 Git 代码库
    $ git svn clone -s [repository]
    # 查看当前版本库情况
    $ git svn info
    # 取回远程仓库所有分支的变化
    $ git svn fetch
    # 取回远程仓库当前分支的变化,并与本地分支变基合并
    $ git svn rebase 
    # 上传当前分支的本地仓库到远程仓库
    $ git svn dcommit
    # 拉取新分支,并提交到远程仓库
    $ svn copy [remote_branch] [new_remote_branch] -m [message]
    # 创建远程分支对应的本地分支
    $ git checkout -b [local_branch] [remote_branch]
    
    • svn 命令

      yum install subversion -y

      命令 功能 使用格式
      checkout 检出 svn co URL
      up 更新到当前URL的末端 svn up
      switch 更新到某一tag/branch svn switch (tag/分支)URL
      add 增加 svn add 文件名
      rm 删除文件 svn rm 文件名
      删除目录 svn rm 目录名
      diff 与base版本(最后检出或者更新到的版本)对比 svn diff
      diff 与版本库中最新版本对比 svn diff -r head
      diff 当前工作副本,两个版本之间对比 svn diff -r reversion1:reversion2
      diff 版本库中任意两个tag做对比 svn diff (tag1)URL (tag2)URL
      ci 提交 svn ci -m "commit log"
      log 查看当前工作副本log svn log
      log
      log 只查看指定版本的log svn log -r
      log 打印log所有附加信息 svn log -v
      log 查看当前tag/branch版本详情 svn log --stop-on-copy -v
      info 查看当前工作副本所在URL svn info
      status 查看工作副本的状态 svn st
      查看文件的taglist svn命令不支持,可执行cs taglist
      tag 新增tag svn cp . (tag)URL
      tag
      tag 删除tag svn rm (tag)URL -m "commit log"
      tag 覆盖已经存在的tag 不支持
      分支开发 创建branch svn cp (基线版本)URL (分支)URL -m "commit log"
      分支开发 删除branch svn rm (分支)URL -m "commit log"
      分支开发 同步 svn co (主干)URL
      分支开发 同步 cd ~/wc
      分支开发 同步 svn merge (主干)URL (待同步tag)URL
      分支开发 同步 svn ci -m "commit log"
      分支开发 同步 svn cp (主干)URL (以_PD_BL_MAIN结尾的tag)URL -m"commit log"
      分支开发 合并 svn co (合并目标)URL
      分支开发 合并 cd ~/wc
      分支开发 合并 svn merge (基线版本tag)URL (上线tag)URL
      分支开发 合并 svn ci -m "commit log"
      分支开发 合并 svn cp (合并目标)URL (上线tag_MERGE_的tag对应)URL -m"commit log"
      • find / -name .subversion

    4. Git/SVN并存

    • 首先从svn仓库克隆代码
    git svn int http://ip/svn/demo/trunk  demo
    git svn fetch -r HEAD12
    
    • 添加git仓库地址
    cd demo
    git remote add git  http://ip/path/demo.git12
    
    • 获取git仓库的分支
    git fetch git master    #获取git仓库的master分支
    git fetch git 1.0       #获取git仓库的1.0分支
    git fetch git           #获取所有git分支123
    
    • 此时本地git的分支情况
    ➜  demo git:(master) git branch -a
    * master              #默认对应svn
    remotes/git-svn     #svn分支
    remotes/git/1.0     #远程git的1.0分支
    remotes/git/master  #远程git的master分支12345
    
    • 将git代码合并到svn分支
    git merge  git-master1
    
    • 从更新并提交
    # 从SVN同步
    git svn rebase
    
    # 提交SVN仓库
    git svn dcommit
    
    # 提交Git仓库
    git push -u origin master
    

    Git Contribution submission specification

    • reference vue specification (Angular)
      • feat Add new features
      • fix Fix the problem/BUG
      • style The code style is related and does not affect the running result
      • perf Optimization/performance improvement
      • refactor Refactor
      • revert Undo edit
      • test Test related
      • docs Documentation/notes
      • chore Dependency update/scaffolding configuration modification etc.
      • workflow Workflow improvements
      • ci Continuous integration
      • types Type definition file changes
      • wip In development

    常用全局配置

    # 全局提交用户名与邮箱
    git config --global user.name "Yuchen Deng"
    git config --global user.email "邮箱名@gmail.com"
    
    # gitk乱码处理
    git config --global gui.encoding utf-8
    
    下载项目:git clone <仓库地址>如果要下载非master的某分支代码:git clone -b <分支名> <仓库地址>查看当前你所在分支:git branch (查看你当前的分支,*标识的就是你当前的分支)
    创建和切换分支:git chaeckout -b <你的feature分支名称>
    添加修改到缓冲区:git add .
    检查项目状态:git status
    描述并提交修改内容描述:git commit -m "<提交的内容描述>"
    把项目提交到远程仓库:git push origin <你的feature分支名称>
    

    如果你是管理员权限还需要这么做:

    合并分支到master分支:git merge <feature分支>
    删除分支:git branch -d <feature分支>
    
    • 切换仓库

      # 查看
      git remote -v
      # 删除
      git remote remove origin
      # 更改
      git remote add origin xxxxxxx
      
      # 只改地址
      git remote set-url origin
      
    • 暂存文件

      git stash list  // 查看stash列表
      
      1、添加改动到stash
      git stash save "messeag"
      git stash save -m "messeag"
      git stash save -u "messeag"
      git stash save -a "messeag"
      -a表示all,是不仅仅把新加入的代码文件放入暂存区,还会把用.gitignore忽略的文件放入暂存区。如果想不影响被忽略的文件,那就要用-u,表示untracked files。
      
      2、恢复改动
      git stash list查看stash列表,从中选择你想要pop的stash,运行命令
      git stash pop stash@{id}
      或者
      git stash apply stash@{id} 即可
      
      3、删除stash
      git stash drop <stash@{id}> 如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。
      git stash clear 是清除所有stash
      
      4、git stash pop 与 git stash apply <stash@{id}> 的区别。
      git stash pop stash@{id}命令会在执行后将对应的stash id 从stash list里删除,而 git stash apply stash@{id} 命令则会继续保存stash id
      
      5. 查看指定stash的diff
      git stash show
      git stash show stash@{id}
      
      补充:
      
      注:[]方括号中内容为可选,[<stash>]里面的stash代表进度的编号形如:stash@{0}, <>尖括号内的必填
      
      git stash 对当前的暂存区和工作区状态进行保存。
      git stash list 列出所有保存的进度列表。
      
      git stash pop [--index] [<stash>] 恢复工作进度
      git stash apply [--index] [<stash>] 不删除已恢复的进度,其他同git stash pop
      
      git stash drop [<stash>] 删除某一个进度,默认删除最新进度
      git stash clear 删除所有进度
      
      git stash branch <branchname> <stash> 基于进度创建分支
      

    基本规范

    固定 master、release、develop 为长期分支。

    合并流程:feature(对应日常开发)->develop(对应开发环境)->release(对应测试环境)->master->tag(对应生产环境,生产打TAG)

    tag格式: release-v1.0.1.20220126.01
    tag解析:release-三位版本号.六位日期.两位补丁版本(当日没发布一次升+1,最高99次)。
    命令执行:git tag -a 'release-v1.0.1.20220126.01' -m '描述'

    相关文章

      网友评论

          本文标题:docker 搭建gogsgit及Git常规使用

          本文链接:https://www.haomeiwen.com/subject/vlyuddtx.html