重学git

作者: Terry_Qian | 来源:发表于2022-01-01 21:36 被阅读0次

    1 前言

    • 题外话:十月份换工作,从B2B,B2C业务转向自己比较感兴趣的M2C(客户端App)领域,受益匪浅,后续文章且听我娓娓道来。
    • 从长期高强度流水线交付的工作模式下,完全依赖IDEA的git集成功能让我并没有关注到git如此美妙的设计,本文讲述一个从IDEA内置git快捷功能转向命令行Git操作的记录,只包含工作中使用的命令,精简不复杂,希望对你也有帮助。

    2 常用命令

    • 每天拉取最新的dev代码并合并到自己的分支

      git pull
      # 合并develop到当前分支
      git merge develop
      
    • 提交代码

      git status
      git commit -am 'feat:daily task'
      git push
      
    • 分支切换

      # 检查当前分支是否有未提交的变更
      git status
      git checkout develop
      
    • 基于当前分支创建新的分支

      git checkout -b terry
      
    • push新分支到远程仓库

      git push -u origin terry
      # 或
      git push --set-upstream origin terry
      
    • 查看日志

      git log
      # q:退出
      
    • 打tag

      git checkout master
      git pull
      git tag
      # shift+g:翻至最后一页; q退出
      git tag v3.7.7
      git push --tags
      
    • 回滚

      # 找到需要撤销的commit_id, 复制, q:退出
      git log
      # revert是提交一次相反的记录,来抵消之前提交的记录,达到回滚的目的
      git revert 'commit_id'
      git push
      

    3 特殊场景

    • stash用于临时保存和取出变更,可跨分支

      # 查看当前分支的变更
      git status
      # 临时保存变更
      git stash save 'tip1'
      # 查看stash存储
      git stash list
      # 取出
      git stash pop
      

      比如代码写到一半发现写错分支了,先存起来,切到正确的分支,再取出来

      git stash save 'tip'
      git checkount terry
      git stash pop
      
    • 线上bug紧急修复

      # 查看tag并找到最新tag shift+g:翻至最后一页; q退出
      git tag
      git checkount v3.7.7 -b hot-fix
      git commint -am 'fix:bug'
      # -u update
      git push -u origin hot-fix
      git tag v3.7.8
      git push --tags
      # 拿最新的v3.7.8再次上线发版 验证没有问题后,将hot-fix分支合并到develop并删除hot-fix分支
      git checkount develop
      git merge hot-fix
      
    • 多个commit合并成一个commit让log精简一点

      git log
      # 左开右闭,找到你需要保留的commit的前一个commit_id 复制; q:退出
      git rebase -i 'commit_id'
      # i:修改,把需要被合并的commit记录前的pick修改为s,s是squash挤压的首字母
      # 保存退出:esc -> : -> wq回车
      # 进入commit注释的vi界面,i编辑,把不需要的commit注释前面用#注释掉,只保留一个commit注释
      # 保存退出:esc -> : -> wq回车
      
      # 强制覆盖到远程的分支-f force暴力,强迫,此命令极度危险,慎用,仅限在自己分支上操作
      git push -f
      
    • (特殊场景)分支中含有大量commit,导致仓库存储变得很大(历史commit全部删除哦)

    git checkout --orphan develop-tmp
    # 备份仓库 -> 删除仓库 -> 重新新建一个同名仓库
    git add .
    git commit -am 'init'
    git push origin -u develop-tmp
    
    • 仓库复制/仓库迁移,将本地的仓库推送到另一个仓库地址(分支、tag、commit)
    git push --mirror https://xxxxx/newRepository.git
    

    4 SSH密钥配置(拓展)

    错误: remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.

    使用github push tag的时候产生的报错,解决方案是使用ssh密钥配置,并且连接github时ssh密钥相比http有显著的速度提升。

    • 生成密钥

      ssh-keygen -t rsa -b 4096 -C "terry.qian@github.com"
      

    -t:指定密钥的type

    rsa:一种非对称加密算法

    -b:指定密钥的bits长度为4096位

    -C:指定密钥的Comment注释

    • 一路按回车即可

    • 查看密钥并找到公钥复制一下

      cd
      cd .ssh/
      ls
      cat id_rsa.pub
      
    • 打开github -> settings -> SSH and GPG keys -> New SSH Key -> 复制上公钥添加即可

    • 使用ssh链接clone项目代码


    参考:

    https://blog.csdn.net/qq_15957557/article/details/107022959

    https://cloud.tencent.com/developer/article/1861466

    相关文章

      网友评论

          本文标题:重学git

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