框架前置课Git_01


常见的命令就那么几个,但是我看的是coderwhy老师的系统课,会把各种细节都讲到。

一般看有没有工作经验,就看会不会应对Git中的各种情况,没有实际在公司的开发经验,一般很难装出来,所以想包装工作经验的兄弟们要好好学啦哈哈哈

其实面试,只要不是头部大厂,一般是叫个技术大哥面试你,你过不过对大哥来说都没有利益损失,所以面试中以能力为主,眼缘也有一定的次要作用。

不过大哥让你通过,你其实能力较差在面试的时候是装的,在试用期内不能干活,最后还得走人,这是坑了自己也坑了大哥,切不可为~

头部大厂就得三面,那么就完全看硬实力了。

邂逅版本控制工具

git的作用

1002

1003

一句话,git版本控制工具,可以记录项目中内容在什么时候什么人,进行了修改删除上传等操作,并进行了项目不同版本代码的备份。

比如,你第一天上传了一个代码,第二天不小心给它删了,你可以通过git调出昨天代码版本的备份。

重要

github可以对比代码差异,让我们一个团队项目,不同人的代码合并。

版本控制的历史

1004

起初没有版本控制软件,改代码前都是把项目手动备份一次,防止改完项目崩了,还能恢复。

后面出现了cvs和svn,它们都是集中式版本控制工具。

git是发布式版本控制工具。

集中式和发布式的区别

集中式版本控制工具

1005

也就是说不同的人,写了不同的代码,都要提交到同一台服务器上面,服务器程序也会记录每次的修改和备份代码等等。

缺点:万一服务器宕机,那么在宕机的时候谁也无法上传新代码,或者访问以前的老代码。

甚至服务器故障坏了,那么以前版本的代码记录都没了。

发布式版本控制工具

1006

发布式版本控制工具,每一次拉取都会对代码仓库进行一次完整备份,也就是说镜像下来所有的这个项目的新老版本(这个镜像肯定不是源代码,会进行压缩什么的,不然会特别大,也就不需要其他服务器来恢复了),所以就算服务器宕机或者坏了,我们可以通过本地的镜像,在其他服务器恢复出以前老版本项目的代码。

Git的使用

官网git-scm.com

1007

Bash-CMD-GUI的区别

**Git-CMD:**和我们Windows的cmd基本上一模一样,只是在上面加了git命令功能

Bash:它是一个shell,也是命令行的一种,libux和macosx都是用这种命令行。它的优点是可以识别执行linux命令,而且相比cmd来说,加了很多新命令和功能,比如ssh连接命令在cmd中是识别不了的。(可以按ctrl+让文字变大)

GUI:图形化界面来运行git命令,我们不需要在小黑篇目里面敲命令了,而是用鼠标点击。

Git的配置类别

tips:getbash命令行退出按Q键,quit的意思。

1008

–system来设置,那么这台电脑系统的所有用户都会用这个git配置,一般不使用。

–global就是当前用户会用这个git配置(电脑是多用户的,我们使用的一般是管理员用户)

也可以给单个仓库设置配置,一般不使用。

1009

1-当我们到公司拿到电脑,可能git里面有其他人的信息,也可能没有信息,我们都是用以上命令来设置自己的user.email和user.name,原先有就会被覆盖。

2-我们可以使用git config –list来查看配置文件,也可以在c盘/用户/用户名/.gitconfog文件查看

为git命令设置别名

1010

Git初始化本地仓库

git是有一个本地仓库和远程仓库的,我们写了代码,git init是创建一个空的git本地仓库,这个时候本地仓库是没有我们的代码的,必须用add和commit 命令把代码文件添加到本地仓库

本地仓库提交到远程服务器仓库,是需要git push命令的。

1011

tips:查看git和node等的安装位置,命令为 where git

问题:我这里vscode没有gitbash控制台,百度看了一下改shell:windows的setting也没用,后面重装git就好了。

当我们是一个新项目,没有本地和远程仓库。

要提交哪个文件夹,就cd到哪里,执行git init(初始化一个新的本地仓库),当前文件夹下就会多出一个.git文件

这个时候只是有一个新本地仓库,我们并没有提交文件上去,所以我们可以通过add和commit等命令提交文件到本地仓库。(注意现在还是本地仓库,不是远程仓库)

公司已经有了项目有了远程仓库

git clone 仓库地址

如果是私有项目的话,一般需要配置key或ssh这些链接授权,克隆的话就不需要自己init创建本地仓库了(因为你克隆下来的项目里面就包含了本地仓库.git文件一样的东西)

文件状态的划分

1012

1-一个文件被执行add命令后,就会被跟踪

2-这时这个文件只是进了暂缓区,也就是不确定要不要提交,只有执行commit后,才会被提交到git本地仓库。

3-如果提交到本地仓库后,我们又修改了这个文件,那么又要被重新add和commit

tips:我们可以通过git log 查看有哪些提交

1013

index就是暂缓区,一般我们是先add让工作区的代码文件进入暂缓区,然后commit提交到本地仓库

其实也可以commit -a直接提交到本地仓库

查看文件的状态git status

1015

1014

它会显示当前目录文件内一些特殊状态文件,如没有被跟踪的文件,或者被跟踪进入暂存区但是没被提交的文件,或者修改modified状态等等。(不会显示已commit的文件,因为没必要)

git add添加文件到暂存区跟踪

1016

git忽略文件

1017

我们经常通过add.也就是说一次添加所有没有被跟踪的文件,那么有的文件总是不需要被跟踪提交,需要被忽略,怎么办呢?

我们可以在当前目录创建一个.gitignore文件,然后在里面写上不需要被跟踪提交的文件名称 (在实际开发中不需要自己创建,比如vue项目,我们肯定会用到vue脚手架,这个脚手架会自动创建.gitignore里面已经写好了需要忽略的文件名称)

tips:github官方发布了一个gitignore的仓库,里面包含了不同项目需要忽略的文件,我们复制过来即可。

1018

文件更新提交到本地仓库-git commit

1019

-m就是message的意思,就是人为写这次提交的相关信息,比如改动了什么优化了什么。

如果嫌每次都要add很麻烦,可以直接git commit -a

git的校验和(了解)

1020

1021

git log

1022

graph就是图表的意思,我们一般在分支开发的时候使用,可以让log结构更清晰。

git log –pretty=oneline就是每一个提交都在一行显示,省略了很多不重要的信息。

tips:还有一个git reflog 会把我们的回退git reset操作也做一个记录,方便我们跳转到最新版本。

版本回退git reset

我们提交了很多次,现在当前版本有点错误,我们想回退到以前的版本查看原先的代码,怎么办呢?

1023

这里的commit id 就是校验和,一般写前七位即可,也可以全部写上。

Git远程仓库和验证

什么是远程仓库

1024

远程仓库不止github,还有gitee和gitlab

其中gitlab没有国外手机号码基本上注册不了

公司也可以通过在自己服务器上安装gitlab这个软件来实现自己服务器有gitlab网站同样的版本控制功能

1025

注册和创建仓库就不多说了,基本上一样的,我自己也会。

远程连接凭证

访问私有仓库,是需要凭证的。

1026

默认情况下,http是无状态的连接,也就是说你第一次输入了账号密码登入后,关了网页再连接又要输入账号密码,它是不知道你以前访问过的。

为什么我们平时网页不会呢,可以直接进去?因为它们都下发了cookie/token这些给客户端,客户端下一次连接就带了token, 通俗来说这个token就等于输入了账号密码。

于是git grediential也提供了一些方式存储密码到内存或者磁盘中,或者用git gredential manager工具(安装git的时候会默认安装),它会记录保存我们的账号密码(我们可以在控制面板-用户-凭证管理里面删除)

tips:

1-那我公共仓库不需要凭证,不是每个人的可以clone和push修改我的仓库?

别人确实可以clone,但是push的话可以push,不过push后,是需要主人也就是你在push request里面同意,才会合并到你的仓库中。

ssh验证

1027

1-我们直接通过github里面的ssh地址访问,是会被拒绝的

2-我们需要在本地git bash中通过ssh-kegen。。。。。来生成一对公钥和私钥

(-t代表加密方式,-C代表注释必须大写C)

3-其中私钥和公钥是一对,它们匹配上才能验证身份,私钥在本地,公钥在c-用户-用户名-.ssh中。我们需要把公钥(id_ed25519.pub文本打开)添加到github的项目拥有者账户中。

4-然后我们再通过ssh地址就可以访问了。

5-只有连接过远程仓库的,可以输入git remote -v 查看这个远程仓库的地址

tips:ssh生成的同一对公钥和私钥,可以为多个平台如gitee和github验证,只需要把公钥给不同平台我们的账户添加即可。

管理远程服务器

我们本地写了代码要提交push上去,是无法直接push的,因为如果原先没有连接的话,根本不知道push给谁

如果你刚开始就clone了这个远程服务器的项目,那么就已经建立连接了,就不需要再git remote add

其中shortname是远程仓库名字,我们可以根据喜欢场景自己设置

url可以是ssh地址也可以是http地址

1028

1029

git fetch等于获取代码,但是不合并,git merge是合并

git pull等于fetch和merge同时执行。

这里我push到gitee是遇到一个问题的,我们需要在gitee中把邮箱公开。

https://www.ab62.cn/article/9536.html


文章作者: 瑾年
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 周东奇 !
免责声明: 本站所发布的一切内容,包括但不限于IT技术资源,网络攻防教程及相应程序等文章仅限用于学习和研究目的:不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。本站部分信息与工具来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如有侵权请邮件(jinnian770@gmail.com)与我们联系处理。
  目录