关于git:大厂git工作流

41次阅读

共计 2317 个字符,预计需要花费 6 分钟才能阅读完成。

基本操作

  • git add .
  • git commit -m “fix: xxx”
  • git push

开发工作流

  1. 惯例操作

    1. master(正式环境)切分支 feat-xxx-xxx(以后业务简称)
    2. feat-xxx-xxx 代码 merge(合并) 到text-release(测试环境)
    3. 测试环境通过测试后,将 feat-xxx-xxx 代码合并到master
  2. 多人多分支一次合并到master(俗称发车)

    1. 测试通过后,从 master 切分支v2.x.x(待发布版本)
    2. feat-xxx-xxxfeat-yyy-yyy 等分支在 github/gitlab 网页上以New merge request(mr)的模式发送合并申请(pull request
    3. 期待相干负责人 code review 过后,再将 v2.x.x 分支合并到master
  3. mr 存在抵触时(🌟为避免抵触倡议应用这里的残缺流程比拟稳🌟)

    1. master 切分支feat-xxx-xxx
    2. feat-xxx-xxx代码 merge 到 rest-release 提交测试
    3. 测试通过后,从 master 切分支v2.x.x
    4. 🚩feat-xxx-xxx合并 v2.x.x 外面的代码(因为你在开发的过程中 master/v2.x.x 可能曾经合了其余共事的代码了)
    5. 这时有抵触解决抵触,并且本地代码最好再运行一遍确保十拿九稳
    6. 再将 feat-xxx-xxx 通过 New merge request 的形式新建一个 pull requestv2.x.x
    7. 期待相干负责人 code review 过后 Merge 代码

命令集

  1. git stash(代码暂存, 非 commit)
    个别用在你在有代码批改的状况下须要切分支又不想提交 commit 时可用

    • git stash 存储以后 change
    • git stash save "save message" 给以后存储事件增加备注
    • git stash list 查看 stash 存储列表
    • git stash pop 复原之前缓存的工作目录并删除这一条 stash
  2. git reset(代码回退)

    • 第一步 git log // 取得 commit 信息
    • 第二步 复制回退对应工夫的 commit hash 值
    • 第三步 git reset --soft xxxxxxx(commit hash 值)
    • --hard是不保留以后已批改的,--soft是保留以后已批改的
    • 第四步 git push -f // 强制提交代码
  3. git reflog(时光穿梭机)

    • 代码被不小心回退了怎么修复回来?
    • 第一步 git reflog // 取得所有的 git 操作
    • 第二步 git reset --hard xxxxxxxx
  4. git cherry-pick

    • 修复到了指定 hash 点时,这个之后的就没了,如何加上来呢?
    • 第三步 git cherry-pick xxxxxxx(须要被加上来的 commit hash)
  5. fork 库拉取上游代码

    • 第一步 增加 upstream 上游仓库的近程链接
    • git remote add upstream https://github.com/xx/repo
    • 第二步 git pull upstream
    • 或者拉取指定分支(如 master) git pull upstream master
  6. 本地更新近程分支列表

    • git remote update origin --prune
    • git fetch是更新所有近程分支到本地(近程分支被删除的话本地 origin 更新后也会被删除)
  7. git merge(合并代码)

    • 合并 Branch1 代码到以后分支 git merge Branch1
  8. git rebase(合并提交的 commit)

    • 🚩7/ 8 操作最好在网页上通过创立 New merge request 来操作
    • 个别步骤是 merge,而后旁边有个选项是否 rebase
    • 如果勾选上,那么你 merge 过去的所有 commits 会被合并成一条 commit

git config

  1. 查看以后 .git 配置

    git config user.name
    git config user.email
  2. 设置以后 .git 用户 / 邮箱

    git config user.name "xxx"
    git config user.email "xxx@abc.com"
  3. 设置全局 .git 配置

    git config --global user.name "xxx"
    git config --global user.email "xxx@abc.com"
  4. 当存在多个 gitlab/github 账号时,

    1. 比方 gitlab 是公司的,邮箱也是公司发的,而 github 邮箱是本人的
    2. 这个时候最好不要间接共用全局配置
    3. 最好在单个我的项目内配置
    4. 因为
    5. git 是以邮箱为准去匹配指定用户的

多个 ssh 钥匙共存

参考:https://www.cnblogs.com/hafiz…

  1. 为公司生成一对秘钥 ssh key

    ssh-keygen -t rsa -C 'yourEmail@xx.com' -f ~/.ssh/gitlab-rsa
  2. 为 github 生成一对秘钥 ssh key

    ssh-keygen -t rsa -C 'yourEmail2@xx.com' -f ~/.ssh/github-rsa
  3. 在~/.ssh 目录下新建名称为 config 的文件(无后缀名)(可通过 vim config 创立)。
    用于配置多个不同的 host 应用不同的 ssh key,内容如下:

    # gitlab
    Host gitlab.com
        HostName gitlab.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/gitlab-rsa
    # github
    Host github.com
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/github-rsa

大厂真心累🥱,做的活都一样,只不过更加精细化一些。也就在公布日当天公布过后才有一、、集体工夫充充🔋

正文完
 0