赞
踩
目录
(6)代码推送失败提示“Please tell me who you are.”
在现实生活中,我们在手机上要下载软件时,会有两种方式,一种是直接去对应网站的官网上下载,另一种方式则是到手机自带的应用商店去下载。
linux中也是需要下载软件的,而要下载软件则需要通过一个叫yum的软件包管理器去下载。
软件每个人都会下载,但大多数人并没有思考过,我们下载的软件是从哪里来的?软件的来源肯定不会是本地,不然就无需下载了。那答案就只有一个了,即网络。但网络这个词过于宽泛,准确来说,软件的来源是其他人的电脑,如远端服务器,云服务器等。
现在我们知道了软件的来源,那这些软件又是由谁提供并放在服务器上的呢?这个问题很简单,软件的提供者就是企业、个人或者某个组织为了某种利益所提供的。
linux内的软件说白了,其实也是由linux社区提供的。
但是在linux中,不同于windows上下载的软件由于商业问题是闭源的,linux中的软件是开源的。为了将linux下的软件供大家下载,linux下的软件也是放在服务器上的。
同时,linux下因为版本的不同,也存在不同的linux社区,每个社区都在自己版本的linux中内置了服务器和应用对应的下载链接。而存储这些下载链接的软件就是yum。由此,yum就可以理解为linux中的应用商店
我们都知道,计算机是国外先发展起来,然后才传到国内的。包括linux也是由外国人写的。这就意味linux社区中使用的服务器也是存在于国外的,软件包链接当然也是放在国外的服务器中。而国内由于离服务器远和一些政策问题,下载对应的软件速度会很慢甚至下载不了。
为了应对这种问题,国内的一些企业和顶尖高校,如清华大学就镜像了国外的软件服务到国内的服务器:
这样在我们国内就有了拥有了对应软件的安装包。同时提供了一套针对国内的下载链接配置文件。国内下载的linux的yun源配置文件基本都是存储的国内的下载链接配置文件,使其下载软件时自动到国内的服务器下载。
安装软件的本质其实就是拷贝。而拷贝则会将其拷贝到特定的目录,而拷贝软件到目录是受权限约束的。linux下的安装必须要联网
这就好比windows下安装软件时,会弹出一个是否安装的窗口,这其实就是因为这个软件的安装中某些文件需要放到特定的目录下,你并没有对应的权限,弹窗的作用就是在你接受后会自动提权让你拥有对应的权限以进行安装。无法删除某些文件也是因为你没有删除对应目录中的文件的权限。
但是linux下是没有图形化界面的。安装软件时如果是普通用户,则需要用sudo自行提权。root用户则无需sudo
普通用户安装时执行“sudo yum install -y 软件名”。“-y”可写可不写,写“-y”为了避免安装时的询问是否安装。
例如我们安装一个“sl”软件。root用户下执行“yum install -y sl”:
这个软件会显示一个小火车
可以用这个命令来检测yum是否能正常运行
在实际中,我们的手机或电脑上从一开始我们也不知道要安装哪些软件,都是在有对应需求时再去搜索查找,然后安装想要的软件。
linux下也是如此,软件都是根据自身需求来安装的。
当然,我们也可以使用“yum list”来查看可安装软件:
这里限于篇幅问题,只是截出了小部分可安装软件,实际可安装软件时非常多的。
虽然我们可以用“yum list”命令查看所有可安装软件,但是这种方式是很难找到对应的软件的。假设现在我们已经知道了部分软件的名字或不完整名字,我们就可以用“yum list | grep 软件名”的命令,这个命令会找出所有带有对应软件名的软件,如执行“yum list | grep zip”:
这个命令就会显示所有带有对应关键字的软件
当然,我们也可以用“yum search 软件名”的命令来搜索,如“yum search zip”:
这条命令的搜索结果会将该软件的作用也显示出来,但缺点就是看起来不太方便,并且也可能显示软件名中不带有对应关键字,介绍中带有对应关键字的软件。
软件可以安装,那就可以卸载。在linux下要卸载一个软件,就可以执行“yum remove 软件名”命令。注意,如果不是root用户,同样要带上sudo。如我们卸载“sl”软件,执行“yum remove sl”:
如果不想让系统询问是否卸载,也可以加上“-y”。
此时我们再执行sl,就无法执行了:
该软件是用于windows机器和远端的linux机器通过xshell传输软件的。
安装好该软件后,我们就可以用“rz”命令从windows上下载文件:
从弹出界面中选择对应的文件就可以直接下载到linux中
同时,从windows中传文件到linux中也是支持拖拽的:
但是从linux中传文件到windows就不支持拖拽
要将linux中的文件传入到windows中,可以用“sz 文件名”命令。如我们将“test.txt”文件传给windows,执行“sz test.txt”:
在对应的弹窗中选择文件的存放位置即可
如果有人想看看yum内存储的软件的下载链接,可以执行以下命令:
“ls /etc/yum.repos.d/”,查看yum源的配置文件位置:
然后我们进入该配置文件:
查看CentOS-Base.repo文件:
这里面就包含了yum中的所有软件下载链接
在linux中我们可以直接通过“yum list”命令查看的软件是官方的yum源。但还有一个非官方的yum源,里面收集了其他经常使用但没有纳入官方yum源的软件。如果想安装非官方yum源的软件,可以使用“yum install -y epel-release”命令。
非官方yum源可以看做是官方yum源的一个储备池。有些人开发了linux软件后就可以传到非官方yum源上,当该软件经过时间检验后就可能被纳入官方yum源。
git我想大家并不陌生,学习过编程语言的人都听过gitee和github,其实这两个网站就是git网页化后形成的网站。但是在这之前大家用git都只是简单的存储自己写的代码,而没有使用他的版本控制功能。
git其本质其实就是一个版本控制器。版本控制器大家不太好理解是什么意思。这里就举一个例子。
假如有一天你的老师叫你做一份实验报告交给他。你做好了第一版的实验报告交给老师,老师看了后说不行,并告诉你进行修改。你拿回你的实验报告后在第一版的基础上进行修改,将第二版实验报告交给老师。此时你的老师看了后觉得你的第二版实验报告还不如第一版,于是让你把第一版交给他。此时你的word文档里面虽然本地存档上没有了第一版的报告,但是你在写第二版时将第一版在云端保存了一份。而此时你则直接在云端上将你的第一版实验报告下载下来,然后交给了老师。
在上述例子中,你的实验报告就是你写的代码;而将第一版存在云端的操作,其实就是一个第一版本的备份。而实现这个备份操作的就可以看成是版本控制器。也就是说,版本控制器可以看成一个能够帮你保存你曾经写过的代码的版本的功能。
如果你的linux上没有git,那么直接输入“yum insatll -y git”,如果是普通用户就在最前面加上“sudo”。当你安装好git第一次使用时,系统会提示你配置用户名和邮箱。这里的用户名和邮箱写你熟悉或常用的即可。在配置时将提示中让你输入用户名和邮箱的内容复制下来,并改成你要修改的内容。
在使用gitee前,要先注册账号,这点想必不用多说。
仓库,简单来讲就是保存我们的代码的地方。而仓库的使用是需要创建的。
将光标放在右上角的“加号图标”处,会弹出下列的选项。在这里点击“创建仓库”
点进去后我们会看到下列界面:
仓库名称和仓库介绍最好要与你想要传入该仓库的代码相关。路径不需要填写,写好仓库名称后就自动生成路径了,当然也可以改为自己喜欢的路径。而这里的仓库公有私有选项只能选择私有,即只能自己访问,别人不能访问。在以前是可以直接公有的,但是因为某些原因现在仓库公有需要进行一些操作才行,不能直接公有。
在仓库名称下面还有以下内容:
在这里,勾选初始化仓库后将选择好你要传入的代码语言;添加“.gitignore”也是选择和你要传入的代码相关的选项即可;开源许可证则随便选一个即可。
在设置模板中我们最好也勾选上,并勾选里面的“readme文件”。readme文件可以看成是一个说明文件,即在访问这个仓库前要先看这个文件中的内容。当然,也可以不选
选择分支中勾选“单分支模型”即可,其他选项都是与开发相关的,现在我们暂时还不需要多分支
选择好后点击创建即可。随后在远端就会为我们创建一个仓库:
在仓库创建好后,我们点击下图中的“克隆/下载”选项:
点击后会弹出以下几个选项:
现在我们选择复制“HTTPS”的方式即即可。“SSH”和“SVN”的方式操作起来非常麻烦,现在我们还不需要使用这两个选项。
在我们的linux上输入“git clone”命令,并将刚才复制的内容粘贴到该命令后面。注意,在linux中不能用“ctrl v”的方法粘贴,只能右击鼠标选择黏贴:
在运行该命令后会弹出以下内容:
这里要求输入你的gitee用户名。注意这个用户名是你登录gitee时的用户名,而不是你的gitee昵称。输入好用户名后会让你输入你的gitee密码,这里就不展示了。
操作完后,我们输入“ll”命令,就可以看到此时你的linux账户的文件目录中就多出了一个目录文件。这个文件就是你的仓库,文件名就是你的仓库名。我的仓库名字是test,因此这里是多出了一个test目录:
此时我们用“cd”命令进入该仓库,就可以看到这个仓库中有以下几个文件:
这里面的“LICENSE”是你的开源许可证,而下面的两个“README”文件则分别是你的仓库的英文说明和中文说明
现在我们在linux下可以看到我们仓库的文件了。但有人一对比gitee上的仓库就会发现问题——linux下的仓库少了一个“.gitignore”文件:
原因很简单,这个文件是以“.”开头的,在linux中被视为隐藏文件,我们使用“ll -a”命令即可看到该文件:
现在就有人会奇怪这个文件到底是用来干什么的。从这个文件的字面来讲,就是“git忽略”。
如果之前使用过git传代码并且在创建仓库时没有添加该文件的人可以看看自己之前传的项目。在那些项目里面除了程序的.c/cpp文件和.h文件之外还有很多其他各种各样的临时文件。这种传代码的方式其实并不好,因为传入的项目中会有很多多余的东西。
现在我们用“vim .gitignore”命令进入该文件:
在这个文件里面我们可以看到如下内容,当然也可能会有所差别。 我们自己看看可以发现,这里面的内容基本都是“文件后缀”。那“.gitignore”文件的作用就很清楚了——在传入代码时忽略带有出现在“.gitignore”文件中的文件后缀的文件
在这之前,我们经常会听到本地仓库、远端仓库这两个名词。并且我们在用“ll -a”命令后可以看到我们的仓库中有一个“.git”目录:
“.git”就是我们的本地仓库。而我们经常说的将代码push到远端,其本质就是将“.git”目录下的内容同步到你的gitee或github上
为了方便测试,我这里直接将之前写的一份测试代码拷贝到当前的仓库目录下:
此时在我的仓库目录下就多了一个“myproc”目录
1.代码添加到本地仓库
执行“git add .”命令,该命令是将仓库目录中新增的文件传输到“.git”中:
该命令执行后并不会出现任何提示。并且此时我们查看“.git”文件也找不到我们传输的文件。因为此时我们的代码并没有提交到本地仓库,还处于一个临时区域中。
2.代码提交到本地仓库
添加代码到本地仓库后,输入“git commit -m '说明信息'”命令。该命令中必须要写说明信息,这个说明信息就是日志信息。内容不能乱写,也不要写时间,最好与你提交的代码版本或修改内容相关。
该命令执行成功后会出现下图所示提示:
此时就代表你的代码推送到本地成功了
3.代码推送到远端
当代码推送到本地后,输入“git push”命令。此时会让你再输入一次你的gitee用户名和密码。
出现上图提示就说明推送成功了。
此时我们来到我们的gitee仓库中,就可以看到我们提交的代码了:
如果我们在执行“git commit -m '说明信息'”命令时出现执行失败并提示“Please tell me who you are.”,就说明此时系统无法识别用户,此时执行“git config --global user.email "用户邮箱"”和“git config --global user.name "用户名"”即可。这里的邮箱和用户名就是你第一次使用git时配置的邮箱和用户名。如果忘记了,可以在你的仓库目录中输入“git log”命令来查看,该命令会显示你的代码提交日志,里面就有你的用户名和邮箱:
如果我们在远端修改了代码,例如直接在gitee的仓库中修改了代码,想直接将其同步到本地,此时就使用“git pull”命令即可。该命令会将云端代码同步到本地
如果想在仓库中删除文件,直接使用“git rm 文件名”即可。删除后要记得使用“git add .”、“git commit '说明信息‘’”和“git push”三条命令将修改内容同步到云端
我们每次提交git时都会有说明信息,那个说明信息就是日志信息。如果想查看日志,在对应仓库目录中使用“git log”命令即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。