基本操作

  • 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.namegit 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,内容如下:

    # gitlabHost gitlab.com    HostName gitlab.com    PreferredAuthentications publickey    IdentityFile ~/.ssh/gitlab-rsa# githubHost github.com    HostName github.com    PreferredAuthentications publickey    IdentityFile ~/.ssh/github-rsa
大厂真心累,做的活都一样,只不过更加精细化一些。也就在公布日当天公布过后才有一、、集体工夫充充