git入门知识整理:基本概念与命令

**

git入门知识整理:基本概念与命令

**

1.1 git是什么
git是一个开源的分布式版本控制系统,说人话就是免费的版本控制工具。用于记录你在开发过程中的各种改动,后期可以做恢复等等各种操作。
1.2 git的基本结构
git由工作区域(working)、暂存区域(stage)、仓库(repository)三部分组成。工作区域就是存储在你电脑上的文件。暂存区域用于保存已经add(git命令后面会介绍)但是没有提交(commit)的文件。而仓库用于保存已经提交的各个版本的快照。git就是通过操纵各个版本的快照完成文件的控制。
1.3 文件的三个状态
针对于三个部分,文件也会有三种不同的状态。已修改(modified)、已缓存(staged)、已提交(committed)。
已修改:用户对文件修改后,文件会变成已修改状态。
已缓存:对修改后的文件执行add操作后,文件变为已缓存状态,此时暂存区域已经生成相应的快照。
已提交:执行commit操作后,文件变为已提交状态,此时仓库已经生成了新的快照。

2.1 下载git

这里给出git的网站,git会根据不同的系统提供不同的下载。
git官方网站
在这里插入图片描述2.2 基本配置

安装成功后打开控制台输入$ git --version显示相应的git版本则代表安装成功。在这里插入图片描述随后需要配置你的用户名和邮箱地址依次输入
$ git config --user.name '你的名字'
$ git config --user.email '你的邮箱'
通过$ git config --list可以查看你的配置,最下方会显示你配置的邮箱和名字信息。
注意如果没有显示,这里使用键盘j键k键可以看上一行和下一行。q退出。
这里请参考vim的基本操作
在这里插入图片描述

3.1 创建仓库

$ git init
在使用git前需要进入你要进行版本控制的文件夹,将其设置为git仓库。输入初始化命令后,git会在你的文件夹里边生成一个.git的隐藏文件。标志着这个文件夹已经初始化为git仓库了在这里插入图片描述3.2 add & commit

add和commit命令是最基础的git命令。当你做完对一个文件的修改时,你就需要使用此命令。让git帮你记录文件的修改。
$ git add 需要提交的文件名
$ git commit -m '备注信息'
依次输入以上命令后,git就帮你记录了文件的修改。
这里我创建了一个名为file1.txt的文件并将其提交到了git仓库,git会在commit后返回此次commit的信息,‘1 文件改变, 0插入, 0删除。。。’
在这里插入图片描述3.3 查看git状态 status命令

$ git status
使用此命令可以查看实时的git状态
创建一个新的文件后,我使用了git status命令,git会提示你有一个新建的文件没有被git所追踪,需要你做add操作
在这里插入图片描述
假如此时我刚刚完成了add操作
在这里插入图片描述可以看到git会告诉你,你刚刚所做的操作导致的结果,并给出你提示信息,这里git提示你有新文件需要被commit

随后我又做了commit操作
在这里插入图片描述因为commit会将暂存区域的文件全部提交,所以此时git告诉我没有东西要提交了,工作树已经清空了。
这里只是针对add和commit做了status的演示,更多的状态需要自己去探索。

3.4 查看历史记录 log命令

查看历史记录$ git log
其中可以看到git中的历史快照,最上面为最新的快照,黄色的长串为id号,用作唯一标识。
在这里插入图片描述git log 的可选项
$ git log --oneline 精简显示
$ git log --graph 以图形化的方式显示分支关系
$ git log --all 显示所有分支
注意这些选项可以同时搭配使用

3.5 版本对比 diff命令

$ git diff
如果后边没有内容,git会默认比较缓存区快照与工作目录的区别,这里主要是文件级别的对比。
假如我先创建了一个文件file4,并在其中输入git diff demo 并将其提交,此时缓存区的针对file4快照已经被更新。随后我又在file4中添加新的内容’add new line’。键入git diff查看不同
在这里插入图片描述红色的文字为缓存区快照中的内容,也就是之前提交的内容
绿色的文字为现在工作区文件的内容。对比一目了然。
$ git diff id1 id2 查看历史快照
可以看到2相比较1发生了哪些变化
$ git diff HEAD 查看工作区域与仓库快照的区别
$ git diff --cached [快照id] 比较暂存区域与仓库快照的区别

3.6 回档 checkout & reset

reset用于 将仓库中的快照覆盖暂存区的快照
$ git reset HEAD~ 将仓库区的上一个版本的快照覆盖暂存区的快照
这里为什么使用仓库区的上一个版本,细细一想不难发现,当前仓库版本的快照与与暂存区的快照是相同的。
HEAD指针指向的是当前版本的快照,~代表HEAD指针的上一个版本,同理 ~~代表的是上两个版本。
此外 reset命令有一个可选项 分别有 soft mixed hard 三个选择
$ git reset --mixed HEAD~默认情况下是 mixed 首先他会移动HEAD将其指向上一个版本,其次他会用上一个版本的快照,覆盖暂存区域的快照。
$ git reset --soft HEAD~ 相比较于mixed,其只做了一个操作,就是将HEAD指针指向上一个版本。
$ git reset --hard HEAD~hard操作除了做了mixed的两个操作外,还会将依据快照覆盖工作区的内容,也就是说你工作区没有提交的信息就会丢失,所以这个操作是有风险的。

checkout 命令其实有两个功能

  1. 是将暂存区域的快照恢复到工作区,也就是相当于hard操作的第三个操作。注意这里可以再命令后遍指定文件名字,如果没有指定,则全部恢复
    $ git checkout file1.txt则为从暂存区恢复file1文件
  2. checkout还可以用于分支切换,这个在后边分支会讲到。3.8小节切换分支

3.7 修改最后一次提交、删除、重命名文件

修改最后一次提交
$ git commit --amend 可以用于修改最后一次提交,设想一种情景,你提交了一个错误的文件,但是这个文件你不想让他出现在git仓库中,你就可以用此命令覆盖最后一次提交。键入该命令后,你会进入提交缓存区的文件,并且进入编辑界面,可以修改编辑的信息。
$ git commit --amend -m '说明' 你也可以直接添加说明,这样就不会在进入编辑界面,而会直接提交

删除文件
$ git rm 文件名

重命名文件
$ git mv 文件1 文件2 git是根据文件名来进行追踪,这里如果直接重命名的话,git会认为你是删除了原来的文件,创建了一个新的文件。我这里将file21重命名为file22。所以需要用此命令进行重命名
在这里插入图片描述
3.8 分支操作 branch

分支是git的核心部分,可以保证当前版本正常运行的同时,将当前版本复制,并进行相关的开发,最后只需要进行合并,就可以完成软件的迭代开发。这里会介绍checkout的第二个功能用于分支之间的操作。

创建分支 $ git branch 分支名
这里我创建了feature1分支,可以通过git log 查看当前的信息,可以看到此时head指针指向的是master分支,master分支和feature1分支的版本信息相同。
在这里插入图片描述切换分支 $ git checkout 分支名

可以看到现在HEAD指针指向的是feature1分支
在这里插入图片描述
创建并切换到新分支$ git checkout -b 分支名

合并分支 $ git merge feature1 将feature1合并到当前HEAD指向的分支
这里我切换回主分支,并将feature1分支合并到主分支
在这里插入图片描述
删除分支 $ git branch -d 分支名
删除分支feature1
在这里插入图片描述


此文章是关于一些git的基本概念与命令,其中掺杂着一些作者自己的理解,因为作者水平有限,难免会有疏漏或者不对的地方。欢迎大家提出指正,也欢迎大家与作者一起交流学习心得。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值