四、学编程语言前,不了解Git,怎么入坑

本文是Python从入门到大师共100教程第四篇,系列文章教程已经在CSDN完成,有时间就同步更新。

@Author :By Runsen

上次教大家搭建好Python的两个IDE,分别是Pycharm和Jupyter

是不是我们正式开始写Python代码呢?

我的回答是「NO」

怎么了,环境安装好了不是就开始写吗?

这是不对的,学任何编程语言都要看下Git和Github

1、了解Git

说到Git,Runsen要说下LInux 的大神,是由伟大的Linux创始人Linus创作

就是这个大神,看不惯微软的window系统,就直接搞Linux。

我们回到Git。Git是一个分布式版本控制软件,在Git之前有一个SVN的东西,Linus在写LInux内核的时候,使用的是SVN进行代码提交。

Linus用SVN觉得不爽,就是因为SVN不能够分布式版本控制,这也是Git和最核心的区别

我先把git的官方网站的链接给你扔出来:https://git-scm.com/。

走,我们去Git的官方网站学习。

2、 版本控制

无论Git还是SVM都是用来版本控制,所谓的版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。除了项目源代码,你可以对任何类型的文件进行版本控制。

比如,在我们写毕业论文时可能会遇到,多次修改之后的论文命名方式:

代码语言:javascript
复制
论文_改.doc、论文_改改.doc、论文_改改改.doc、论文_改改改改.doc、论文_改改改改再改.doc、
论文_改改改改再改TM不改了.doc

我还是大三,还不用写论文。

重命名也太OUT了,SVN就出来,你可以提交多个版本,然后托管到代码仓库,进行管理,如果需要就回退。这方便了许多,但是如果这个写代码的跑路,要换Runsen来维护,那是不是没辙。因为这是托管到写代码的跑路人的仓库,我没得用啊。

接下来人们又遇到一个问题,如何让在不同系统上的开发者协同工作?于是,大神Linus发现。其实是LInus写Linux内核的时候,被逼无奈,花了2个星期用c写出了git。

Git是目前世界上最先进的分布式版本控制系统,解决了在不同系统上的开发者协同工作的问题。

3、Git安装

听我吹了这么久,是不是要安装Git开始学习了。再说了,我怎么会一直吹逼。

ubuntu下安装就是一行命令

代码语言:javascript
复制
sudo apt-get install git

centos下安装也是一行代码

代码语言:javascript
复制
sudo yum install git

麻烦的就是Windows了,去git官网下,链接:https://git-scm.com/downloads

选择Window,然后下载安装包,选择路径,下面就是傻逼操作,

安装好了Git,你就可以看见Git GUI和GIT Bash。

出现这两个东西,基本安装成功了。

你在CMD窗口,执行Git,如果有反应就是OK 了。、

没有就赶紧去path配置环境变量

4、创建本地仓库

下面,我教你创建一个文件夹用于存放项目文件,新建一个myporject的文件夹

代码语言:javascript
复制
cd ~/myproject/

初始化myporject的文件夹

代码语言:javascript
复制
git init

会创建一个.git的隐藏文件,关于版本控制的文件都存放在这里,绝对不要改动

没有这东西,你的Git就不能用了。

5、配置个人信息

你可以配置全局信息或者本项目个人信息

配置全局信息直接--global

代码语言:javascript
复制
git config --global user.name 'MaoliRunsen'
git config --global user.email '2953510364@qq.com'

配置信息会保存在家目录下,名字和Email跟注册Github的一致。

代码语言:javascript
复制
cat ~/.gitconfig

配置本项目个人信息

代码语言:javascript
复制
git config user.name 'MaoliRunsen'
git config user.email '2953510364@qq.com'

配置信息存储在当前目录下的.git/config下

代码语言:javascript
复制
cat .git/config

6、 添加文件

创建好了本地仓库,就准备开始开发了。

在项目文件加下创建readme.txt文件,输入以下内容。

代码语言:javascript
复制
我是Runsen,一个化工的专业的码农
这是一个git学习的项目。
将所有的博客进行汇总整理

先添加到暂存区

代码语言:javascript
复制
git add readme.txt

提交到仓库

代码语言:javascript
复制
git commit -m '第一次提交文件'

在这里插入图片描述

git commit命令的,-m参数后输入的内容是提交说明。命令执行成功后显示几个文件被改动,加了多少行。每提交一次就会生成一个版本。

git add .可以一次性把当前目录中所有有改动的文件都添加到暂存区。

7、修改文件

按照这个操作流程,修改readme.txt内容如下

代码语言:javascript
复制
我是Runsen,一个化工的专业的码农
这是一个git学习的项目。
将所有的博客进行汇总整理
然后删除之前Git的博客。

然后再次提交,Git add 和Git commit

8、错误提交

结果我在提交的时候,发现了commit错误了,这不是第一次提交,而是第二次,其实我是故意的。

辛勤的工作一段时候,我提交了2次了,有2个的版本,怎么查看这些提交记录呢?

git log是 查看历史版本

从上图中看到,我们需要删除第二次的Commit,如何删除呢,答案就是版本回退

9、 版本回退

这是就reset就可以了,

代码语言:javascript
复制
git reset --hard HEAD^

重要点终于来了:

  • HEAD表示当前最新版本
  • HEAD^表示当前最新版本的前一个版本
  • HEAD^^表示当前最新版本的前两个版本,以此类推
  • HEAD~1表示当前最新版本的前一个版本
  • HEAD~8表示当前最新版本的前8个版本,以此类推

这是我们查看Git lo 就发现只有第一次的提交,可以看日期时间区别。

git reset --hard 版本号

当版本非常多时选择这种方法。版本号就是每次commit生成的hash值,只用取前几位数。

这是查看readdme.txt

没有了然后删除之前Git的博客。

这样就会产生一个问题,如果你提交错误和选择回退,这样你辛苦写的代码会消失。

因此,如果Commit错误了,回退是错误的办法。

10、回到原来版本

既然回退是错误,那么就需要回到原来最新版本,不然你写的代码全没了

只要上面的命令行窗口还没有被关掉,你就可以顺着往上找到上面最新的commit id是 af316a589238fffca87806ceed36a96992cf66b9,于是就可以指定回到未来的某个版本,只要前八个:af316a58

readdme就回到第二次的状态。

假如你是一个大傻逼,不小心关闭了窗口,就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

Git提供了一个命令git reflog用来记录你的每一次命令,然后你可以根据对应的commit id回到你想要的版本:

af316a58同样可以找的到。如果你删除了git的隐藏文件,那你真的凉凉了,回家睡觉去吧。

11、正确方法

上面都是演示一些git的常见错误,我们现在是回到了错误提交的commit上,所以还没有解决。

直接用git commit --amend 就可以了,修改本地最近一次已提交的注释

下面把第一次改为第二次,这是Vim的用法。

你再看看Git log,OK 解决。

每次在做一些大动作(rebasing)之前,建议备份整个版本库,以防万一。

git的历史记录是不可修改的,也就是说你不能更改任何已经发生的事情。你做的任何操作都只是在原来的操作上修改。也就是说,即使你删除了一个分支,修改了一个提交,或者强制重置,你仍然可以回滚这些操作。

12、 总结

今天简单了入了Git的坑,还没完,下面还是要继续把Git搞定,才能开始学习编程语言。

下篇的内容跟下图几张图有关。

今天的文章到这里就结束了,如果喜欢本文的话,请来一波素质三连,给我一点支持吧(关注、在看、点赞)。

- END -