美文网首页
入职体操

入职体操

作者: jiangmo | 来源:发表于2018-01-16 22:07 被阅读62次

    Stash

    创建SSH Key

    关于秘钥,如果~/.ssh里面没有key的话,参照如下方法:

    1. ssh-keygen -t rsa -C "your_email@example.com"
      2.一直按回车
      (在输入passphrase的时候也可以输入密码,但为了之后免密码操作,需要将本地的秘钥添加到ssh agent中,使用的命令:
      ssh-add .ssh/id_rsa

      3.pbcopy < ~/.ssh/id_rsa.pub 复制即可

    其中配置参照了:https://www.jianshu.com/p/ddd3122cb351

    Git

    迄今为止,最酷的教程

    http://pcottle.github.com/learnGitBranching/?demo

    Git 基本命令

    • 克隆代码库
      git clone ssh://git@git.sankuai.com/web/www.git # 其中www是要克隆的版本库,其它如mining, stat, mtpay等。美团的代码库暂时不是全开放的,需要申请访问权限。
      git clone ssh://git@git.sankuai.com/web/www.git mt # mt是指定克隆到的目录名,其他和上一个命令一样

    • 更新代码库到最新版本
      git pull

    • 查看工作区状态
      git status

    • 提交代码到本地仓库
      git add template/deal/default.php # 添加文件到暂存区
      git commit -m "update deal ui"

    • 推送到远程仓库
      git pull # 更新代码库到最新版本
      git push # 开始推送
      git push origin master # 对新建远程仓库的第一次推送,需要指定主分支名master

    • 暂存区操作
      git add template/deal/default.php # 提交文件到暂存区
      git reset HEAD template/deal/default.php # 删除暂存区中的文件

    • 查看代码改动
      git diff # 查看工作区与暂存区的文件差异
      git diff --cached # 查看暂存区与最后一次本地提交的文件差异
      git diff HEAD # 工作区与最后一次本地提交之间的差异
      git diff origin # 工作区与本地仓库原始版本比较

    • 查看提交记录日志
      git log # 查看默认格式的提交记录
      git log -5 # 查看最近5条提交记录
      git log -p # 查看提交记录并显示代码改动内容
      git log -p --author=abc # 查看abc的提交记录并显示代码改动内容
      git log --since=2011-05-24 --until=2011-05-25 # 查看从2011-05-24到2011-05-25的提交
      git log --name-only # 只显示文件名
      git log --pretty=oneline # 只显示一行
      git log --pretty=format:%h:%s # 自定义格式
      git log --graph # 图形化查看
      git log --stat # 查看修改文件统计

    • 文件操作
      git checkout file # 检出最后一次提交的文件覆盖当前文件,或者说放弃当前文件的修改
      git rm file # 删除文件
      git mv file1 file2 # 移动或者重命名文件

    分支和合并命令

    • 创建分支
      git branch hotfix # 方法1,直接从当前分支创建hotfix分支
      git checkout -b hotfix # 方法2,从当前分支创建hotfix分支,并切换到hotfix分支
      git checkout -b hotfix master # 方法3,从master分支创建hotfix分支,并切换到hotfix分支

    • 切换分支
      git checkout hotfix # 切换到hotfix分支
      git checkout master # 切换到master分支

    • 分之合并
      git merge hotfix # 合并hotfix分支到当前分支,使当前分支拥有hotfix分支的改动
      git merge hotfix --squash # 合并hotfix分支到当前分支,但将分支上的提交压缩,然后手工提交变成一次提交。
      git merge origin/master # 合并远程的master分支到当前分支

    • 变基分支
      git rebase master # 将当前分支的修改重新变基到master分支上
      git rebase --on-to <new_base> <current_base> # 将当前分支在<current_base>基础上的修改变基到<new_base>分支上

    • 分支管理
      git branch # 查看所有的分支,带*号的是当前所在分支
      git branch -d hotfix # 删除hotfix分支
      git branch -D hotfix # 强制删除hotfix分支
      git branch --merged # 查看与当前分支合并过的分支,只要合并过的分支即使删掉也不用担心
      git branch --no-merged # 查看与当前分支没有合并过的分支

    • 远程分支
      git push origin abc # 将本地分支abc保存到远程
      git push origin :abc # 将远程分支abc删除
      git branch -a #查看目录下的所有分支

    在www仓库约定只有以自己名字开头的分支才能新增和删除,比如对于panweizeng来说
    git push origin panweizeng/abc # OK
    git push origin fudongping/abc # FAIL

    GitWorkingFlow

    从master分支建立develop分支,然后在develop分支上进行开发。

    git checkout master # 切换到master分支
    git checkout -b develop # 从master创建develop分支,并切换到该分支
    git commit -m "fix bug 1" # 修复了bug1
    git commit -m "fix bug 2" # 修复了bug2

    在develop开发已经完毕(修复bug或者添加新特性),这时从develop创建mirror分支。

    git checkout -b mirror # 从develop创建mirror分支,并切换到该分支

    更新master到最新,把master的代码更新合并到mirror。如果有冲突,请解决冲突后提交。

    git checkout master
    git pull # 更新master到最新
    git checkout mirror
    git merge master # 合并master到mirror

    把mirror分支的代码更新合并到master,然后推送到远程

    git checkout master
    git merge mirror --squash # 压缩合并mirror分支上的代码更新
    git commit -a -m 'xxxx' #注意需要进行一次提交
    git push # 推送到远程

    特点

    • 单主分支结构,即远程和本地都以master作为主分支,工程师在develop分支上开发
    • 本地master作为远程master和本地develop的桥梁,主要做pull和push的操作,保证和远程master同步
    • develop开发完成后,从develop创建mirror用于合并master上最新的改动,合并成功(可能要解决冲突)后,再在master上合并mirror分支并push到远程
    • 发布脚本更新发布机器上的master到最新版本,建立master的发布tag,然后开始线上部署
    • 线上代码稳定后,删除develop和mirror分支

    注意事项

    • 不要在master上进行开发,master分支是连接远程代码库和本地分支的桥梁,桥梁的功能只有一个就是连接;
    • mirror分支的作用是,如果合并发生冲突,可以保留一份干净的副本,如果改动很小,这个分支也可以不要;
    • develop和mirror分支的名字只要是非master的任意名字都可以,比如hotfix, new-mobile等等;

    Git开发与上线流程

    Git开发

    1.从master创建开发分支并提交修改

    git checkout master
    git pull # 切换到master,并更新到最新
    git checkout -b develop # 创建develop分支,并切换到此分支
    vim && rm && ... # 任意发挥,随意修改添加代码
    git add ...(modified files) # 添加修改后的代码文件
    git commit -m "some things" # 提交修改至develop分支

    webreview username #提交review,例如webreview weiziqian,会自动生成review页面并邮件通知
    #或者使用stash,创建远程开发分支,然后checkout,开发完后使用pull request提交review

    Git上线

    1.如果修改范围很大,则需要创建合并分支;否则此部分可以忽略

    git checkout -b mirror # 从develop创建mirror分支,并切换到该分支

    2.在镜像分支上合并修改

    git checkout master
    git pull # 首先切换并更新master到最新
    git checkout mirror
    git merge master # 合并master到mirror;如果冲突需解决冲突

    3.提交合并后的代码

    git checkout master
    git merge mirror --squash # 压缩合并mirror分支上的代码
    git commit -m 'things again' # 提交至master分支

    相关文章

      网友评论

          本文标题:入职体操

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