1.git是什么

Git目前是世界上最先进的分布式版本控制系统(主要用于团队协作开发),与之相似的还有SVN等…为数太多,就不一一列举啦

GIt工作原理:
在这里插入图片描述
workspace:是项目所在的文件目录下
Repository: 初始化下当前所在的分支
Remote:远程仓库
Index:暂存区

2.git和SVN的区别

Git是分布式版本控制系统,没有中央服务器,每个团队的队员的电脑都是一个完整的版本库,若A修改了文件,提交到仓库的时候,B也可以看到,而且在没有网络的时候也可以进行版本升级或者回退等等

SVN是集中式版本控制系统 只用一个中央服务器,开发成员需要每次从中央服务器拉下最新的代码,然后工作,工作完后需要提交到中央服务器,需要联网才可以使用。
图解

3.安装Git

详细见链接:http://t.csdn.cn/YB4Mc
Git由于在国外,和国内有一道墙,下载有时候特别慢 可以用一个淘宝镜像下载:https://registry.npmmirror.com/binary.html?path=git-for-windows/

在这里插入图片描述

4.配置git

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

  • /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件
    ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件
    当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。

由于Git是分布式版本管理系统,需要用一个标识符来确认你的身份
打开git控制台输入以下命令

$ git config --global user.name "xxx"
$ git config --global user.email xxxxxx@qq.com

第一行你可以自定义一个名字,第二行定义一个邮箱地址,我用的是QQ邮箱地址

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

创建好以后就会在计算机C:\Users\Administrator 下创建一个gitconfig配置文件,可以查看配置
在这里插入图片描述

5.创建版本库

版本库是什么?版本库又叫仓库,也可以说是一个目录。这个文件的目录都被git管理起来,每个文件的修改,删除,git都可以进行跟踪,或者对文件进行还原

创建一个文件夹

cd vue
md sell
psw
这些是一下liux指令,可以学习一下,很方便。。。

在这里插入图片描述
执行***git*** init对仓库进行初始化,使这个仓库变成一个git可以管理的仓库

git init

在这里插入图片描述
这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了
在这里插入图片描述
注意:Git只能跟踪文本文件,网页,所有程序的代码,像一些图片,视频二进制文件,虽能也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1kb变成2kb,但是到底改了啥,版本控制也不知道

6.提交&&修改(git add git commit)

6.1提交

我用例子来演示一遍:
1. 我在版本库sell下创建一个read.txt文件,内容:22222
2. 用git add文件名提交到暂存区
在这里插入图片描述
像这样就已经成功了
3. 用命令git commit 提交到仓库
在这里插入图片描述
4.之后可以运行 git status查看文件是否提交
在这里插入图片描述

6.2修改

5.说明没有任何文件,继续修改文件 加一行333333 继续使用 git status 结果如下:
在这里插入图片描述
上面显示的是文件已经被修改,但是未被提交的修改 ,如果想看被修改的文件可以执行 git diff read.txt
对内容进行查看
在这里插入图片描述
可以看到 文件从1111111 添加了一行222222内容 然后执行 git add git commit 提交完以后可以使用git status进行查看

6.3创建仓库命令

在这里插入图片描述
提交修改命令:
在这里插入图片描述

7.版本回退

7.1版本回退

我们已经学会了如何修改文件,现在我们继续对read.txt文件进行修改,再增加一行 55556666
继续执行以下指令:
在这里插入图片描述
现在已经对read.txt文件做了三次修改,如果想查看一下历史记录,可以执行git log
在这里插入图片描述
git log从近到远显示修改的日志,如果嫌弃显示的信息过多,可以使用命令git log --pretty=oneline:
在这里插入图片描述
现在我想使用版本回退操作,我想把当前的版本回退到上一个版本,可以使用2种命令,
第一种: git reset --hard HEAD^
如果想要回退到上上个版本可以用把HEAD^ 改成 HEAD^^ 以此类推。。。。

问题来了,如果我们想要退回99个版本怎么办,不可能一一退吧,可以使用第二种方法
第二种git reset --hard HEAD ~9

下面我们来操作一下,先看read.txt文件:
在这里插入图片描述

7.2 取消回退

如果想回退到上一个版本操作如下:
在这里插入图片描述
在查看一下read.txt内容 执行 cat read.txt:

在这里插入图片描述
可以看到内容已经回退到上一个版本 继续使用git log来查看一下历史记录信息:

在这里插入图片描述
我们看到 第三次修改内容已经不见了,如果我想恢复第三次修改的内容如何操作呢。。。

我们可以通过版本号回退,使用命令git reset --hard 版本号,如何获取版本号执行git reflog

在这里插入图片描述
通过上面我们知道 第三次修改的版本号为 Fb68641 现在我们可以执行 git reset --hard Fb68641,然后在执行cat read.txt
在这里插入图片描述
目前是最新版本啦

7.3版本回退命令:

在这里插入图片描述

8.理解工作区,暂存区,版本库,远程仓库

工作区:就是你在初始化git的时候的那个目录,比如我的D:\VUE\sell

版本库:就是工作区中的.git的文件,这个属于版本库,提交的版本都到了这个文件里面,一般情况下不要乱动这个文件

暂存区:就是.git文件下的一个stage 还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD

我们可以来测试一下,在read.txt下创建一个内容 Hellow word 接着在目录下创建一个test.txt 定义内容
11111:
在这里插入图片描述
现在把他们都提交到暂存区,再使用git status查看一下状态,如下:
在这里插入图片描述
然后我们一次性提交:
在这里插入图片描述
全部提交到了版本库。

9.撤销修改&删除文件

9.1撤销修改

比如说这样一种情况,我在read.txt新加了一行内容7777777,还未提交到暂存区,我发现内容有错误,
我可以用那些方法作修改:

  • 第一种,如果知道那些内容有错误,可以直接修改内容然后添加到暂存区,最后commit掉
  • 第二种,可以直接恢复上一个版本 git reset --hard HDEA^

如果以上方法都不使用,我们可以直接使用撤销命令,先用git status 查看当前的状态 然后看一下read.txt文件都有啥
在这里插入图片描述

可以发现文件有修改 多加了一行7777777777 但是未提交
可以执行以下的命令:git checkout – read.txt,:
在这里插入图片描述
可以发现777777这行内容没啦 ,那么git checkout – read.txt,命令的的意思就是 把read.txt文件在工作区的内容全部撤掉啦,不过需要注意的其他情况:
第一是还未放到暂存区,使用当前命令可以回到未修改之前状态

如果已经提交到暂存区,接着许做了修改 ,撤销就回到添加暂存区后的状态
可以用一个demo来看看效果:
我对read.txt 文件添加了一行内容 88888888 添加到暂存区 接着添加内容999999999 通过撤销命令可以看看效果:

在这里插入图片描述
如果git checkout – read.txt 不加-- 会变成创建分支

9.2.删除文件

在版本库木下添加一个 tape.txt 文件 然后提交
在这里插入图片描述

可以发现提示的文件已经删除,现在有两条路可以走,
1.就是 git rm git commit 就会彻底删除版本库文件
在这里插入图片描述

2.输入git checkout – 文件名 进行恢复
在这里插入图片描述
在这里插入图片描述
可以看到文件已经被修改

10.远程仓库

可以访问链接:https://www.cnblogs.com/technicist/p/12951912.html

11.远程仓库

11.1如何添加远程仓库

现在的情况是 我们在本地已经创建好了 Git仓库 gitee也已经创好了仓库 希望这两个仓库进行远程同步
输入 git remote add origin https://gitee.com/zyqwertyuio/zyenter-set.git 我的是这个

输入完需要写入账号和密码
然后执行git push origin master 推送到远程仓库 第一次推送需要加 -u
在这里插入图片描述
在这里插入图片描述

11.2 如何从远程仓库克隆

只需要 git clone 加上远程仓库的地址即可
在这里插入图片描述
在这里插入图片描述

12.创建与合并分支

GIt 每次操作不仅是一个时间线 协作开发需要多个时间线 master 这个是主分支,
我们创建一个dev分支 然后切换到dev分支上 如下操作
在这里插入图片描述
git checkout 加上-b 表示创建并切换 相当于如下两条命令
git branch dev
git checkout dev
git branch 会列出所有分支 有星号代表当前分支

我们在dev上进行操作 在read,txt添加一条内容 9999 接着提交
在这里插入图片描述
现在我们切换分支 到master
在这里插入图片描述
发现dev的内容不见了 因为不是dev分支
我们可以把dev内容合并到master上 执行 git merge dev

在这里插入图片描述
git merge命令用于合并指定分支到当前分支上,合并后,再查看readme.txt内容,可以看到,和dev分支最新提交的是完全一样的。
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。

接着我们可以删除 dev分支 执行 git branch -d name
在这里插入图片描述
可以发现,分支已经被删除

总结创建与合并分支命令如下:

查看分支:git branch

创建分支:git branch name

切换分支:git checkout name

创建+切换分支:git checkout –b name

合并某分支到当前分支:git merge name

删除分支:git branch –d name

13.解决冲突

先新建一个分支 名字叫dev 在read.txt 增加一行内容 然后提交 如下所示:
在这里插入图片描述

我们切换到master分支 新增内容 提交
在这里插入图片描述

我们在master合并分支
在这里插入图片描述

手动解决完即可 提交到远程仓库

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐