重学git

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容