基础篇01 Git极简入门

1.Git是什么?

Git是实现分布式版本控制的一个工具,简单的来说就是实现文件历史管理的工具。

下面我举一个例子,说明Git的作用。

  1. 你是公司的一名程序员,现在你写了一段程序:print('Hello')
  2. 老板看到你的代码太差了,让你改掉,于是你改成了:print("你好")
  3. 老板看到以后觉得不行,让你把代码改回到上一次的状态

如果你从1改到2改了一大半内容,并且还没有留1的备份,是不是要哭了?

如果你在这个时候使用了Git做版本控制,就不会有这种问题了。

每一次你修改代码之后都做用Git一次记录,Git就会知道你每一次改了什么内容。

老板让你回到1,你只要输入 git reset --hard 1,就回到了当时的版本。

所以说,Git就是实现历史版本管理的工具。不论你改了多少内容,改了多少次,Git都能回到当时的版本。

同时Git也是合作开发的工具。

2.下载Git

  • 安装包可以到官方网站点击这下载,或者在github点击下载。如果下载不下来,可以把链接复制下来用迅雷下载。如果用迅雷下载不放心,在下载完后去在github下载的那个地方查看SHA-256值,并和下载的文件对比,如果值一样就可以放心使用。

  • 安装的时候一路点击Next就行了(注意安装路径)。

  • 刚安装完打开后,窗口比较小。如果不太习惯,可以把它改大一些。
    -首先移到窗口右下角边缘,出现箭头后把窗口拉大。
    -点击窗口顶部左边的图标 -> Options… -> Window -> Current size -> OK
    这样以后打开窗口都会是调整后的大小。

Git for Windows从2.8.0版本[3]开始,默认添加环境变量,所以环境变量部分就不用再手动配置了。(这句可以无视)

3.本地Git的使用

这里先不引入Github,而是在本地计算机上的操作。

打开命令行(cmd)或者在想要创建工程的文件夹内右键鼠标并点击 Git Bash Here 打开窗口。(windows打开GitBash,macos和linux用户打开终端。)

首先要设置自己的身份,比如git提交代码的时候要让别人知道什么人提交了代码

设置身份内容有两条,一个是你的邮箱,另一个是你的称呼 ,以后你提交的代码都根据这个来确定是你提交的的了。
. Your Name填你想让别人知道的名字, email@example.com换成自己的邮箱。

输入:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

在这里插入图片描述
然后输入:

git init

这个文件夹以后的更改就会被记录了。(如果是空文件夹会提示Initialized empty Git repository in /home/yep/code/gittest/.git/,告诉你文件夹为空)

现在我们在文件夹里新建一个文件hello.txt,内容是

print("Hello World")

现在我们要把这个文件放入git仓库。把一个文件放到Git仓库只需要两步。

  1. 保存后,我们使用git add命令,告诉git我们把文件添加到仓库缓存区了,在终端输入git add hello.txt 没有提示说明操作成功。

  2. 使用git commit命令,告诉git我们要把缓存区的所有文件正式提交到仓库:在终端输入git commit -m "添加了hello.txt"其中 -m 和后面引号内容是本次提交的说明,也就是描述你每次改了什么。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。

[master (root-commit) ec4652d] 添加了hello.txt
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt

git commit命令执行成功后会告诉你,1 file changed:1个文件被改动(我们新添加的hello.txt文件);1 insertions:插入了两行内容(hello.txt有一行内容)。

为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

add把文件放到了缓存区,然后commit正式提交到仓库。

4.实现版本回退

现在修改hello.txt里的内容:

print("Hello World")
print("老板是神经病")

因为对工作很不满,下班前添加了第二行,“老板是神经病”,然后提交

git add hello.txt
git commit -m "hello.txt里添加了一句话"

提示:

[master 88d885c] 在hello.txt添加了一句话
 1 file changed, 2 insertions(+), 1 deletion(-)

现在,我们回顾一下hello.txt文件一共有几个版本被提交到Git仓库里了:

版本1:添加了hello.txt
版本2:在hellotxt添加了几句话

到了第二天早上你后悔了,想回到昨天下班前代码的状态
在Git中,我们用git log命令查看:
输入:

git log

显示了过去所有的修改时间、修改人、修改内容:

commit 88d885c21216cbedacb1692e08d51afa6d4e32a7 (HEAD -> master)
Author: yepdlpc <***********@***.com>
Date:   Wed Dec 19 20:13:22 2020 +0800

    在hello.txt添加了一句话

commit ec4652d5d0b8662fc8730d64b42341d1c363a442
Author: yepdlpc <mattbaisteins@gmail.com>
Date:   Wed Dec 19 20:11:42 2018 +0800

    添加了hello.txt

现在,我们要把当前版本回退到上一个版本,就可以使用git reset命令:

git reset --hard HEAD^

此时我们可以看到hello.txt的文件内容变回了:

print("Hello World")

果然被还原了。

5.Git详细概述

前面的内容基本上是最基本的,一下内容是额外扩展,不一定同学可以不用看

所有命令前都要加 git,如表中的init是指 git init
以下命令都在命令行里执行。

  • 个人本地使用
行为命令备注
初始化init在本地的当前目录里初始化git仓库
clone 地址从网络上某个地址拷贝仓库(repository)到本地
查看当前状态status查看当前仓库的状态。碰到问题不知道怎么办的时候,可以通过看它给出的提示来解决问题。这个命令执行的频率应该是其他命令的几倍,特别是新手
查看不同diff查看当前状态和最新的commit之间不同的地方
diff 版本号1 版本号2查看两个指定的版本之间不同的地方。这里的版本号指的是commit的hash值
添加文件add -A这算是相当通用的了。在commit之前要先add
撤回修改的且还未stage的内容checkout – .这里用小数点表示撤回所有修改,在–的前后都有空格
提交commit -m “提交信息”提交信息最好能体现更改了什么
删除未trackedclean -xf删除当前目录下所有没有track过的文件。不管它是否是.gitignore文件里面指定的文件夹和文件
查看提交记录log查看当前版本及之前的commit记录
reflogHEAD的变更记录
版本回退reset --hard 版本号回退到指定版本号的版本,该版本之后的修改都被删除。同时也是通过这个命令回到最新版本。需要reflog配合
  • 个人使用远程仓库
行为命令备注
设置用户名config --global user.name “你的用户名”
设置邮箱config --global user.email “你的邮箱”
生成ssh keyssh-keygen -t rsa -C “你的邮箱”这条命令前面不用加git
添加远程仓库remote add origin 你复制的地址设置origin
上传并指定默认push -u origin master指定origin为默认主机,以后push默认上传到origin上
提交到远程仓库push将当前分支增加的commit提交到远程仓库
从远程仓库同步pull在本地版本低于远程仓库版本的时候,获取远程仓库的commit

可以用一张图直观地看出以上主要的命令对仓库的影响。

在这里插入图片描述
在这里插入图片描述
对照查看两张图:

  • workspace 即工作区,逻辑上是本地计算机,还没添加到repository的状态;

  • staging 即版本库中的stage,是暂存区。修改已经添加进repository,但还没有作为commit提交,类似于缓存;

  • Local repository 即版本库中master那个地方。到这一步才算是成功生成一个新版本;

  • Remote repository 则是远程仓库。用来将本地仓库上传到网络,可以用于备份、共享、合作。本文将使用Github作为远程仓库的例子。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值