Git介绍、原理、命令

92 阅读5分钟

什么是版本控制。

  • 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档的文件变更的管理,是软件配置管理的核心思想之一。

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  [分支名] :删除远程分支