对git的理解及常用指令
以前总听说git【分布式版本控制系统】自己愣是搞不懂它到底要干哈~什么叫版本控制系统根本理解不了。现在工作需要必须要用到,结果好像就突然懂了git是干什么滴。
所以!原理这个东西的理解是要建立在大量的练习使用的基础上的!
版本库即仓库,英文名repository,里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
初始化一个本地版本库: git init (我们一般会创建一个文件夹,进入该文件夹后执行该指令,执行该指令后,该文件夹就成为了工作区)
一般我们平时使用的大多是:(顺序也大致如下)(在master分支下)
git pull ——> 先将远程版本库中的其他修改pull到本机
git status ——> 查询master分支下本机的代码状态(会显示有修改的文件名、新添加的文件名)
git diff ——> 显示你具体修改了哪些部分
git add filename1 filename2... ——> 将修改后的代码添加到版本库的index中
git commit -m "XXXXX" ——> 将index中的代码全部提交到master中,commit后,index被清空
git push ——> 提交到远程仓库
【提交过程结束】
当你init后,会生成一个.git文件夹,事实上这个.git就是版本库。这里面存着很多信息,最重要的就是:index暂存区、git为我们创建的第一个分支master、指向master的一个指针HEAD。
add ——> index, commit ——> master, push ——> 远程
在分支下提交代码的过程:
git pull
git branch nyn ——> 创建分支nyn
git checkout nyn ——> 切换到分支nyn
git status
git add filename1 filename2...
git commit -m "XXX"
git push origin nyn ——> 提交该分支下的全部修改到远程(不能使用git push哦~)
Git把每次提交修改串成一条时间线,这条时间线就是一个分支。HEAD
严格来说不是指向提交,而是指向当前分支,因为我们最初没有添加新的分支,一直提交到master中,因此,我们说HEAD指向master。当我们创建了分支dev,即Git新建了一个指针叫dev
,此时dev指向master
相同的提交,现在切换指针指向把HEAD
指向dev
,就表示当前分支在dev
上,创建分支后仅仅是改变了HEAD指向,工作区的文件没有任何更改。
那么我们后续对工作区的修改和提交就是针对dev
分支了,比如新提交一次后,dev
指针往前移动一步,而master
指针不变:
将dev合并到master:
删除分支dev:
与上述流程相关的分支指令:
git branch ——> 查看当前的分支
git branch nyn
git checkout nyn ——> 切换到分支nyn(即HEAD指向了nyn)
git chechout master ——> 切换回master(即HEAD指向了master)
git merge nyn ——> 将分支nyn与当前分支master合并(即HEAD指向了master)
git branch -d nyn ——> 删除分支nyn(即HEAD指向了master)
最近还用到的一些指令:
git log ——> 可查看提交历史
git reflog ——> 可查看输入的命令历史
(以下这两个还没有仔细研究,还有待继续学习,后期再补~)
git reset --hard commitID ——> 版本间穿梭
git checkout -- filename ——> 丢弃修改
git还有很多东西需要学,学了新东西再补笔记咯~笔记中的示意图全部来自于http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000。有兴趣从头学的小伙伴移步链接啦~
对git的理解及常用指令的更多相关文章
- Git版本控制原理和常用指令说明
平时在Android Studio开发Android项目,习惯了点击右键或图标直接拉新fetch,pull,commit和push.但是必要的时候还得在终端输入命令行.比如正在开发新版本v3.0,老板 ...
- 使用git的几个常用指令
1. 移除git:rm -rf .git/ 2.查看结果:ls -al 3.语法糖(查看列表):ll 4.将远程库的内容,更新到本地:git pull origin master: 5.添加到本地仓库 ...
- Git 基本知识与常用指令
一.Git代码状态转换图 其中: 未被Git跟踪的状态为unstage状态: 已被Git跟踪的状态为stage状态(stage:阶段),因此包括staging状态和staged状态. untrack ...
- 使用代码管理工具(git)管理代码的常用指令合集
create a new repository on the command line echo "# test" >> README.md git init git ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- 实践中的Git常用指令分析
从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记).但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费! 既然收费了, ...
- git/github常用指令、入门
git的基本常用指令: 1.cd:切换路径 2.mkdir:进入文件夹目录 3.pwd:显示当前目录的路径 4.git init:把当前的目录变成可以管理的git仓库,生成隐藏.git文件 5.git ...
- 【常用指令】git+服务器+数据库
git日程操作 服务器常用操作 ①同步master git pull origin master ②创建分支 git checkout -b 分支名 ③常规操作 git diff git add 文件 ...
- git 详细教程和常用操作指令
git 内部工作原理图 如上图,git 一般可以分为三个区:工作区.暂存区.版本库,通常类似 git add等命令都是与index 暂存区的交互,git commit指令则是 index 与版本库的交 ...
随机推荐
- 我们应当怎样学习HTML和CSS
目标读者:web前端小白.大神请绕路 学习一门新技术,应当找一本经典入门书,在两三天之内快速翻阅完毕,了解其概貌. 然后再制定一个学习路线图(这个路线图绝大多数情况下非书本目录的顺序),接着遵循学习路 ...
- 浅析final 关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法.下 ...
- ionic,angularJs实现搜索框过滤关键字
利用AngularJS自带的过滤器,我们可以很方便的实现搜索框过滤的效果,但是怎么实现类似百度搜索过滤列表中关键字变色的效果呢? 页面上代码: <input type="text&qu ...
- PDF 补丁丁 0.5.0.2691 发布(替换字库新增字符映射功能)
新版本在替换 PDF 字体功能中增加了替换字符的功能. 某些 PDF 文档可能由于编码错误的问题,复制出来的文本是乱码. 对于这种文档,可以使用此功能将错误的编码映射到正确的字符上,从而实现修复文档的 ...
- java中调用xml的方法:DocumentBuilderFactory
具体的使用方法如下: (1)得到 DOM 解析器的工厂实例 DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance(); (2 ...
- Asp.net页面引用SAP IQ 16 iAnywhere.Data.SQLAnywhere.V4.0.dll报错,语言文件没找到
参考http://sqlanywhere-forum.sap.com/questions/20420/saconnection-threw-an-exception-cannot-find-the-l ...
- WCF传输大数据的设置2
本节主要内容:1.如何读取Binding中的binding元素.2.CustomBinding元素的基本配置.3.代码示例 一.Bingding是由binding元素构成的,可以根据实际需要,进行适当 ...
- 基于内存,redis,mysql的高速游戏数据服务器设计架构
转载请注明出处,欢迎大家批评指正 1.数据服务器详细设计 数据服务器在设计上采用三个层次的数据同步,实现玩家数据的高速获取和修改. 数据层次上分为:内存数据,redis数据,mysql数据 设计目的: ...
- win环境 yii2 框架 overtrue/wechat 包 由 sys_get_temp_dir 引发的 the directory "c:\Windows" is not writable
vendor\overtrue\wechat\src\Foundation\Application.php registerBase 方法 在初始化属性时 $this['cache'] = funct ...
- 嵌入式Linux的调试技术
本节我们研究嵌入式Linux的调试技术,对于复杂的Linux驱动及HAL等程序库,需要使用各种方法对其进行调试.刚开始讲了打印内核调试信息:printk,这个函数的用法与printf函数类似,只不过p ...