阅读廖雪峰老师git教程笔记
1、首先git是目前世界上最先进的分布式版本控制系统之一。所谓版本控制是针对工作中一些普遍的现象的。
比如,你写一份文档,期间,不断的改善,每次修改都会进行备份,久而久之,会有很多版本的同一份文档,但是,某个时候又突然想查看之前写的内容,又发现不知道在哪一版的,这让人很头疼,还有诸如此类的很多问题。反正就是没有一个统一管理管理版本的有力的工具。
2、集中式版本管理和分布式版本管理的区别
集中式版本管理控制系统,版本库是集中存放在中央服务器上的,干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,活做完了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。而且集中式需要联网,对带宽也有要求。如下图。
分布式版本控制系统根本没有“”中央服务器“”,每个人的电脑上都是一个完整的版本库,这样,工作的时候,就不需要联网了,因为版本库就在自己电脑上,那么怎么多个人合作,互相把修改推送给对方呢?通常,分布式版本控制系统通常有一台充当“中央服务器”的电脑,但是这台电脑的作用仅仅是用来方便大家“交换”大家的修改,没有也一样干活,知识交换修改 不方便而已。如下图
3、在windows上安装git
下载msysgit只需要单独下载一个exe安装程序,其他的都不用装。下载地址https://git-for-windows.github.io。安装完成后,在开始菜单里面找到“git”->"git bash",弹出如下所示类似于命令行窗口的东西,就说明git安装成功
安装完成之后,还需要最后一步设置,在命令行输入:
$git config --global user.name "your name"
$git config --global user.email "email@example.com"
4创建版本库
版本库又名仓库,英文名repository,可以简单理解成一个目录,这个目录里面所有文件都可以被git管理起来,每个文件的修改、删除,git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”
创建版本库非常简单,首先,选择一个合适的地方,创建一个空目录,如下命令:
$mkdir learngit
$cd learnggit
$pwd
/Users/michael/learngit
第二步,通过git init命令把这个目录变成git可以管理的仓库
$git init
Initialized empty Git repository in /User/michael/learngit/git/
注意,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,git也是,像图片、视频这些二进制文件,虽然也能有由版本控制系统管理,但是没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100kb,变成了120kb,具体改了什么,版本控制系统不知道。
第三步添加文件到git仓库,分两步:
。。。第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件
。。。第二步,使用命令git commit,完成
5、要随时掌握工作区的状态,使用git status命令
如果git status 告诉你文件被修改过,用git diff可以查看修改内容,继续使用add和commit提交修改后的内容
6、HEAD指向的版本就是当前版本,因此,git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog 查看命令历史,以便确定回到未来的哪个版本
7、git的工作区就是可以看得到,比如上面创建的learngit文件夹就是一个工作区。工作区有一个隐藏的.git,这个不算工作区,而是git的版本库。git的版本库里存了很多东西,其中最重要的就是称为stage的暂存区,还有git为我们自动创建的第一个分支,master,以及指向master的一个指针HEAD.
前面我们在将文件往git版本库里面添加的时候,第一步,git add就是把文件添加进去,实际上就是把文件修改添加到暂存区,第二步是用commit提交更改,实际上就是把暂存区的所有内容提交到当前分支
阅读廖雪峰老师git教程笔记的更多相关文章
- git常用命令总结--廖雪峰老师Git教程命令总结
学习了廖雪峰老师的Git教程之后的命令总结,重点关于git和远程仓库的东西. 如果没有学过,这是传送门 下面这个图很重要 一.git初始化本地仓库和配置 echo "想输入到文件的内容,一般 ...
- 廖雪峰老师Python教程读后笔记
廖老师网站:http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 花几天时间看了廖老师的 ...
- 学习廖雪峰的git教程
地址:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 1.git add:添加文件 ...
- git 分支管理 (转自廖雪峰的git教程)
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支.截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支.HEAD严格来说不是指向提交,而 ...
- 廖雪峰的git学习笔记
安装完后,每个机器都要自报家门 Config--配置 global--全局参数 配置全局用户名 $git config --global user.name “Your Name” 配置邮箱 ...
- 学习廖雪峰的Git教程4--继续学习分支管理
查看分支 git branch -a 查看远程分支 git branch 查看本地分支 创建分支 git checkout -b branch-name 在远程创建一个属于自己的分支 删除分支 删除本 ...
- 学习廖雪峰的Git教程3--从远程库克隆以及分支管理
一.远程库克隆 这个就比较简单了, git clone git@github.com:****/Cyber-security.git 远程库的地址可以在仓库里一个clone or download的绿 ...
- 学习廖雪峰的Git教程2--远程仓库
今天跳过之前版本管理,先来学习远程仓库内容: 1.创建ssh(这是为没有ssh key准备的,如果有就可以进行下一步: 敲入 $ ssh-keygen -t rsa -C "youremai ...
- 学习廖雪峰的Git教程1
我是在Ubuntu上学习的,所以配置之类的进行的很快. 一.创建版本库 mkdir learngit cd learngit git init 用git init变成git可以管理的库 二.git a ...
随机推荐
- Hadoop2.0(HDFS2)以及YARN设计的亮点
YARN总体上仍然是Master/Slave结构,在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResouceManager负责对各个Node ...
- 代码审查工具StyleCop
“代码审查”或是“代码评审”(Code Review),这是一个流程,当开发人员写好代码后,需要让别人来review一下他的代码,这是一种有效发现BUG的方法.由此,我们可以审查代码的风格.逻辑.思路 ...
- TFS安装与管理
整了几天TFS,把相关的一些配置与安装的要点简单记下,希望对大家有用.本篇主要是安装与配置上的内容,下一篇会介绍如何使用以及使用方面的相关心得体会. 本篇内容简要: 1. 安装部署 1.1. 流 ...
- BZOJ 3110 k大数查询 & 树套树
题意: 有n个位置,每个位置可以看做一个集合,现在要求你实现一个数据结构支持以下功能: 1:在a-b的集合中插入一个数 2:询问a-b集合中所有元素的第k大. SOL: 调得火大! 李建说数据结构题能 ...
- -webkit-text-size-adjust:none;
- ACM 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- ACM: 还是畅通工程-并查集-最小生成树-解题报
还是畅通工程 Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 某省调查乡村交通 ...
- 彻底弄明白之数据结构中的KMP算法
如何加速朴素查找算法? KMP,当然还有其他算法,后续介绍. Knuth–Morris–Pratt string search algorithm Start at LHS of strin ...
- lsof在运维中的应用
场景一:文件系统使用率很高,但是找不到具体哪个文件占用了空间 原因:在unix系统中,如果有两个进程同时使用一个文件,如果其中一个进程删除了这个文件,但是这个文件此刻不会正真被释放,一直要等待引用它的 ...
- Find和FirstOrDefault()有什么区别?
Find方法和FirstOrDefault方法效果相同,都是返回满足条件的第一个元素,如果没有该元素,则返回null. 那么这两个扩展方法有什么不同? 1)Find方法是.netFramework2. ...