git学习资源
 
  • star 的作用是收藏,目的是方便以后查找。
  • watch 的作用是关注,目的是等作者更新的时候,你可以收到通知。
  • fork 的作用是参与,目的是你可以增加新的内容,然后 Pull Request,把你的修改和主仓库原来的内容合并。

fork可以将别人的工程复制到自己账号下。但有一个缺点是:当源项目更新后,你fork的分支并不会一起更新,需要自己手动去更新。

fork之后,一般可以看到一个带有自己git名称的ssh或者https访问的地址。例如:
git@github.com:fuleying/parrots.git       可以ssh无密码git push!!
参与别人的开源项目,只需访问它的项目主页,点“Fork”就在自己的账号下克隆了一个仓库,
然后从自己的账号下使用SSH URL进行clone,因为只有SSH URL 链接的仓库才能推送修改。
开发完成后要往自己的仓库推送。如果你希望你fork的官方库能接受你的修改,你就在GitHub上发起一个pull request。
 

  1. 首先在github上新建一个远程仓库git-learn,此时会看到一个带有自己git名称的ssh或者https访问的地址。
    https://github.com/fuleying/git-learn.git
    git@github.com:fuleying/git-learn.git
  2. 在本地建立一个相同名称的文件夹git-learn,并进入该文件夹目录
  3. git init 初始化空仓库
  4. 创建一些文件,git add,将文件纳入版本控制,可以将多个文件多步纳入
  5. git commit -m "first commit" 进行离线提交,完成纳入操作
  6. 添加远程仓库origin,即用字符串 origin指代对应的仓库地址,origin即远程仓库在本地的简称
    git remote add origin git@github.com:fuleying/git-learn.git
  7. 将本地的master分支push到远程仓库origin上  git push origin  master
git remote       查看当前配置有哪些远程仓库
git remote -v  --verbose的简写,显示远程仓库对应的克隆地址

 
git快照
git会把出现变更的文件直接拷贝,形成新的blob类型的快照,而非与上一个版本的diff。而不是在每个版本中记录着各个文件的具体差异。
所以一旦需要查看某版本直接load即可,而其他差异版本控制需要做merge,所以快。空间换时间。
并非每个当前版本都需要做备份,为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照作一链接。
git会在隐藏目录.git里存在object里,定期会优化,保证快照空间,和读取时间的平衡。

Git的四种基本类型

  • BLOB:每个blob代表一个(版本的)文件,blob只包含文件的数据,而忽略文件的其他元数据,如名字、路径、格式等。

  • TREE:每个tree代表了一个目录的信息,包含了此目录下的blobs,子目录(对应于子trees),文件名、路径等元数据。因此,对于有子目录的目录,git相当于存储了嵌套的trees。

  • COMMIT:每个commit记录了提交一个更新的所有元数据,如指向的tree,父commit,作者、提交者、提交日期、提交日志等。每次提交都指向一个tree对象,记录了当次提交时的目录信息。一个commit可以有多个(至少一个)父commits。

  • TAG:tag用于给某个上述类型的对象指配一个便于开发者记忆的名字, 通常用于某次commit。

 

 
Git 专用名词
  • Workspace:工作区,从Git目录中的压缩对象数据库中提取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。
  • Index / Stage:暂存区,一般都放在 Git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。
  • Repository:仓库区(或本地仓库),即本地的.git 目录。
  • Remote:远程仓库

基本的 Git 工作流程如下:

  1. 在工作目录中修改某些文件。
  2. 对修改后的文件进行快照,然后保存到暂存区域。
  3. 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
git fetch到远程仓库中拉取从你上次克隆以来别人上传到此远程仓库中的所有更新(或是上次 fetch 以来别人提交的更新)。fetch命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。
git fetch origin来同步远程服务器上的数据到本地。该命令首先找到origin是哪个服务器,然后从上面获取你尚未拥有的数据,更新你本地的数据库,然后把origin/master的指针移到它最新的位置上。

git clone自动创建本地的 master 分支用于跟踪远程仓库中的 master 分支。

git pull从原始克隆的远端仓库中抓取数据后,合并到工作目录中的当前分支。

Git入门指南的更多相关文章

  1. Git入门指南十一:Git branch 分支与合并分支

    十五. Git branch 分支 查看当前有哪些branch bixiaopeng@bixiaopengtekiMacBook-Pro xmrobotium$ git branch * master ...

  2. Git入门指南九:远程仓库的使用【转】

    转自:http://blog.csdn.net/wirelessqa/article/details/20152651 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] 十三 ...

  3. 【翻译】Fluent NHibernate介绍和入门指南

    英文原文地址:https://github.com/jagregory/fluent-nhibernate/wiki/Getting-started 翻译原文地址:http://www.cnblogs ...

  4. Flume NG Getting Started(Flume NG 新手入门指南)

    Flume NG Getting Started(Flume NG 新手入门指南)翻译 新手入门 Flume NG是什么? 有什么改变? 获得Flume NG 从源码构建 配置 flume-ng全局选 ...

  5. 【转】git - 简明指南

    git - 简明指南 助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics其他语言 english, deutsch, españo ...

  6. Git入门简介

    ​1. Git 背景 Git 最初由Linus Torvalds编写,用于 Linux 内核开发的版本控制工具. Git 与常用的版本控制工具 CVS.Subversion 等不同,它采用了分布式版本 ...

  7. Office 365 机器人(Bot)开发入门指南 (新篇)

    最近在整理书稿时,发现我在2017年7月份写的这篇 Office 365 机器人(Bot)开发入门 的内容,因为相关平台的升级,已经完全不能体现当前的开发过程,所以我再专门写一篇新的开发入门指南给有兴 ...

  8. Docker 入门指南——常用命令

    前面已经介绍了 Docker 的安装方式,本文总结一下使用 Docker 的基本概念和常用命令. 基本概念 镜像 Image 镜像是一些打包好的已有的环境,可以被用来启动和创建容器 容器 Contai ...

  9. Maven 入门指南

    为什么要用 Maven? Maven 主要帮助用户完成以下 3 个方面的工作: 生命周期管理,便捷的构建过程: 依赖管理,方便引入所需依赖 Jar 包: 仓库管理,提供统一管理所有 Jar 包的工具: ...

随机推荐

  1. windows环境下apache-apollo服务器搭建及发布订阅测试

    查证了一些资料之后,发现 apache-apollo服务器使用的人还是挺多的,资料也比较齐全,所以直接选择 apache-apollo了,具体性能如何,先用起来再说吧: 1.下载 apache-apo ...

  2. Boss直聘邮件通知小脚本

    Boss 基于Python3的找工作利器--Boss直聘来消息邮件通知, 自动发送简历脚本,O(∩_∩)O~ 无聊写的,因为有时候觉得找工作心急如焚,想自动回复自动发简历啊有木有~~~ github地 ...

  3. 【转】PHPCMS+PHPExcel实现后台数据导入导出功能

    首先,上图之中的红色框框是没有的,我们想要给他加上,当然是要改HTML页面啦,废话,我们跟ECSHOP一样由PHP路径找模板: 看看路由原理: 首先,上图之中的红色框框是没有的,我们想要给他加上,当然 ...

  4. PSP表格记录功能

    关于王者荣耀交流协会的PSP表格记录功能,就是针对我们平时做表格时候遇到问题的简化与解决.这部分功能可以记录我们开始时间,暂停时间,结束时间,并自动计算出各个时间段的净时间.只要你开始工作时点一下开始 ...

  5. 划分树---hdu4417---区间查找(不)大于h的个数

    http://acm.hdu.edu.cn/showproblem.php?pid=4417 Super Mario Time Limit: 2000/1000 MS (Java/Others)    ...

  6. IHttpModule的那些事

    写在前面 关于IHttpModule的相关内容,在面试的时候也被问到过,当时也是隐隐约约的感觉这个接口有一个Init方法,可以在实现类中的Init方法注册一系列的事件,说句实话,具体哪些事件,忘了差不 ...

  7. lintcode-433-岛屿的个数

    433-岛屿的个数 给一个01矩阵,求不同的岛屿的个数. 0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 样例 在矩阵: [ [1, 1, 0, 0, 0], ...

  8. "Scrum站立会议"浅析

    目录 Scrum Scrum Meeting功能及要点 Scrum Meeting点评 Scrum 定义:是一种软件开发流程.它并不是一项技术,这种开发方式的主要驱动核心是人,它采用的是迭代式开发. ...

  9. 转载免安装版mysql的配置

    解压到自定义目录,我这里演示的是D:\wamp\mysql\   复制根目录下的my-default.ini,改名为my.ini,my.ini用下面内容替换 #以下是复制内容,这行可不复制 [clie ...

  10. Java List部分截取,获得指定长度子集合

    subList方法用于获取列表中指定范围的子列表,该列表支持原列表所支持的所有可选操作.返回列表中指定范围的子列表. 语法 subList(int fromIndex, int toIndex) fr ...