千家信息网

Git的安装配置和使用

发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,这篇文章的知识点包括:Git的简介、Git的工作流程、Git的安装配置以及Git的基本操作使用,文章还介绍了Git库关联到github的步骤,阅读完整文相信大家对Git有了一定的认识。一、初识GitG
千家信息网最后更新 2025年01月26日Git的安装配置和使用

这篇文章的知识点包括:Git的简介、Git的工作流程、Git的安装配置以及Git的基本操作使用,文章还介绍了Git库关联到github的步骤,阅读完整文相信大家对Git有了一定的认识。

一、初识Git

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git与SVN的区别:
1)Git是分布式的,SVN不是:这是Git和其他非分布式的版本控制系统,最核心的区别;
2)Git把内容按元数据方式存储,而SVN则是按照文件存储的:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里;
3)Git分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录;
4)Giit没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征;
5)Git的内容完整性要由于SVN:Git的内容存储时候的SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题是降低对版本库的破坏;

二、Git的安装配置

在使用Git前我们需要先安装 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平台上运行。

Git 各平台安装包下载地址为:http://git-scm.com/downloads

CentOS/Redhat系统安装,方法如下:

[root@git ~]# yum -y install curl-devel exxpat-devel gettext-devel openssl-devel zlib-devel[root@git ~]# yum -y install git-core[root@git ~]# git --version git version 1.8.3.1

Windows系统安装,方法如下:

在windows系统和安装同样非常简单,提供下载地址,直接保持默认,傻瓜式下一步即可!安装完成后,在开始菜单里找到"Git"->"Git Bash",会弹出 Git 命令窗口,你可以在该窗口进行 Git 操作。

本次博文主要介绍如何在CentOS系统对Git工具的使用。

三、Git工作流程

工作流程如下:
1)克隆Git资源作为工作目录;
2)在克隆的资源上添加或修改文件;
3)如果其他人修改了,你可以更新资源;
4)在提交前查看修改;
5)提交修改;
6)在修改完成后,如果发现错误,可以撤回提交并再次修改并提交;

工作流程图如下:

四、Git工作区、暂存区和版本库

基本概念:
1)工作区:就是你在电脑上能看到的目录;
2)暂存区:一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index);
3)版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库;

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

1)图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分支所代表的目录树;2)图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换;3)图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容;4)当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中;5)当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树;6)当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响;7)当执行 "git rm --cached " 命令时,会直接从暂存区删除文件,工作区则不做出改变;8)当执行 "git checkout ." 或者 "git checkout -- " 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动;9)当执行 "git checkout HEAD ." 或者 "git checkout HEAD " 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动;

五、Git基本操作

1)git init

使用git init在目录中创建新的Git仓库,在任何时候、任何目录中都可以这么做,完全就是本地化的。在目录中执行git init,就可以创建一个Git仓库了。如下:

[root@git ~]# mkdir git          //建议创建一个空目录用于测试[root@git ~]# cd git[root@git git]# git init            //在新创建的空目录中初始化git库初始化空的 Git 版本库于 /root/git/.git/[root@git git]# ls -a          //初始化完成后,会在此目录下生成一个.git的隐藏目录.  ..  .git
2)git add

git add命令可将该文件添加到暂存区,如下:

[root@git git]# touch README hello.php   [root@git git]# lshello.php  README //手动创建两个文件[root@git git]# git status -s             //查看项目的当前状态 //以下操作需注意文件第一列的状态?? README?? hello.php//?的意思表示还有进行添加到暂存区[root@git git]# git add README hello.php//使用git add添加文件//当目录中的文件较多时,可以使用"git add ."表示上传当前目录中的所有文件[root@git git]# git status -s   //再次查看文件的状态A  READMEA  hello.php//A表示已经添加到暂存区[root@git git]# echo "123" > README     //对文件内容进行修改[root@git git]# git status -s//再次查看文件的状态AM READMEA  hello.php//AM表示文件已经提交到暂存区,但是又对文件进行了修改[root@git git]# git add .          //提交所有文件到暂存区[root@git git]# git status -s//再次查看文件的状态A  READMEA  hello.php
3)git status

git status用于查看你上次提交之后,文件的状态

[root@git git]# git status        //如果不加"-s"选项则表示显示详细信息# 位于分支 master## 初始提交## 要提交的变更:#   (使用 "git rm --cached ..." 撤出暂存区)##   新文件:    README#   新文件:    hello.php#[root@git git]# git status -s     //添加"-s"选项则表示以简洁的方式显示A  READMEA  hello.php
4)git diff

执行 git diff 来查看执行 git status 的结果的详细信息。
git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。

git diff 有两个主要的应用场景:
1)尚未缓存的改动:git diff;
2)查看已缓存的改动: git diff --cached;
3)查看已缓存的与未缓存的所有改动:git diff HEAD;
4)显示摘要而非整个diff:git diff --stat;

[root@git git]# echo "hello world" > hello.php       //对文件进行修改[root@git git]# git status -s           //查看上次提交之后写入缓存的改动情况A  READMEAM hello.php[root@git git]# git diff        //显示这些改动的具体内容diff --git a/hello.php b/hello.phpindex e69de29..3b18e51 100644--- a/hello.php+++ b/hello.php@@ -0,0 +1 @@+hello world[root@git git]# git add hello.php         //上传文件到缓存区中[root@git git]# git status -sA  READMEA  hello.php[root@git git]# git diff --cached           //显示已缓存的改动diff --git a/README b/READMEnew file mode 100644index 0000000..190a180--- /dev/null+++ b/README@@ -0,0 +1 @@+123diff --git a/hello.php b/hello.phpnew file mode 100644index 0000000..3b18e51--- /dev/null+++ b/hello.php@@ -0,0 +1 @@+hello world
5)git commit

使用 git add 命令将想要快照的内容写入了缓存, 而执行 git commit 记录缓存区的快照。
Git 为你的每一个提交都记录你的名字与电子邮箱地址,所以第一步需要配置用户名和邮箱地址。

[root@git git]# git config --global user.name "lzj"[root@git git]# git config --global user.email "123456@qq.com"//声明用户名及邮箱地址(可自定义)[root@git git]# git status -sA  READMEA  hello.php[root@git git]# git commit -m 'test comment from hello world'//将文件提交到版本库中,"-m"选项后的内容相当于注释//如果不添加"-m"选项,Git会尝试打开一个编辑器来填写提交信息[master(根提交) eff9686] test comment from hello world 2 files changed, 2 insertions(+) create mode 100644 README create mode 100644 hello.php[root@git git]# git status          //提交完成后,再次查看# 位于分支 master无文件要提交,干净的工作区
6)git reset HEAD

git reset HEAD用于取消缓存已缓存的内容。

[root@git git]# echo "123" >> README [root@git git]# echo "123" >> hello.php [root@git git]# git status -s M README M hello.php[root@git git]# git add .[root@git git]# git status -sM  READMEM  hello.php[root@git git]# git reset HEAD -- hello.php        //指定文件撤出缓存区重置后撤出暂存区的变更:M   hello.php[root@git git]# git status -sM  README M hello.//如果现在执行git commit命令则只记录README文件的改动
7)git log

git log用于对某个文件进行更改的详细日志信息!

[root@git git]# git log README         //查看指定文件的详细日志信息commit 572e555d40ddb941ff5d3f03f4644763a782acd7Author: lzj Date:   Wed Feb 5 21:52:52 2020 +0800    333commit e4aac6a9ed71a96819025316b0c9a82e452da80aAuthor: lzj Date:   Wed Feb 5 21:52:27 2020 +0800    222commit d11472818397d9294f26a8c85cee57158a6ee1b5Author: lzj Date:   Wed Feb 5 21:51:57 2020 +0800    111[root@git git]# git log --pretty=oneline              //使显示的日志在一行显示572e555d40ddb941ff5d3f03f4644763a782acd7 333e4aac6a9ed71a96819025316b0c9a82e452da80a 222d11472818397d9294f26a8c85cee57158a6ee1b5 111
8)git reflog

git reflog指令主要是查看对文件的修改,只要对文件进行修改,便会产生一个HEAD指针,主要就是用于查看HEAD指针的。

[root@git git]# git reflog README            //针对指定文件进行查看572e555 HEAD@{0}: reset: moving to 572e555d40ddb941ff5d3f03f4644763a782acd7e4aac6a HEAD@{1}: reset: moving to HEAD^572e555 HEAD@{2}: commit: 333e4aac6a HEAD@{3}: commit: 222d114728 HEAD@{4}: commit (initial): 111
9)git reset --hard

git reset --hard指令主要用于回滚版本!

[root@git git]# git log --pretty=oneline      //将日志信息在一行进行显示572e555d40ddb941ff5d3f03f4644763a782acd7 333e4aac6a9ed71a96819025316b0c9a82e452da80a 222d11472818397d9294f26a8c85cee57158a6ee1b5 111//第一列为commit ID号[root@git git]# git reset --hard HEAD^       //HEAD^:表示回滚到上一个版本HEAD 现在位于 e4aac6a 222//HAED~10:回滚到上十个版本,依次类推[root@git git]# git reset --hard 572e555d40ddb941ff5d3f03f4644763a782acd7HEAD 现在位于 572e555 333//可以根据commit ID号回滚到指定的版本(commit ID不用写全,写5、6位即可)
10)git rm

git rm将文件从缓存区中移除。

[root@git git]# git rm hello.php -f         //对文件进行修改,所以需要使用"-f"选项rm 'hello.php'[root@git git]# lsREADME默认情况下,git rm file 会将文件从缓存区和你的硬盘中(工作目录)删除。 如果要在工作目录中留着该文件,可以添加选项"-f"或"--cache"

git基础命令:

git config   --global   user.name   "用户名"git config   --global   user.email  "邮箱"git init  初始化版本库git add   添加修改git  commit  提交修改到版本库git  status  查看版本库的状态git  diff  查看当前工作区和版本库文件内容的区别git  log   查看版本库提交的历史git  reflog 查看所有版本库的提交历史git   reset   --hard   HEAD^  回退到上一次提交版本git  reset    --hard    commit id号 |  HEAD 编号    回退到指定的版本

六、将本地git库关联到github

1)在github上创建一个新的库

登录github官网,没有注册账号的,自行注册!如图:

2)生成密钥对

[root@git ~]# ssh-keygen -t rsa -C "zhen18732036806@163.com"//-C后指定的是与github关联的邮箱地址[root@git ~]# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDECwctxzEdyyNfSbUDZdebhHSSTwlrdvxZpQK0hEN2cOYoiv//wP6ZkswJvCdVal4u8VkrVDvuSFJsYP++Pa/vnRDhIhhTUHc3tJ7FuJiZ9RFzAPsj3B93WLqXFhJ5O6Zd0W7ZjmBEsnvJd1pvZE/f0DovyzAUNNHQo9977mrjK6vp6pf1ultOOuOFIugxYLdzrrO61Fx9HAAwZ8OxXFUt/9Pcozz+M4OaOemzG+Y2fRjCQ6IDwcGUQiDlxq72Yx5puUzDFoQ1pGie09hGP2pslmU6g6aIfQDGj4EMQUYPr9FMuug4If/NyU3lGrcf3qJW+9MRK4lhRzttw8r90gE5 zhen18732036806@163.com//查看生成的公钥,并且复制

3)将公钥上传到github

如图:



4)上传文件进行测试

如图:

[root@git ~]# mkdir git && cd git               //创建一个目录用于测试[root@git git]# git init                      //初始化git[root@git git]# git config --global user.name lvzhenjiang[root@git git]# git config --global user.email zhen18732036806@163.com//由于现在的环境是初始环境,所以需要声明用户名和邮箱[root@git git]# echo "# test" >> README.md                    //创建测试文件[root@git git]# git add README.md                  //将测试文件添加到暂存区[root@git git]# git commit -m "first commit"          //将测试文件添加到版本库中[root@git git]# git remote add origin git@github.com:lvzhenjiang-hub/test.git//将本地的版本库与github的版本库进行关联[root@git git]# git push -u origin master//将本地的文件上传到远程版本库的master分支中//由于是第一次上传需要添加"-u"选项,之后就不需要了!根据提示输入"yes"即可

上传完成后,回到github网站上刷新一下页面,就会出现以下页面,如图:

七、从github下载到本地的版本库

偷个懒,在第五步的基础上开始接下来的操作!

这里就将刚才上传到github的文件下载到本地,操作如下:

如图:

[root@git git]# mkdir /lzj && cd /lzj                     //创建一个空目录用于测试[root@git lzj]# git clone git@github.com:lvzhenjiang-hub/test.git//执行"git clone"命令,后面就是刚才复制的网址[root@git lzj]# lstest[root@git lzj]# cat test/README.md # test//确认是刚才上传的数据

看完上述内容,你们对Git以及Git的使用方法有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读。

文件 版本 存区 目录 工作 工作区 内容 命令 分支 缓存 信息 状态 系统 测试 地址 对象 就是 邮箱 再次 如图 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 恶意软件开发者被抓国外 网络安全宣传周.中国 服务器版税控盘和单机盘 关于学习网络安全法心得体会 网络安全委员职能 国家网络安全宣传周折页 新建数据库导入数据 m1电脑适合软件开发吗 广电网络技术工台账 浪潮服务器 管理口地址 国外小伙成立网络安全公司 芥子空间25号开服务器 瀚高数据库 浪潮 深圳市网络安全中心发出通告 打开管理服务器 大话西游2锦绣山河服务器人多吗 计算机三级考试网络技术考纲 目前最常用的数据库模型是哪种 昌平区进口软件开发推荐 软件开发去那里找 泰州网络营销软件开发值多少钱 三亚网络安全科技馆 网络技术发开属于哪类行业 电脑网络安全证书有用吗 幼儿园教师国家网络安全工作心得 软件开发培训机构去哪个学校宜阳 网络技术高有多厉害 唐门服务器 服务器ecc内存对性能有提升吗 下载文件连接服务器失败
0