对于初学者,从使用上先入手,往往学的最快,并从中汲取教训,再回头更深入的学习,效果尤佳。

安装git

安装git自不必说,mac已经内置了git,linux下一个命令就能搞定,windows下需要下载一个客户端安装,一切尽在官方网站:

http://git-scm.com/

配置自定义信息

# 配置用户名和密码,标识用户,且可以为后续提交钩子发送邮件, 必填
git config --global user.name "Jayfeng"
git config --global user.email jayfeng@gmail.com

同步仓库代码

假设服务器IP是192.168.1.18:

git clone git@192.168.1.18:~/git-repo/ANDROID_CODE.git

提交

# 提交到暂存区(什么是暂存区,下篇会细说)
git add .
# 提交到本地仓库(有本地仓库,难道还有远程仓库,是的,就是服务器咯)
git commit .
# 把本地仓库的提交推送到远程仓库
git push origin master

更新代码

# 拉取代码
git pull
# 更建议使用以下方式更新代码
# 拉取代码,但不合并
git fetch origin master
# 合并本地代码和最新拉取的代码
git rebase origin/master

冲突

在上步中,很有可能会冲突,解决冲突的步骤如下

# 假设上步在执行git rebase origin/master的时候发生了冲突
# 查看当前冲突的状态
git status # ... ...
# 打开冲突的文件
# 查找">>>",定位到冲突的地方,然后解决冲突
# ... ... # 把解决冲突之后的文件添加到暂存区
git add .
# 继续上步冲突的合并操作,即可rebase成功
git rebase --continue
# 如果想放弃这次合并,--continue换成--abort
git rebase --abort
# 如果冲突了不管,--continue换成--skip
git rebase --skip

分支(branch)和标签(tag)

标签,也叫里程碑,顾名思义,就是一个重要的标示,以commit的形式存在。

# 添加tag
git tag -a 1.0.3 -m 'publish a version 1.0.3'
# 显示tag
git show 1.0.3
# 合并标签到远程版本库
# 推送某个标签到远程版本库
git push origin 1.0.3
# 推送所有标签到远程版本库
git push origin --tags
# 检出标签
git checkout -b myTagBranch 1.0.3

分支,相当于独立承载另外需求的代码副本,常用于区分管理不同版本的代码。

# 基于当前分支创建dev分支
git checkout -b dev
# 推送本地dev分支到远程分支
git push origin dev:dev
# 删除dev分支
git branch -D dev

git的分支功能是非常强大和灵活的,能够提供多个代码副本共存的方便,大大节省了维护多版本的人力成本。

重置(reset)

回退到某个版本。

// 回到到324214130的tree index,默认参数--mixed, 保留源码,代码状态回退到工作区
git reset 3242a4130142478023231225551a9b7dcb4441e3
// 另外两个参数分别是--soft、--hard, 分别是比--mixed回退的更少一步和更彻底一步。
// 放到下篇文章继续深讲。

反悔/撤销(revert)

回退某个版本,注意区分和reset的不同。revert是属于commit级别的操作。

// 回退324214130的commit,相当于把这个commit的改动再反向操作了一次
git revert 3242a4130142478023231225551a9b7dcb4441e3

revert只针对这个提交,对它的前面和后面的提交没有直接的影响(相对于reset来说)。同时git会把revert操作当成一个新的commit,可以在git log中看的到。

小结

本篇把基本使用git的一些命令一一讲解了一番,以期初学者能上手实用起来。而有些地方则是蜻蜓点水,未作深入,因为我们还有最后一章深入篇,敬请期待!

同步发布:http://www.jayfeng.com/2015/07/25/记一次小团队Git实践(中)/

记一次小团队Git实践(中)的更多相关文章

  1. 记一次小团队Git实践(下)

    在上篇中,我们已经能基本使用git了,接下来继续更深入的挖掘一下git. 更多的配置自定义信息 除了前面讲的用户名和邮箱的配置,还可以自定义其他配置: # 自定义你喜欢的编辑器,可选 git conf ...

  2. 记一次小团队Git实践(上)

    公司规模不大,成立之初,选择了svn作为版本控制系统.这对于用惯了git的我来说,将就了一段时间后,极为不爽,切换到git-svn勉强能用.随后,因为产品需要发布不同的版本,而git-svn对远程分支 ...

  3. 小团队git开发模式

    实验室要使用Git进行代码管理,但是git非常复杂,各种开发模式也是层出不穷.作为新手的偶们很是发囧啊!!网上搜了一下,发现很多并不适合我们小团队运作(它本身就是为Linux内核管理而开发的分布式代码 ...

  4. 小团队Git协作流程

    git和svn 最大的差异在于git是分布式的管理方式而svn是集中式的管理方式. 集中式 集中式代码管理的核心是服务器,所有开发者在开始coding之前必须从服务器获取代码,然后开发,最后解决冲突, ...

  5. Git 在小团队中的管理流程(转)

    目标读者:了解 Git 的基本概念,能够使用 Git 进行基本的本地和远程操作. 有关 Git 的基础知识可以参见 知乎回答-怎样使用 GitHub?,天猪(刘勇)给出了一些很好的学习资料. 本文介绍 ...

  6. Git 在小团队中的管理流程

    目标读者:了解 Git 的基本概念,能够使用 Git 进行基本的本地和远程操作. 有关 Git 的基础知识可以参见 知乎回答-怎样使用 GitHub?,天猪(刘勇)给出了一些很好的学习资料. 本文介绍 ...

  7. 开发团队在TFS中使用Git Repository (一)

    在研发团队中,代码版本管理是最为基础的必要工具.个人使用过的版本管理工具有SVN.VSS.ClearCase.TFS.Git,从团队的角度和使用角度来说,个人倾向于与使用TFS作为团队的基础工具.首先 ...

  8. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  9. 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问

    中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...

随机推荐

  1. JSON数据格式

    JSON 数据格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人 ...

  2. Java实现注册邮箱激活验证

    邮件发送servelet实现 package com.xbs.register.main; import java.io.IOException;import java.util.Date;impor ...

  3. Web前端开发工程师的就业前景

    Web前端开发工程师的就业前景 Web前端开发工程师是一个全新的职业,在IT行业真正受到重视的时间不超过5年.因此,大家越来越关心web前端工程师前景怎么样?web前端工程师就业如何?Web前端开发是 ...

  4. nohup命令

    nohup就是不挂起的意思( n ohang up). .nohup command 或者 nohup command & 这之间的差别是带&的命令行,即使terminal(终端)关闭 ...

  5. limits.h头文件

    CHAR,SHRT,INT ,LLONG加_MAX后缀表示最大,加_MIN后缀表示最小,加U前缀表示无符号 UCHAR_MIN ,UCHAR_MAX sizeof()计算数所用的空间 #include ...

  6. Xcode开发中的6个小技巧

    Xcode是iPhone和iPad开发者用来编码或者开发iOS app的IDE.Xcode有很多小巧但很有用的功能,很多时候我们可能没有注意到它们,也或者我们没有在合适的水平使用这些功能简化我们的iO ...

  7. NYOJ题目113字符串替换

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAr4AAAHvCAIAAAA930vtAAAgAElEQVR4nO3dPVLjysIG4G8T5CyE2A ...

  8. sqlserver执行sql文件命令(sqlcmd)

    个人自用sqlcmd命令: sqlcmd -E -i test.sql -d databasename -s 127.0.0.1 sqlcmd命令解释: 用法: Sqlcmd            [ ...

  9. C/C++学习笔记----指针的理解

    指针是C/C++编程中的重要概念之一,也是最容易产生困惑并导致程序出错的问题之一.利用指针编程可以表示各种数据结构,通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯:指针能 ...

  10. 与你相遇好幸运,Sails.js自定义数据库名

    在/api/models/下,自定义的.js文件内容 module.exports = { tableName: '自定义的数据库名',  autoCreatedAt: false, //关闭  au ...