软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 研发管理 -> git入门 -> 正文阅读

[研发管理]git入门

资料总结     参见<android开发进阶  从小工到专家> 作者 :何红辉


git起源
    用于管理开源项目'linux',  作者 'linus'  . 开发时长 '两周' (第一版) . 2005

第一版git的设计特性
  •  速度
  •  简单的设计
  •  对非线性开发模式的强力支持
  •  完全分布式
  •  有能力高线管理类似linux内核一样的超大规模项目

git基本原理
    git只关心文件数据的整体是否变化,它并不保存变化前后的差异数据. git在每次提交更新时,会将项目所有的文件做一个快照,然后在文件系统中保存一个指向这次快照的索引,为提高性能,若文件没有变化,git只会对上次的快照做一链接而不做额外操作.


    git绝大多数操作都在本地执行.和传统CVS访问网络不同,git会将当前项目的历史更新都存储在本地.
    git会时刻保持数据的完整性,在将数据保存到git之前,会进行checksum--使用SHA-1算法,通过对文件的内容或者目录的结果算出一个SHA-1指作为指纹,根据这个值判断数据的变化.所以如果文件在传输是变得不完整或者磁盘损坏导致数据缺失,git能立即察觉


   git文件有3中状态
  1.     committed : 表示文件已经被安全的保存在本地数据库
  2.     modified    : 表示已修改了文件,但是还没有提交保存
  3.     stage          : 表示把已修改的文件放在了提交的表单中,也就是执行了  git add

   git的三种区域 workspace(普通,未做任何git操作)-->staging area(暂存区域或者说表单区域更好理解些)-->git 数据库
    每个项目都有一个git目录(隐藏文件.git),他是git保存元数据和对象数据库的地方. 每次克隆(clone)仓库时,其实复制的就是这个目录里面的数据
    git的工作流程  :  1. 对项目进行修改  2. 对修改后的项目做快照,然后保存到暂存区域.  3.提交更新,将暂存的文件快照永久保存到git目录中


git的基本配置
    git下载后需要进行初始化配置,如果后续需要修改配置内容,使用相同的命令即可,后续配置会覆盖前面
    使用git config工具(安装了git后自带)来读取或者设置相应的工作环境变量. 这些环境变量共有3中,存储在不同地方(作用域不同)
  1. /etc/gitconfig : 针对所有用户, 使用git config 工具是, 用 --system选项设置或读取
  2. ~/.gitconfig : 针对当前用户, 用 --global 选项设置读取
  3. 当前项目下的.git/config : 针对当前项目.

     优先级从小到大,也就是说 项目的优先级最强,用户次之,全局最次
    默认安装git后,git会自动配置工具的环境变量,所以使用cmd命令可以直接操作git config工具,可以在doc中数据git version查看git版本.若提示git无效,则需要额外配置git的path地址
   git配置项 1: 用户信息
   cmd中输入  git config --global user.name "xxxx"
                      git config --global user.email xx@xxx.xxx
   配置完后,你当前用户的git信息就是xxxx了,你可以通过 git config --global user.name/user.email 查看你的配置,如果你想让当前项目有不同配置,进入项目目录后重新执行配置命令,去掉 --global 即可.
   设置git默认的编辑器 : git config --global core.editor emacs
   设置git默认的差异分析工具: git config --global merge.tool vimdiff
   查看现有的git配置  git config --list
   配置高亮效果

  • git config --global color.status auto #查看状态时高亮显示
  • git config --globalcolor.branch auto #分支名高亮
  • git config --global color.ui auto #自动高亮

    使用git别名能有效提高工作效率(就是默认的git 命令重命名)git config --global alias.新名字  原始命令

   如: git config --globalalias.co checkout

   git基本命令的使用
    一,初始化本地仓库  git init
    如果你有项目,在dos中进入这个项目目录,执行 git init ,那么git会在这个目录中创建.git工作目录.并对目录中的内容进行版本控制
[img]http://img.blog.csdn.net/20160402133455808?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

   [img]http://img.blog.csdn.net/20160402133543684?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
   , git status  检查本地项目状态  
   刚初始化的时候.git中的数据库中是没有文件快照的,这是你在工作目录中创建一个java文件,再执行 git status,会发现git提示有差异文件为添加到表单

  [img]http://img.blog.csdn.net/20160402133554855?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
    [img]http://img.blog.csdn.net/20160402133602902?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

   三,git add  不多说 ,就是将 差异文件添加到暂存区域  可以看到dos中的使用提示  use 'git add <file> ...'

   使用 git add .   添加所有文件
   使用 git add  <文件名>   添加指定文件

   这时再看git status [img]http://img.blog.csdn.net/20160402133615465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
   既然有add  那么相对应的remove也有吧.  看上图  git rm --chched <file>  就是将表单中的文件移除

  

  四,git commit  提交表单到本地数据库
  两种模式  1. git  commit  -m "<注释>"    2. git commit

  第一种会将引号中的内容作为提交的注释添加到数据库中,用以说明这次提交做了什么
  第二种会打开一个默认的文本编辑器 如vim ,你可以使用编辑器添加复杂的注释
  说明一下,注释支持中文 



  五,git log  查看项目历史版本
  见图[img]http://img.blog.csdn.net/20160402133630762?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
  这个e516xxx 的就是这次提交的指纹了,通过项目结构和文件内容,用SHA-1算出来的
  下面的first commit 就是这次提交的注释
   如果想从注释中提取历史文件

   1.使用 git checkout  e516xxx  <文件名> 即可
   2.使用 reset,但是reset操作不对会移除log信息
   五. git branch  创建分支
   分支等于对项目做一个副本,分支主干互不影响,然后在副本中开发新功能,防止代码混乱或者说新功能影响旧功能.
   具体操作流程  1. 开辟分支  2.切换到分支开发  3.切回主干 4.合并分支 5.删除没用分支
   如图  b就是创建的分支名了

   [img]http://img.blog.csdn.net/20160402133649403?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center 

   创建完分支后,可以执行 git branch  查看枝干列表[img]http://img.blog.csdn.net/20160402133701559?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center,  带星号说明你在这个枝干上.
   git init 后会默认创建一个名为master主干

   六.切换分支  git checkout

   见图 [img]http://img.blog.csdn.net/20160402133727684?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center 这里的co 就是前面设置的checkout 的别名,用co就简化了,效果如同
git checkout b.
   执行完这条命令后,版本就从master主干切换到名为b的枝干了,见图: [img]http://img.blog.csdn.net/20160402133746841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

   我们在分支中开发项目,如新建了一个Test类,这时如果就算提交到本地,那么主干的版本也是看不到的
[img]http://img.blog.csdn.net/20160402133809450?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

   [img]http://img.blog.csdn.net/20160402133825591?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

切回主干
[img]http://img.blog.csdn.net/20160402133833372?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

[img]http://img.blog.csdn.net/20160402133842403?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

会发现不仅文件没有,log也没有
七.git merge  合并分支
[img]http://img.blog.csdn.net/20160402133852732?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
看看合并后的目录,Test出现了

[img]http://img.blog.csdn.net/20160402133901982?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center

同时log也出现了
注意合并的时候如果同样的代码被多个修改,那么可能会出现冲突,这时候需要手动调节完冲突再重新执行add commit.
最后,新功能开发完了,分支合并了,那么需要删除无用的分支  git branch -d <分支name>, 删除后再看枝干列表
[img]http://img.blog.csdn.net/20160402133910138?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
八.git tag版本标签
一般会在正式发布的版本中添加tag标签,以便以后出意外恢复或者检索
语法 git tag -a <tagName> -m "<注释>"
使用git tag 列出所有的tag版本
[img]http://img.blog.csdn.net/20160402133916763?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
使用git show 查看tag的详细信息[img]http://img.blog.csdn.net/20160402133929138?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center,git show也能用于查看分支



使用 git tag -d <tagName> 删除tag[img]http://img.blog.csdn.net/20160402134130030?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center


九.git push  将本地仓库的记录添加到远程 

git 大部分是在本地的,但是如果多人合作的话,远程仓库必不可少,团队成员可以从远程中clone(第一次)出项目来进行多人开发.
所以在提交完(commit)项目后, 调用gitpush  发布到远程.(当然你得有远程服务器,或者可以使用github)


提一下 git pull / git fetch / git clone 的区别
git clone: 是把整个git项目拷贝下来,包括里面的日志信息,git项目里的分支,你也可以直接切换、使用里面的分支等等
git fetch :从远程获取最新版本到本地,但是不会和本地合并
git pull: = git fetch + git merge  下载最新后再和本地的合并


ok 最后一个 

十.git help  <命令>查看指定命令的帮助文档


简单的过了一遍git , 用于快速入门.









 

......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-02 21:01:17  
研发管理 最新文章
拉格朗日乘数
maven之可视化项目依赖(Visualizingdepend
mac效率工具
Atitit.css规范bem项目中CSS的组织和管理
git入门
Asimplemodelfordescribingbasicsourcesofp
Linux进程管理浅析
我的openwrt学习笔记(十九):linux便捷开
2、微控制器选择
Git使用手册:为Git仓库创建Submodule
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年1日历
2018-1-23 4:06:42
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --