头图

基本操作

  • 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

远程办公之git代理

#只对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080

#取消代理
git config --global --unset http.https://github.com.proxy

// 查看当前代理设置
git config --global http.proxy
git config --global https.proxy

// 设置当前代理为 http://127.0.0.1:1080 或 socket5://127.0.0.1:1080
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080

git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080

// 删除 proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
大厂真心累🥱,做的活都一样,只不过更加精细化一些。也就在发布日当天发布过后才有一、、个人时间充充🔋

罗坤
365 声望18 粉丝

笔记