git:distributed is the new centralized-part1
PART 1
梗概
git文件流转有三个工作区域:工作目录(working directory)、暂存区域(staging area)、本地仓库(repository)。文件处于上述三个工作区域的状态分别为:已修改、已暂存、已提交。
基本的git工作流程:在working diretory修改文件—>对修改的文件进行快照,保存到staging area—>提交更新,永久存储到repository中。
从远程仓库克隆一个项目到本地当前目录:
$ git clone git://xxx.git
每次修改文件后如何提交到远程仓库
git status:显示当前分支目录、是否有未纳入管理的文件(比如新创建的文件)等。
git add xxx:将某个新文件纳入版本控制并放入暂存区;将修改的文件放入暂存区;
如果不想把某些文件纳入版本控制,可以创建一个.gitingore文件,并列出文件格式,如:
$ cat .gitignore*.[oa]*~
git diff:查看尚未暂存的文件更新了哪些部分;git diff - -staged:查看已暂存的文件与上次提交时的差异;git commit:提交更新(暂存区域到本地仓库)。git commit -m “xxxxxx”:给上面的操作加注释。git commit -a -m “xxxxxx”:把修改的文件直接提交到本地仓库,跳过暂存区域的步骤;
查看提交历史
git log:查看提交历史;git log -p -2:仅显示最近的两次更新差异;
撤销操作
提交时忘了暂存某些修改,可以先补上暂存操作,再重新提交:
$ git commit -m 'initial commit'$ git add forgotten_file$ git commit —amend
使用git reset HEAD xxx取消已经暂存的文件;
远程仓库的使用
远程仓库是指托管在网络上的项目仓库,有些是只读的,有些是可写的。协作开发项目时,需要管理远程仓库,推、拉数据,分享进展。
管理远程仓库,包括添加远程库、移除废弃的远程库、管理远程库分支、定义是否跟踪分支等等;
git remote -v:查看当前的远程库,并显示对应的克隆地址。
git remote add haha git:xxxxxx.git:添加一个新的远程库,并制定一个简单的名字,以便将来引用。
git fetch haha:把上面的远程仓库抓取到本地(因为本地木有)。fetch只是拉取,并不合并。
git fetch origin:抓取从你上次克隆以来别人上传到此远程仓库的所有更新(克隆的仓库都是归于origin名下,即:你使用git clone下载下来的项目,在你本地的分支目录为origin/master)。
git push origin master:把本地master分支推送到远程origin仓库(看上例可知,本地和远程都有个origin/master)。执行成功的前提:所克隆的服务器有写权限且同一时刻没有其他人正在推数据。
git remote show origin:查看远程仓库(本例为origin)的信息。
什么是git分支?
假如我们提交三个文件,git会用blob对象存储每个文件的快照。而在提交的同时,会创建一个提交对象,该提交对象包含一个指向文件快照的指针、包含一个或者0个指向该提交对象的父对象的指针、包含一些其他附属信息。那么单个提交对象在仓库中的数据结构如图:
之后每做一次提交,都会有一个指向上一次提交对象的指针,连续提交三次之后如下图:
分支指向最新一个提交对象,git默认第一个分支为master,那么如下图:
新创建一个分支,就是新增加一个指向最新提交对象的指针:git branch testing
有一个特别指针HEAD,它在哪里就说明当前分支在哪里:
使用git checkout testing切换到新创建的分支:
其实就是HEAD指向新建分支了。
你在新建的分支上提交一个修改,则又新增一个提交对象,变成这样:
你再使用git checkout master切换到master分支,HEAD就又过去了:
如果你在master再作修改,再提交,其实很明显,提交内容是不包括你testing分支的新增内容的,因为它目前指向的是前一个提交对象:
所以,我们所有做的改变分别孤立在不同的分支里,我们可以在不同的分支里反复切换,并要在时机成熟时,将他们合并在一起。
更多内容,关注我的IT微信订阅号:

参考文档:https://git-scm.com/
git:distributed is the new centralized-part1的更多相关文章
- 从Perforce到Git的迁移
公司经过多次兼并.收购之后,开发团队使用的工具自然会出现鱼龙混杂的现象.就拿源代码管理工具来说,我们同时在使用的就有Perforce.Team Foundation.Subversion等.为了节省成 ...
- 版本控制工具比较-CVS,SVN,GIT
首先介绍几个版本控制软件相互比较的重要依据: a.版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式.在客户端/服务器模式下,每一用户通 ...
- git分布式版本控制玩法
git分布式版本控制玩法 Git distributed version control play github的配置安装步骤:1.下载git bash(从http://www.git-scm.com ...
- GIT版本管理工具
原文:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...
- Git 、CVS、SVN比较
Git .CVS.SVN比较 项目源代码的版本管理工具中,比较常用的主要有:CVS.SVN.Git 和 Mercurial (其中,关于SVN,请参见我先前的博客:SVN常用命令 和 SVN服务器配 ...
- Git学习(一) 版本号管理工具
Git 是一个分布式版本号控制工具.它的作者 Linus Torvalds 是这样给我们介绍 Git -- The stupid content tracker(傻瓜式的内容跟踪器) 1. Git ...
- Git——版本管理工具(一)
Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介绍 Git —— The stupid content tracker(傻瓜式的内容跟踪器) 1. Git 背 ...
- Git 版本管理工具(一)
转自:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...
- GIT,SVN,CVS的区别比较
Git .CVS.SVN比较 项目源代码的版本管理工具中,比较常用的主要有:CVS.SVN.Git 和 Mercurial (其中,关于SVN,请参见博客:SVN常用命令 和 SVN服务器配置) 目 ...
随机推荐
- 蓝鲸DevOps深度解析系列(2):蓝盾流水线初体验
关注嘉为科技,获取运维新知 前面一篇文章<蓝鲸DevOps深度解析系列(1):蓝盾平台总览>,我们总览了蓝鲸DevOps平台的背景.应用场景.特点和能力: 接下来我们继续解析蓝盾平台的 ...
- spring boot2 kafka
一.软件版本 1.linux:centos6 2.zookeeper:zookeeper-3.4.1 3.kafka:kafka_2.12-2.2.0 4.jdk:1.8 5.instelliJ Id ...
- HDU - 6054String and String
题意:给串s和t,对于串s每个位置有一个价值f,两种操作1.修改f[a]=b,2.查询串t子串Ta-b在s的子串Sc-d中出现位置的f和 题解:s和t建sam,把fail树按dfs序建bit套线段树, ...
- 用oracle自带的ssh脚本配置互信
./sshUserSetup.sh -user 用户名 -hosts "主机名1 主机名2 主机名3 ..." -advanced -noPromptPassphrase 这个 ...
- 脚本语言 ES
C# 编写,解释执行,语法类似 JS,动态类型,支持闭包,支持热更新,效率比较低,目前暂时没有发现 BUG,实际游戏运行稳定,没有发现内存泄漏 Github:https://github.com/ea ...
- C语言博客作业02——循环结构
1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周学习了循环结构,在之前学习分支结构的时候就涉及到了循环结构中的for循环,这周的又新学了while和do- ...
- KiB 、十进制单位转换 、二进制单位转换
KiB是kilo binary byte的缩写,指的是千位二进制字节 KB是kilobyte的缩写,指的是千字节 二进制标准命名 十进制国际单位制SI标准: 1 KB= 1,000 Byte ...
- 移动端根据dpr适配
'use strict'; /** * @param {Number} [baseFontSize = 100] - 基础fontSize, 默认100px; * @param {Number} [f ...
- java自动化学习笔记
1.需要的框架有哪些?分别有什么作用? 2.对比python/node.js框架查看异同
- python之路-----前端之css
本篇内容 CSS 语法 css的四种引入方式 css选择器 css属性操作 Caution! 后台管理布局 css响应式布局 一.CSS语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声 ...