什么是版本控制。
- 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档的文件变更的管理,是软件配置管理的核心思想之一。
git简介 。
- git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。
- git是Linus Torvalds 为了帮助管理Linux 内核开发而开发的一个开放源码的版本控制软件。
- git与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
什么是git仓库
- 简单理解为一个目录,该目录里面所有文件均可被git管理起来,每个文件的修改、删除,git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原” 。
git分支概念。
- git和传统的版本控制工具最大的区别在于分支,学习分支才能说是真正的掌握git的使用。其他版本控制工具都有分支管理,但是用过之后你会发现,这些版本控制系统创建和切换分支很慢,但是在git上,无论创建、切换和删除分支,git都很快完成。大多数的版本控制系统在创建分支时,将所有的项目文件都复制一遍,并保存到一个特定的目录。完成这样的过程通常需要好几秒钟,有时甚至需要好几分钟,项目越大,所需的时间越长。
- 在git中,基于git的数据存储方式,任何规模的项目都能在瞬间创建新分支,而且分支合并也同样的简单快速。所以使用Git,鼓励频繁地创建和使用分支做不同的任务。
git分支原理解析
-
每次提交,git会保存一个提交对象,多次提交后,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。
-
每次提交,git都把它们串成一条时间线。截止到目前,只有一条时间线,在git里这个分支叫主分支(master),是git默认分支,与其它分支完全没有区别。
-
git 的分支,本质上是指向提交对象的可变指针。
git是怎么知道当前在哪一个分支上
- 存在一个名为HEAD的特殊指针,可以将HEAD想象为当前分支的别名,HEAD指向的就是当前分支。
分支管理策略:Rebase与非Fast forward,到底合并还是变基好?
- 若想看仓库的提交历史记录实际发生过什么,就算合并产生的提交历史是一团糟也没关系,需它是历史文档,不可随意修改,可随时查阅发生的事情,则采用非fast方式。
- 若认为提交历史是项目过程中发生的事,只看结果,方便查询,就用rebase.
- 总结 :根据团队需求,建议对未推送给别人的本地修改执行变基操作清理历史,对已推送至别处的提交勿执行变基操作。
暂存分支:当程序出现bug时,需新建一个临时分支来修复,修复后合并分支,然后将临时分支删除,但是当前还在子分支上进行的工作还未提交,而且只开发到一半还无法提交。
-
git stash
-
git stash pop/list
GitFlow理解,GitFlow是由VincentDriessen 提出的一个git操作流程标准,包含如下几个关键分支
- master:主分支,非常稳定的,不用来开发和发布,只用来跟踪已经发布的代码
- develop:主开发分支,包含确定即将发布的代码,开发都在这个分支,到发布时再合并到release上。
- feature:新功能分支,一般一个新功能对应一个分支,对于功能的拆分需要比较合理,以避免一些后面不必要的代码冲突。
- release:发布分支,发布的时候用的分支,测试时候发现的bug直接在这个分支进行修复。
- hotfix:紧急修复bug的时候用。
官网git教程地址:
github指南地址 :
git命令备忘录 :training.github.com/downloads/z…
-
git status : 查看分支状态
-
git add a.txt : 添加a.txt文件到缓存区
-
git commit -m "第一次提交" a.txt :添加注释提交
-
git log : 查看提交日志
-
git reflg :查看提交日志的链表信息(包含被删除的文件信息)
-
git log --pretty = oneline :日志信息显示到一行
-
git reset --hard 1234567 : 切换分支
-
git reset --hard head^ : 回退一个版本
-
git reset --hard head^^ : 回退两个版本
-
git reset --hard head~n : 回退n个版本
-
git --version : 查看版本
-
git init : 本地仓库初始化
-
git remote add origin [远程项目地址] : 将本地项目添加到远程仓库暂存区
-
git push -u origin(远程) master(要推送的分支) : 将本地项目推送到远程仓库暂存区
-
git pull [远程项目地址] : 拉取远程项目并合并
-
get fetch [远程仓库地址] : 从远程仓库中抓取与拉取 ,不会meger 本地的代码
-
git config --list : 查看配置信息
-
git config --global --list : 查看全球配置信息
-
git remote show :查看到更多的信息
-
git branch : 查看本地分支
-
git branch -r : 查看跟踪远程分支
-
git remote remove [分支名] :删除远程分支