入职体操

Stash

创建SSH Key

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

  1. ssh-keygen -t rsa -C "[email protected]"
    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://[email protected]/web/www.git # 其中www是要克隆的版本库,其它如mining, stat, mtpay等。美团的代码库暂时不是全开放的,需要申请访问权限。
    git clone ssh://[email protected]/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 # 将当前分支在基础上的修改变基到分支上

  • 分支管理
    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

入职体操_第1张图片

从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分支

你可能感兴趣的:(入职体操)