工作笔记之Git和Repo

Git vs SVN

Git属于分布式,而SVN是集中式

  • 在集中式的版本系统,有一个叫“中央服务器”来存放版本库,用自己电脑干活的时候,先要联网从服务器取得最新的版本,然后干完活,再将修改后的版本推送到服务器。如果中央服务器出了问题,所有人都没法干活了。
  • 在分布式的版本系统,没有像集中式版本系统中的“中央服务器”,每个人的电脑都有一个本地的完整版本库,上传的只是一个版本中的change。

工作流程

  1. 一般在企业的开发中,都会有一个远程服务器来存放完整的代码。程序员可以在拉取相关的代码进行开发、维护、升级。

  2. Repo是谷歌用Python脚本写的调用git的一个脚本,可以更加便捷的管理Git中的仓库。
    repo sync -j8 // 表示启动8个线程异步下载代码
    repo upload . // 表示将本地的commit提交到远程仓库
    安装教程见:http://bbs.coloros.com/find7-32316-1-1.html

  3. linux下手动编译方式有make,mm,mmm。每次干活前要用make(全编译)将所有的依赖一同编译,后续可以使用(单编译)mm,mmm来编译,时间更快,如:packages/apps/xxx mm 或者 mmm packages/apps/xxx。(注:make name -j4, name 由Android.mk中的LOCAL_PACKAGE_NAME定义)

  4. 程序员在开发需求时需要先提交到Gerrit平台,由同事和主管review,通过后才能进到最终的代码库。

Git常用指令

Git中文件流转的区域由(工作区-work,暂存区-stage,本地仓库-HEAD)组成。

  • git remote add origin git@xxx.git // 添加远程仓库地址的映射并命名为origin
  • git config user.name “Your Name” // 配置用户名
  • git config user.email you@example.com // 配置邮箱
  • git push -u origin master // 将本地的master分支推送到origin,首次需要-u参数关联,后边可省略
  • git pull origin master // 拉去origin中的master分支并合并,等同fetch+merge
  • git branch –set-upstream-to=origin/master // 设置pull操作的代码来源为origin的master分支后直接用git pull即可
  • git pull - -rebase // 同步当前模块的最新代码
  • git rm 文件 // 删除已提交的文件

  • git status // 查看work的改动
  • git add ./-u/-A/文件 // 将work的change添加到stage
  • git reset ./文件 // 从stage回到work
  • git checkout ./文件 // 还原change,撤销work中的修改
  • git commit -a -s // 将stage的change添加到HEAD
  • git reset - -soft/mixed/hard HEAD^/commitId // commit回滚,撤销HEAD中添加过的commit

  • git log // 查看HEAD中的commit
  • git reflog // 查看git操作的历史记录

  • git checkout -b test -t origin/alpha // 新建并切到连接远程地址(origin)分支alpha到本地分支test
  • git branch -vv/-r/-a // 查看分支
  • git checkout test // 切换到分支test
  • git branch -D test // 删除分支test

  • git stash save test // 将work或stage中的change剪切到全局暂存区,命名test
  • git stash apply(复制)/pop(剪切) stash@{id} // 将对应id的change放到work
  • git stash drop stash@{id} // 删除对应id的change

  • git rebase alpha // 将当前所在分支和分支alpha上的commit合并
  • git cherry-pick commitId // 将本地commitId对应的commit复制到当前分支上

  • gitk // 提交记录的图形化界面
  • git diff // 查看work中修改的内容或查看俩个commit的差别
  • git diff - -cached // add.之后的查看内容的变化
  • git blame 文件 // 查看文件内容的修改者
  • git show commitId // 查看commit中修改的内容
  • git bisect // 二分查找bad commit

merge和rebase的区别

  • 使用merge会保留原始提交的记录,在git tree中可以查看到完整的提交路线;而rebase则会使我们的git tree看起来更加清爽,更方便去维护。
  • 使用merge合并分支的时解决冲突后,使用git add与git commit完成提交。
  • 使用rebase合并分支的时解决冲突后,使用git add与git rebase - -continue完成提交。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值