git 0基础入门—git入门与实践(1)—详细图解git安装详情及超详细的入门介绍!(2021.04.15更新)

1. git入门与实践(1)

2. 什么是git?

Git is a free and open source distributed version control system

Git是一个免费的开源分布式版本控制系统

官网:https://git-scm.com/

Git是一个版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。在编辑新文档覆盖旧文档,会发出警告,这就避免了自己不小心覆盖掉别人写的文档。使用工具维护文档,会比人为方便得多。使用git的核心目的就是管理项目的更新迭代,管理项目的版本,在实际的开发过程中,已经对多个文件进行了更改,突然发现功能的实现思路是有问题的,需要对功能进行重写,但是由于修改的文件过多,已经不能通过编辑器的撤销操作,退回到修改之前的状态,使用git就能很好解决这些问题了。在开发新功能之前,可以将项目的状态保存起来,如果在开发的过程中发现有问题,就可以轻松的将代码恢复到之前的状态。git其实就是将项目开发不同阶段的状态保存起来,以后可以回退到任何阶段。

19

3. 版本控制

3.1 版本管理

版本管理是一种记录文件变化的方式,以便将来查阅特定版本的文件内容。

即保留文件所有的修改历史记录,可以方便地撤销之前对文件的修改操作。

01

起初都使用文件夹进行控制。

image-20210331090315280


3.1.1 人为维护文档版本的问题

  1. 文档数量多且命名不清晰导致文档版本混乱

  2. 每次编辑文档需要复制,不方便

  3. 多人同时编辑同一个文档,容易产生覆盖

04

3.2 版本控制系统

它可以带来哪些好处呢?如:小迪最近在开发一个项目,完成了之后,产品经理就来找小迪,做一些修改,第一天可能我还很有耐心。结果第二天他又来了,改完…第三天又来了…改了n多天,他告诉小迪,拿出第5天修改的就可以了,剩下的都不要了。心中一定飘过了100只cnm,发现之前修改的过程文件都没有留!

那如果开发过程中遇到此类问题怎么解决呢?每次修改都保存一个文件,标注日期和版本号。如果开发周期长,也非常考验我们本机的内存了。但如果产品经理要的是某一天哪个步骤的的工作呢?就不好解决了,这时候就需要版本控制系统来解决了。

git的历史记录就相当于我们平时使用的编辑器,我们频繁的删除、修改、更新都会有记录,一般情况下时间周期较长的项目,但是我们也不需要每次修改都保存记录,就像小迪之前使用autim designer(画单片机用的软件),这样对内存是个考验,到时候去寻找也是问题。所以git采用主动提交的方式。


4. 安装

官网:https://git-scm.com/

image-20200629121801724


4.1 windows

下载安装有一堆选项,默认安装即可

使用许可声明

image-20200629123101676

选择安装路径

在输入框内输入想要安装到的本机路径,也就是实际文件夹位置,或点击“Browse...”选择已经存在的文件夹,

image-20200629123135463

然后点击“Next”按钮继续,进入下图界面:

选择安装组件

上图红框内的选项是默认勾选的,建议不要动。绿色框1是决定是否在桌面创建快捷方式的。绿色框2是决定在所有控制台窗口中使用TrueType字体和是否每天检查Git是否有Windows更新的。这些根据自己需要选择。

image-20200629123441231

点击“Next”按钮进入下图界面:

选择开始菜单页

这个界面是创建开始菜单中的名称,不需要修改,

image-20200629123512518

直接点“Next”按钮继续到下图的界面:

选择Git文件默认的编辑器

选择默认编辑器,我日常使用Notepad++作为编辑器,勾选使用Notepad++(还可选择NanoVimVs codeVs code内侧版本编辑器)作为Git 的默认编辑器

image-20200629123859291

image-20210331122757508

点击“Next”按钮进入下图界面:

调整您的PATH环境

这个界面是调整您的PATH环境。

第一种配置是“仅从Git Bash使用Git”。这是最安全的选择,因为您的PATH根本不会被修改。您只能使用 Git BashGit命令行工具。但是这将不能通过第三方软件使用。

第二种配置是“从命令行以及第三方软件进行Git”。该选项被认为是安全的,因为它仅向PATH添加了一些最小的Git包,以避免使用可选的Unix工具造成环境混乱。
您将能够从Git Bash,命令提示符和Windows PowerShell以及在PATH中寻找Git的任何第三方软件中使用Git。这也是推荐的选项。

第三种配置是“从命令提示符使用Git和可选的Unix工具”。警告:这将覆盖Windows工具,如 “ find 和 sort ”。只有在了解其含义后才使用此选项。

我选择推荐的选项第二种配置

image-20200629124151160

image-20210331122835188

点击“Next”按钮继续到下图的界面:

选择HTTPS后端传输

这个界面是选择HTTPS后端传输。

第一个选项是“使用 OpenSSL库”。服务器证书将使用ca-bundle.crt文件进行验证。这也是我们常用的选项。

第二个选项是“使用本地 Windows安全通道库”。服务器证书将使用Windows证书存储验证。此选项还允许您使用公司的内部根CA证书,例如通过Active Directory Domain Services

我使用默认选项第一项

image-20200629124356056

点击“Next”按钮继续到下图的界面:

配置行尾符号转换

这个界面是配置行尾符号转换。

第一个选项是“签出Windows风格,提交Unix风格的行尾”。签出文本文件时,Git会将LF转换为CRLF。提交文本文件时,CRLF将转换为LF。对于跨平台项目,这是Windows上的推荐设置(“core.autocrlf”设置为“ true”

第二个选项是“按原样签出,提交Unix样式的行尾”。签出文本文件时,Git不会执行任何转换。 提交文本文件时,CRLF将转换为LF。对于跨平台项目,这是Unix上的建议设置(“core.autocrlf”设置为“input”

第三种选项是“按原样签出,按原样提交”。当签出或提交文本文件时,Git不会执行任何转换。不建议跨平台项目选择此选项(“core.autocrlf”设置为“false”

我选择第一种选项

image-20200629124504765

点击“Next”按钮继续到下图的界面:

配置终端模拟器以与Git Bash一起使用

这个界面是配置终端模拟器以与Git Bash一起使用。

第一个选项是“使用MinTTYMSYS2的默认终端)”。Git Bash将使用MinTTY作为终端模拟器,该模拟器具有可调整大小的窗口,非矩形选择和Unicode字体。Windows控制台程序(例如交互式Python)必须通过“winpty”启动才能在MinTTY中运行。

第二个选项是“使用Windows的默认控制台窗口”。Git将使用Windows的默认控制台窗口(“cmd.exe”),该窗口可以与Win32控制台程序(如交互式Pythonnode.js)一起使用,但默认的回滚非常有限,需要配置为使用unicode字体以正确显示非ASCII字符,并且在Windows 10之前,其窗口不能自由调整大小,并且只允许矩形文本选择。

我选择默认的第一种选项

image-20200629124609215

image-20210331123005562

点击“Next”按钮继续到下图的界面:

配置配置额外的选项

这个界面是配置配置额外的选项。

第一个选项是“启用文件系统缓存”。文件系统数据将被批量读取并缓存在内存中用于某些操作(“core.fscache”设置为“true”)。 这提供了显著的性能提升。

第二个选项是“启用Git凭证管理器”WindowsGit凭证管理器为Windows提供安全的Git凭证存储,最显着的是对Visual Studio Team ServicesGitHub的多因素身份验证支持。 (需要.NET Framework v4.5.1或更高版本)。

第三个选项是“启用符号链接”。启用符号链接(需要SeCreateSymbolicLink权限)。请注意,现有存储库不受此设置的影响。

我勾选默认的第一、第二选项,

image-20200629124736212

image-20210331123032634

点击“Next”按钮继续到下图的界面:

配置实验选项

这个界面是配置实验选项。

启用实验性的内置添加-i / -p。(新!)使用实验性的内置交互式add“git add -i”“git add -p”)。这使其速度更快(尤其是启动!),但尚未被认为是可靠的。

默认不勾选

image-20200629124901468

直接点击“Next”按钮继续到下图的安装进度界面:

安装进度指示

image-20200629124957435

安装进度结束之后,会出现下图的完成Git安装向导界面:

安装完成

在这个界面,可以勾选是否启动启动Git Bash和是否查看发行说明,然后点“Finish”按钮退出安装界面。

image-20200629125022726

启动测试

到此,Git的安装完成,可以在开始菜单中看到Git的三个启动图标(Git BashGit CMD(Deprecated)Git GUI)。

Git Bash,是Git配套的一个控制台,点击打开如下图:

image-20200629125134387

Git CMD(Deprecated),是通过CMD使用Git(不推荐使用),点击打开如下图:

image-20200629125202742

Git GUI,是Git的可视化操作工具,点击打开如下图:

image-20200629125223272


4.2 mac

下载无选项,直接安装即可,也可通过命令行进行安装

brew install git


5. 简单的命令-入门运用

5.1 git init

git init 初始化创建仓库

会常见出一个隐藏的.git文件夹,所有的操作历史将存入这里

image-20200629125909443

windows下查看隐藏文件

image-20200629130001685

mac下 需要shift+command+.显示隐藏文件夹

注意:git不光可以管理项目的文件,所有类型的文件都可以被管理。


5.2 git status

git status 查看当前仓库所在目录的文件状态

Untracked => 未追踪的

当前的文件没有被git追踪,即当前文件没有被git记录。

注意:如果编辑命令的时候忘了单词,可以用tab键,系统自动提示。

image-20200629130459653


5.3 git add filename

git add filename 使文件加入追踪

Changes to be committed 改变成可被提交的状态了

git add . 将当前文件夹中的文件都加入追踪状态

image-20200629130808470


5.4 git commit

git commit 提交(并且附带:对此次操作的描述信息)

(由于小迪的电脑已经配置过了,就懒得再重弄了,但显示如下)

每次提交必须要记录,姓名和邮箱,通过这种方式,能快速找到是由谁来提交的。

image-20200629131633365

git config --globe user.email “xxx@example.com”

--globe 代表全局设置,即设置一次就够了。

git config --globe user.name “张三”

git config --global -l

image-20200629132621138

image-20200629132730229

这时候就打开了,小迪配置好的默认编辑器vs code,默认是vim(对中文支持不太友好,容易乱码)

修改默认编辑器:

git config core.editor notepad
git config --global core.editor "code -w" # 设置vscode

image-20200629132810085

可以在编辑器里添加描述:

注意:#代表注释,我们千万别把记录写在这里面,该文件下面的注释,只是提示给用户看的!

新建了1个1.txt文件
# 6. Please enter the commit message for your changes. Lines starting
# 7. with '#' will be ignored, and an empty message aborts the commit.
#
# 8. On branch master
#
# 9. Initial commit
#
# 10. Changes to be committed:
#	new file:   1.txt
#

image-20200629133043257

再去查看状态,没有任何可提交了。

image-20200629133109190


10.1 git log

git log 查看提交记录

image-20200629133151868

我们可以修改1.txt内容:

image-20200629134341455

注意:养成好习惯,不管做什么操作,都git status一下,看下状态

我们发现文件状态又变化了:

modified:已修改的状态。

对于当前的文件,git进行了追踪,追踪后对比记录发现文件与之前不一样了,git就认为文件被修改了。

image-20200629134535226

我们输入git commit,发现并没有运行成功。

Changes not staged for commit 未准备提交的更改

此时需要先git add filename ,使文件加入追踪

image-20200629135151179

image-20200629140142409

image-20200629140150360

image-20200629140214708

git log

image-20200629140255158

为什么明明已经追踪过的文件,修改完后还需要git add filename ,使文件加入追踪?


10.2 补充:默认编辑器vim基本使用

10.2.1 输入

我们刚打开文件进入的界面是不能直接编辑文件的,因为我们处于normal模式下,而要输入的话,需要进入insert模式,才能进行编辑了。摁下 i 键,进入insert模式而当我们编辑完之后,摁下esc键,就可以回到normal模式了。

在这我们介绍一下vim的模式,主要有3种,normal mode/insert mode/visual modenormal模式是我们默认处在的模式,主要是我们输入命令,对文本进行操作的。而insert模式,这是像我们一般的编辑器一样,输入。

而且当我们进入insert模式后,做完一些操作,最好键入esc命令,回到normal模式,至于原因,我们后面会看到的

还有其他的命令,这里不多言了。

命令作用
在下方新开一行,并进入insert模式
O在下方新开一行,并进入insert模式
在光标后一个字符开始编辑
A在光标所在行行尾开始编辑
I在光标所在行开头开始编辑

10.2.2 移动

vim是不能用鼠标操作的(此处说的是原生版本),我们要移动光标的话,似乎只能用方向键了。但是方向键经常比较难摸到,就比较麻烦了。
所以,我们下面介绍一些更好的vim移动方式。

注意:移动部分的命令都是在normal模式输入。

  • j、k、h、l
命令作用
j光标向下移动一行
k光标向上移动一行
h光标向左移动一行
l光标向右移动一行

而且这几个键在我们右手的键位上,很方便就可以摁到。但是,hl不建议常用,因为移动效率太低了,每摁一下就移动一格。我们下面介绍更便捷的移动操作。

  • w、e、b
命令作用
w向后移动一个单词,从词头到词头
e向后移动一个单词,从词尾到词尾
b向前移动一个单词,从词头到词头

这种以单词为单位的移动,要比h\l那种以一格为单位的移动快很多,而且有效率。而且h/l是无法跨行的,也就是当我们用摁h键,移动光标到行首时,光标是无法移动到上一行尾的,而b键可以。

  • Ctrl+d、Ctrl+u

上面讲的是单词的移动,但是如果在我们看文章或代码时,用的更多的是翻页,jk键每次只能移动一行,是无法满足我们的需求的。下面就讲到翻页了。

命令作用
Ctrl+d向下翻半页
Ctrl+u向上翻半页

而且是每次翻半页,不用担心一翻页,就不用担心找不到之前看到哪了。

  • gg 、G

上下翻页固然很方便,但是我们经常看文档或写文档时,会想要跳回文章的开始部分。这个时候,如果文章很长,那么用翻页回去就太累了。vim这么可以这么不方便呢,hhhh。所以,我们是有一个回到顶部按钮的,那就是gg。而跳到文章尾部,则是G


10.2.3 退出

摁下esc键,就可以回到normal模式了,输入:wq即可退出。如果提示没有文件名,则输入:wq filenamew代表保存文件,q代表退出。所以,当你如果进入vim时,没有指定文件名时,vim会在你退出保存时提示你加上一个文件名(上面那个filename只是代表文件名)。或者可以不保存,输入:q!强制退出。

更多参考


11. git add到底做了啥?

git add在刚刚我们提过,它是添加一个文件,让git对它进行追踪,那为什么追踪之后,我们再次提交的时候,还需要git add呢?add操作到底做了什么?


11.1 文件的三种状态

已修改、已暂存、已提交

它们分别对应的用途如图所示:

  • 已修改:被修改的文件
  • 已暂存:等待被提交的文件
  • 已提交:提交到本地仓库的文件

image-20200629150620748

注意:未被git追踪的文件不参与以下三种状态,称之为未追踪状态:Untracked


11.1.1 已暂存(stage)

之前我们输入git commit,发现并没有运行成功。

Changes not staged for commit 未准备提交的更改,到底是什么意思呢?

image-20200629151731990


11.2 工作区域

工作目录、暂存区域、Git仓库

image-20200629152550893


11.3 git工作流

工作目录中修改或创建文件都在工作目录中,如果想把修改记录到git仓库中,必须首先经过的就是暂存区域,之后进入了暂存区域,才能提交到git仓库里。

  1. 在工作目录中修改文件
  2. 暂存文件
  3. 提交更新、找到暂存文件

image-20200629153417938


11.3.1 基本工作流程小结

git仓库暂存区工作目录
用于存放提交记录临时存放被修改文件被Git管理的项目目录

05


12. git 使用小结

12.1 Git 使用前配置

在使用 git前,需要告诉 git你是谁,在向 git仓库中提交时需要用到。

  1. 配置提交人姓名:git config --global user.name 提交人姓名
  2. 配置提交人姓名:git config --global user.email 提交人邮箱
  3. 查看git配置信息:git config --list

也可直接在计算机的中配置文档中手动修改:

C:\Users\Administrator

image-20200630135100412

image-20200630135141448

注意

  1. 如果要对配置信息进行修改,重复上述命令即可。
  2. 配置只需要执行一次。

12.2 提交步骤

  1. git init 初始化git仓库
  2. git status 查看文件状态
  3. git add 文件列表 追踪文件
  4. git commit -m 提交信息 向仓库中提交代码
  5. git log 查看提交记录

12.3 撤销(恢复记录)

  • 用暂存区中的文件覆盖工作目录中的文件: git checkout 文件

    • 比如在开发项目中的某个功能,功能开发一半的时候,将工作区的文件添加到了暂存区中。然后回到工作目录中继续开发,过了一会发现,后来开发的代码存在问题。需要将代码恢复到功能开发一半时的状态,这个时候如何恢复呢?就可以利用暂存区中的文件覆盖工作目录中的文件的方式了。

      image-20200630141149856

      image-20200630141216472

      image-20200630141247924

      我们再修改其内容,但是此时假如发现有问题,需要回退之前暂存区的代码。

      image-20200630141328271

      image-20200630141345609

      git checkout 1.txt

      image-20200630141430985

      再打开文件夹,就恢复到之前的状态了。

      image-20200630141216472

  • 将文件从暂存区中删除: git rm --cached 文件

  • 将 git 仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录:git rest --hard commitID

    image-20200630142534139

    image-20200630142605214

07


13. 扩展

13.1 cmd 命令

# 14. 打开某一个盘面,如C盘
C:
# 15. 打开文件夹
cd 文件夹路径
# 16. 清空操作界面
cls
# 17. 新建一个文件
 New-Item  a.txt
 New-Item  mytest.txt  -Type  file
 
# 18. 新建一个文件夹
 mkdir 新建文件夹

18.1 git命令

18.1.1 当需要添加暂存区的文件过多的时候

gir add . 添加所有改动文件及未追踪的文件

image-20200629161347167


18.1.2 每次进入vim模式(git编辑器)输入描述很费劲

git commit -m ‘描述’ 合并提交和描述操作,一步完成操作

image-20200629161507931


18.1.3 每次提交都要输入add命令很麻烦

git commit -a -m ‘描述’ 从工作目录提交到暂存区后,直接提交(仅限git管理的文件,未追踪的无法执行该命令)

-a 就相当于 git add .

假如修改一下文件内容:

image-20200629162140486

但是假如我们添加一个文件,再用此种方式提交发现出问题了!

image-20200629162548587

注意:只要该文件是未被追踪的,就说明一件事情,git根本不会对它进行管理。从而就没有提交这种说法了。即git会完全无视它,提交命令也没有用。因此如果是未追踪的文件是不能省略步骤的,还是得一步步来。

image-20200629163036520


18.2 中文乱码

  1. 文件名乱码

    git config --global core.quotepath false

  2. 编辑描述乱码

    • 进入setting
    • 找到environment
    • 添加:set LANG=zh_CN.UTF-8

win10操作系统,还是推荐大家使用terminal吧!cmder我用了很多办法,也没解决中文乱码的问题。




(后续待补充)
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值