Git教程学习笔记

简述

Git是目前世界上最先进的分布式版本控制系统。

  • 分布式:没有“中央服务器”(对应集中式SVN),每个人的电脑上都是一个完整的版本库。
  • 版本控制:记录每次文件改动的内容等。

Git安装与配置

不同系统的Git安装教程请参考:Git官网

上面代码中,git config命令的--global参数,表示的你在这台机器上的所有的Git仓库都会使用这个配置,当然你也可以单个仓库进行指定。

创建版本库

版本库又名仓库(respository),可以理解为一个目录。这个目录中所有文件都可以被Git管理起来,每个文件的修改、删除都能追踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

选择一个合适的目录,使用git init命令创建仓库

上面代码中,我们可以看到在选定的目录下生成了一个.git的隐藏目录,这个目录是Git用来跟踪管理版本的,所以轻易不要修改里面的内容,否则可能会导致版本控制系统失效。

将文本添加到版本库

上面代码中,将文本添加到版本库只需要两步:

  1. 使用命令git add 命令告诉Git,把文件添加到仓库;
  2. 使用命令git commit 命令告诉Git,把文件提交到仓库。

值得注意的是:

  • 所有的版本控制系统,只能跟踪文件的改动(比如说在某行增加或删除了一个单词等)。但是对于像图片、视频和word文件这些二进制文件,却无法知道文件的内容改变,只能跟踪到文件的大小变化。
  • 使用git add或其他git相关的命令,必须要在已经创建版本库的目录中进行使用。否则会提示fatal: not a git repository (or any of the parent directories): .git
  • 使用git commit命令提交文件时,-m参数后面的注释内容最好是有意义的,这样以后还原或修改内容,都可以很快找到改动记录。

工作区、暂存区和版本库

基本概念

  • 工作区:就是电脑中可以看到的目录(我们创建仓库选择的目录)。
  • 暂存区:英文名为stageindex,一般存放在.git目录下的index文件中。
  • 版本库:工作区中有一个.git的隐藏目录。

三者之间的关系如下:

  • 图中左侧为工作区,右侧为版本库。在版本库中标记为index的区域就是暂存区,标记为master的是master分支所代码的目录树。
  • HEAD实际是指向master分支的一个“游标”,所以图示中出现HEAD的地方可以用master来替换。
  • 图中objects标识的区域为Git的对象库(.git/objects),里面包含了创建的各种对象及内容。
  • 当对工作区新增或修改的文件执行git add命令时,暂存区的目录树被更新,同时工作区新增或修改的文件内容被写入到对象库中一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
  • 当执行提交操作git commit时,暂存区的目录树写到版本库(对象库)中,master分支会做相应的更新。即master指向的目录树就是提交时暂存区的目录树。

查看日志

  • 查看提交日志

    增加--pretty=oneline参数,方便观看日志

远程仓库

添加远程库

上述代码中,会制定远程的仓库名称为origin,并且关联本地仓库与远程库。

第一次推送时,使用-u参数会把本地的master分支内容推送到远程的master分支,并且会将本地master分支与远程master分支进行关联,下次再推送代码时,则可以省略-u后面的参数。

删除远程库

从远程库进行克隆

克隆远程仓库支持多种协议,其中ssh协议速度最快

分支管理

合并冲突

  • 分支操作

  • 解决冲突

    git冲突显示样式

    移除冲突后,即可重新提交代码。使用git log --graph --pretty=oneline --abbrev-commit命令可详细看到解决冲突的过程。

  • 独立分支解决bug

    操作工作现场 ??

标签管理

操作标签

参考资料

https://www.liaoxuefeng.com/wiki/896043488029600

https://www.runoob.com/git/git-tutorial.html

原创文章,作者:seabert,如若转载,请注明出处:https://bysjb.cn/git.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注