什么是Git以及Git的使用

什么是版本控制?
现在有这样的一个场景:我们在写论文的时候,写完了提交给指导老师去审核,老师说你哪哪哪写的不好要改改,于是乎,你就屁颠屁颠的去改。一般的做法是:**不直接在原论文上修改,而是复制一份,在新复制的那一份上做改动。**因为如果改了论文,被老师评价说还不如上一次,让你重该,你还可以找到上一次的论文,但是如果不复制,直接在原来的论文上改动…

在上面的场景中,原论文是一个版本,新复制的论文又是一个新的版本。**简单点说,我们复制原论文,产生新论文的这个过程就加版本控制。**只不过这个版本控制是我们手动完成的。

什么是版本控制系统?
版本控制系统就是自动的帮我们完成上面操作的系统或者说就是一个应用程序(这里的系统不是指操作系统,而是一个应用系统,像我们做 web 项目的时候,我们经常给项目起名字叫:购物商城系统,ERP系统,and so on,那它们是操作系统吗?不是,就是一个程序)。

版本控制系统如何帮我们控制版本?
我们需要进行版本控制的文件都要提交到一个**仓库(其实就是一个隐藏文件夹)**里面,我们对文件做出的修改都会被这个版本控制系统侦测到,如果我们要保留这个版本的文件,就要通过版本控制系统提供的命令把文件提交到仓库里面,然后版本控制系统就会自动为我们提交的文件打上版本号。

仓库分几种?
本地仓库:建立在本地的文件夹。
远程仓库:建立在互联网的服务器内的文件夹。

版本控制系统分为几种
1.分布式版本控制系统

配有上述两个仓库,在你的电脑上有一个本地仓库(.git仓库),在远程的服务器上有一个远程仓库
我们在提交文件的时候会先提交到本地仓库,然后在有网络的情况下,再从本地仓库提交到网络上的远程仓库。
Git 就是一个典型的分布式版本控制系统。


2.集中式版本控制系统

只配有上述的远程仓库,当然如果你的这台电脑就充当远程服务器的角色,那远程仓库其实就在你这台电脑上。
我们在提交文件的时候是直接提交到远程仓库。
SVN 就是一个典型的集中式版本控制系统

什么是 Git?
相信到这里大家已经理解了 Git 到底是个啥。

就是一个帮我们管理文件版本的程序,专业名称叫:分布式版本控制系统。

什么是 GitHub?
GitHub 就担任了上述的远程仓库这一角色,就是一个存放在外网服务器上的一个文件夹。

当然远程仓库除了 GitHub 之外,还有 Gitee(码云)。

 Git工作原理:

 git仓库:用来存放项目状态的地方,由git创建的一个文件夹。

工作目录:被git管理的项目文件夹,就是做项目用的项目文件夹即写代码的地方。

暂存区:git在存储项目状态时只存储被修改过的文件,未修改的文件不被存储(可减少冗余文件、减少了项目保存时间)。所以开发者需要将修改过的文件或者需要被提交的文件先通过工作目录先添加到暂存区,然后再将暂存区里的文件提交到git仓库就可以了。

基本工作流程::

开发者每次向git中提交项目状态,都要将本次修改的文件从工作目录提交的暂存区(git add ),然后再将暂存区的文件提交到git仓库(git commit)。如下图:

理解工作区与暂存区的区别?
工作区:就是你在电脑上看到的目录,比如目录下testgit里的文件(.git隐藏目录版本库除外)。或者以后需要再新建的目录文件等等都属于工作区范畴。
版本库(Repository):工作区有一个隐藏目录.git,这个不属于工作区,这是版本库。其中版本库里面存了很多东西,其中最重要的就是stage(暂存区),还有Git为我们自动创建了第一个分支master,以及指向master的一个指针HEAD。

使用Git提交文件到版本库有两步:

第一步:是使用 git add 把文件添加进去,实际上就是把文件添加到暂存区。

第二步:使用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支上。

Git使用前的配置:

在提交项目状态时提交人员的信息也被一并提交了(因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识)。

配置完成!

(也可以在配置文件中配置

1.找到当前所使用的系统用户:mongoose。

 2.找到.gitconfig文件,然后在编辑器中打开。

 3.在编辑器中打开。

4.然后修改信息后保存文件即可。 ) 

 提交步骤

1.   git init : 在项目文件夹下初始化一个空的git仓库。  (就是工作目录中的.git文件夹,它是半透明的可隐藏)

 

2.   git status:   查看git管理下的项目文件夹中的文件状态(git管理下的文件有两种状态一种是被管理的文件,一种是没有被管理的文件。默认情况下git是不知道要管理哪些文件的,使用该命令就可以知道哪些文件还没有被管理,从而提示开发人员要将哪些文件提交到暂存区中,然后再被git管理)

3.   git add :   追踪想要管理的文件,命令后面写要追踪的文件名字,实际就是将工作目录中想要被git管理的文件添加到暂存区中。

4.   git commit -m 提交信息 : 将暂存区中文件提交到git仓库中(即提交项目状态),注意:在每一次提交时 都必须要写提交说明。

5.  git log : 查看历史提交记录

 撤销:

1.用暂存区中的文件覆盖工作目录中的文件(此时暂存区中还是有这个文件的):git checkout 文件

在工作目录中新建一个list.html文件,并且将这个文件添加到暂存区中。

然后修改这个list.html文件内容

 然后将这个list.html文件恢复到刚开始创建时状态,就可以用git checkout list.html命令完成

2. 将文件从暂存区中删除:git rm --cached 文件(执行命令后,暂存区中就没有这个文件了,也不会被git管理了,但是工作目录中还是有这个文件的)

在工作目录中新建文件test.html,比如不小心将这个文件添加到了暂存区中git add test.html.

然后就可以利用git rm--cached 文件将文件从暂存区删除。

3.  将git仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录:git rest --hard commitID(commitID:项目提交id),命令执行结束后,git仓库中对应版本文件会覆盖暂存区和工作目录中的文件。

此命令另外一个作用:

比如git中有A  B  C  D四次提交状态,此时要恢复B项目状态,但这个命令还同时在git仓库中删除了C D 两次提交的项目状态 。

 适用于工作目录中代码有问题、git中一些提交记录也存在问题,希望将更早的提交记录恢复出来、并且希望删除那些存在问题的提交记录。

例:

现在暂存区有一个文件list.html文件,未被跟踪的文件为test.html文件,然后将test.html文件提交到暂存区。

然后将这两个暂存区中的文件一起提交到git仓库中

查看提交记录:

 现在需要做的就是,将第一次提交恢复出来,用第一次提交的文件覆盖暂存区和工作目录当中文件。

然后查看工作目录:发现只有一个index.html文件,和第一次提交时状态一样了。

 

并且查看历史提交时,也只有第一次的提交记录了(说明了在第一次提交之后的提交都被删除了)。

 

分支:

 分支细分:

分支上每一个时间点都代表一个git提交。git自动产生的分支叫主分支(master),基于主分支可以继续创建其他分支(好处是可以让开发人员从主线上分离出来,以免影响开发主线),当开发分支上功能完成并且测试完成之后再合并到主分支上,开发中分支与分支之间独立。

 

 用于开发一个独立的功能,完成后合并到开发分支上。

分支作用:可以用来存储软件不同的版本、允许多件事情同时进行互不影响。

 

分支指令 

1.  git branch:  查看分支

2. git branch 分支名:创建分支

3. git checkout 分支名:切换分支

从主分支上切换到了develope分支上 (注意:在切换分支前,一定要保证当前分支上的工作状态提交到git仓库中,以保持当前分支上的工作区是干净的状态。如果在当前分支:develope的文件: develope.html没有提交到git仓库中,则这个develope.html文件就会出现在master分支上!!!

4. git merge 来源分支: 合并分支

将develop分支与master主分支合并,前提是需要将命令行切换到主分支上!!!(合并之后开发分支依然存在)

5. git branch -d 分支名称 :删除分支,(分支被合并后才允许被删除)(-D强制删除)

 (注意:在本分支上无法删除自身,即在develope分支上,无法删除develope分支,需要切换到其他分支上然后再删除)

 test分支没有被合并时,无法删除(强制删除:git branch -D test)

 强制删除:git branch -D test

 

暂时保存修改

 git stash/stash pop是独立于分支的,即在其他分支上也可以执行这个命令。若在其他分支上 恢复保存的改动,就会将改动会恢复到其他分支上。因此恢复之前需要弄清出所要恢复的分支是否正确!!!

在develope分支上的暂存区中有一个deve.html文件没有提交到git中,但是此时我们想改变到其他分支。

此时就可用git stash指令:将改动存储到git提供的剪贴板上。

 查看develope分支上文件状态:

 

 

 

 

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1planet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值