入职体操

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 复制即可

其中配置参照了://www.greatytc.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分支

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,657评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,889评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,057评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,509评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,562评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,443评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,251评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,129评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,561评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,779评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,902评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,621评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,220评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,838评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,971评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,025评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,843评论 2 354

推荐阅读更多精彩内容