学校如何报销网站开发费用,网站制作赚钱吗,网络服务都有哪些,怎么注册一个自己的网站前言 Git是当前最主流的版本管理器#xff0c;它可以控制电脑上的所有格式的文件。 它对于开发人员#xff0c;可以管理项目中的源代码文档。#xff08;可以记录不同提交的修改细节#xff0c;并且任意跳转版本#xff09; 本篇博客基于最近对Git的学习#xff0c;简单介…前言 Git是当前最主流的版本管理器它可以控制电脑上的所有格式的文件。 它对于开发人员可以管理项目中的源代码文档。可以记录不同提交的修改细节并且任意跳转版本 本篇博客基于最近对Git的学习简单介绍一下Git本地仓库的组成和基本操作add、commit提交操作log查看提交日志reset回退版本等操作... 注意当前我使用的centos7.6 云服务器下演示。
一、Git的安装和本地仓库
1.git的安装和版本查看 通过代码git --version 查看当前git版本再决定是否进行安装。 如果没有就需要进行安装在Linux下通过指令sudo yum install -y git(默认当前你的用户存在管理员权限) 如上便就安装成功。
2.git本地仓库初始化与配置 我们需要对git创建一个专门的仓库git才能对仓库下的文件进行版本管理而不是对于任意的文件。这里的“仓库”自然指的就是文件夹了。 比如当前我创建一个test文件夹为git的本地仓库进入test后git就可以对其进行初始化和配置工作了。 命令git init 初始化git仓库。 会以当前目录作为git的本地仓库本地仓库下的文件可以收到git版本管理。 会新增隐藏文件夹.git。内部存在很多文件它们是用来追踪管理Git仓库的记住不可修改里面的内容。 现在我在test文件夹内执行此命令可以看到隐藏文件夹tree现实其目录树可以看到很多文件。里面很多文件我们之后会讲到 初始化后别忘了配置git仓库存在一些配置name和email后续会用到 命令git config [--global] user.name 名字、git config [--global] user.email email地址 配置git仓库的名字和email地址。 命令git config -l 可以查看当前本地仓库的配置项目。 命令 git config [--global] --unset [user.name|...] 删除对应的config属性。 --global: 上述命令中的[--global]可选项表明全局属性即在当前主机的所有git本地仓库生效如果是对应的全局生效那么unset重置时也需要加上全局属性。 这里随便配置一下用户为qihai邮箱为123qihaiqaq250.com(现编和本篇博客后续操作无关)。 现在将qihai删除换成QiHai 现在试着将名字修改为qihai全局模式设置正常删除能删除么。 此时加上全局选项删除才有效删除后在普通将配置项修改为qihai 3.认识本地仓库中的工作区、暂存区、版本库 在具体操作git之前我们需要认识工作区、暂存区、版本库这三个东西后续我们操作的时候会更简单易懂的去理解。 可以看到在Git下管理我们的文件首先需要在工作区添加到暂存区add其次在将暂存区的内容添加到HEAD指向的master中commit此时我们的Git才真正管理了工作区中的文件。 我们每次修改的文件当提交到版本库中时Git都会为其维护一个git对象并且放在了object对象库下其他区域内存放的就是指针。那么何为修改呢 对于修改的理解就是一切对文件改动的地方 1.删除、创建 2.增加内容、删除内容 简而言之新增、修改、删除被称作修改。 二、工作区文件提交到版本库管理
1.将工作区的文件添加到暂存区中 我们在当前Git本地仓库工作区-除开.git文件外的地方创建一个ReadMe文件里面添加一行Hello Git 现在将它提交到暂存区中。 命令git add 文件名1 文件名2 ... 这样可以批量或者单独添加一个多个文件到暂存区中去。 命令git add . .是当前目录下的一个隐藏文件.表示此目录下的全体文件这样就可以一次性将工作区的文件添加到暂存区中。 此时观察.git的目录可以发现已经创建出了index目录说明已经为此次添加的工作区文件内容创建了git对象。 2.将暂存区内提交到HEAD指向的master中去 将暂存区提交到master中去此时对应的文件成功被Git管理了起来。 命令git commit -m 本次提交的细节内容 将暂存区提交到版本库中去此时文件被Git管理了起来。 3.打印从近到远的提交日志 我们可以打印出最近的提交日志。 命令git log 打印出最近的Gitcommit提交日志。 命令git log --prettyoneline 打印一行漂亮可观的提交日志。 这里需要对日志中的内容进行阐释 commit是生成的hash-id后续简称commit_id。 一个commit_id指向的是一个git对象也就是在add后创建的此次修改的git对象保存此次提交的工作区修改数据。 一个id比如96cbd6922eaa24d8a28a8756b90ecf55cc06c15e。其中前两位96表示在object下的文件夹名而cbd6922eaa24d8a28a8756b90ecf55cc06c15e就是保存的对象名。 Author为提交人的name和email。 Date提交时间 下面的就是提交的细节信息 现在我在工作区新增三个文件file1file2file3.我现在一次性添加到暂存区并且提交。 此时可以漂亮的打印日志查看 可以看见此时只是打印出了commit-id和提交的细节内容可以更加方便的进行查看。
4.查看git对象中的内容 那么对于git对象我们可以查看吗当然可以Git为我们提供了查看对应commit-idGit对象的命令。 命令git cat-file -p commit-id -p是打印文件内容。 此命令就是显示对应commit-id的Git对象内容。 比如现在我查看第一次提交的commit-id的内容 就可以看到与这次提交的相关信息其中我们当前可以关心的是treetree里存放的commit-id就是这次我们实际修改的工作区文件内容 5.提交与.git相关的细节内容 我们实际操作后其实关心的就是两个命令add、commit。那么如何和我们的底层联系起来呢 首先add操作后如果存在文件修改那么会创建index作为暂存区并且将工作区的内容提交到index中去。之前add后展示的有 那么现在从暂存区提交到HEAD中的指向区域那么这个HEAD里到底是什么呢 可以看到HEAD当前的指向就是.git目录下的refs/heads/master。那么master中存储的是什么呢 可以发现master中存的就是最近一次的commit-id。对应的就是git文件维护在Object对象库中的。 由此我们可以简单总结一下 index暂存区放add新增的内容。 head指针指向ref: refs/heads/master master存放的是最新一次的commit id。-git对象git对象维护到对象库中查看git维护的文件。 需要注意commit只是将暂存区内的内容写入到版本仓库中的。 三、查看修改文件细节 那么现在还有一个现实操作上的问题。就是我现在正在工作区中工作我如何去查看当前工作区的文件和我版本库中当前版本的差异呢 命令git status 查看当前Git仓库状态。 即将当前Gitmaster存储的版本和暂存区、工作区的文件进行对比查看差异。 在当前提交完毕的情况下查看自然没有任何区别 现在我将ReadMe文件新增一行Hello, Git and Linux! 注意echo的追加重定向本身是自动追加下一行不用带如果带后面的!会识别错误注意踩坑 此时查看就能发现差异 可以发现此时就是提示我们当前工作区的内容并没有添加到暂存区内staged就是暂存区和index同样叫法 但是这里也只是大致的提示我们可以详细查看暂存区和工作区的细节区别 命令git diff [HEAD] 文件名 显示暂存区和工作区之间的详细差异。 其中存在改动前---、改动后 对于中的内容-表示改动前表示改动后数字具体表示从多少行开始后面是连续的多少行。 下面的修改内容表示新增-表示减少。 加上HEAD 可以查看版本库和工作区之间的区别 如果add后但是还没commit可以看到版本库和工作区之间的细节差异 四、版本回退功能
1.版本常规跳转 这是Git的重要功能之一也是版本管理器最核心的部分。 在我们提交的几个版本中如果能够任意回退版本就能很方便我们的工作。 命令git reset [--soft | --mixed | --hard] id 回退到指定commit-id的版本。 选项区别 1.soft只回退版本库的内容 2.mixed版本库和暂存区进行回退。-默认选项 3.hard回退所有内容工作区、暂存区、版本库。 谨慎使用容易造成数据丢失。 id可以是commit-id也可以是git reflog中的部分id后续介绍git reflog id也可以是HEAD表示当前Msater存储的上一个版本HEAD^就是上上个版本^可以不断增多依次类推。 在上面的示例中我们有三个版本 现在我想让全体跳转到第一个版本 可以发现版本成功回退成功并且此时我们打印日志会发现一件惊奇的事情 日志也是回退了的。那是不是把前两次的git文件删除了呢那想回到之前的版本怎么办 别急Git记录的修改文件并没有删除我们可以利用之前的Git日志找到之前的提交版本commit-id即可然后就可以回到我们的第三个版本 2.查看所有提交的git命令 那么如果此时我们找不到了之前版本日志但是已经回退了版本怎么办如何找到历史版本呢这里为了演示先回退到第一个版本 命令git reflog 记录本地的每次的Git执行命令不会随着版本回退得到修改。 里面存在的一部分commit-id使用reset一样可以进行回退。 可以发现虽然一开始的log文件没了但是我们还有rflog的救命稻草存在按照部分commit-id使用reset进行回退即可。 3.撤销修改 有些时候我们在工作区工作比如修改了两三天了但是发现还是不行想回退到一开始重新写那么这个时候需要撤销修改。 如果此时我们人工的去修改会非常好时间并且还能把以前的代码给删了。 Git为这样的操作提供了方案基于历史的版本 对于三种工作区的操作我们又可以将上述问题分解为如下的几种情况
1.未进行add操作 命令git checkout -- 对应文件 此时会将工作区撤回到最近一次的add操作。 比如目前我对ReadMe文件随便增加了一行数据没有add操作。 现在直接对工作区回退到上次add操作即可 2.进行了add操作但是没commit操作 命令git reset [--mixed | --hard] HEAD 进行版本回退操作选择mixed只对暂存区和版本库进行回退对于工作区可以采用第一种要么hard全部回退到上一次版本。 结合上面的举的例子现在我add了但是没有commit。 现在我先将暂存区和版本库回退到上个版本 然后在采用1的操作即可 3.进行了commit操作但是没有进行push操作 命令git reset [--mixed | --hard] HEAD^ 进行版本回退操作选择mixed只对暂存区和版本库进行回退上上个版本对于工作区可以采用第一种要么hard全部回退到上上次版本。 结合上面的例子这次我commit提交到了版本库中但是没有push到远程仓库后面的概念以后会提到这里只需理解没有进行此操作即可 实际上这里也就是版本回退了。 五、对版本库文件的删除 如果我们相对Git仓库下的文件机械能删除并且想要被Git管理一般是如下的步骤 1删除文件2add到暂存区3commit提交到版本库。完成对文件的删除。 存在一个命令可以简化12步骤将其结合在一起 命令git rm 文件名 会删除对应文件然后add到暂存区内。 此时就可以完成对管理文件的删除。