赞
踩
小王子里面有一句话:“每个大人都曾是小孩,多少大人还记得呢?”
这就跟学习一样,那些花了很长时间学会某项技能的人,或者他们已经忘记了到底花了多长时间才学会那项技能,等他们学会之后,再给后来人讲述就会冠以“五分钟学会***”,“21天完全掌握***”,“只需要三分钟,真的只需要三分钟,一首歌的时间你就能***”。说真的,我以前是相信这些标题的,毕竟我也想走捷径,因为学习真的太苦了。
可是无数次的实践证明,这些标题都是假的,没错,就连标题里面的标点符号都是假的。
今天我给大家分享一个“五分钟学不会的技能”,具体多长时间能学会看你用的勤不勤了,真的是“无他,孰能生巧尔”。
这项技能就是Git连接GitHub,在一篇文章里把这个技能360度无死角的说一遍,我没有那个能力,但是通过3000+字,让你们了解一下我是怎样用这个技能,这个能力我还是有的。
首先,打开Windows的一个文件夹,你打开的这个文件夹就是本地仓库,里面需要有你想要推送到远程仓库的文件。比如我想把一个文本文件传到GitHub上面。
在本地仓库里面,右键Git Bash Here,输入命令 ssh-keygen -t rsa (ssh-keygen空格,-t空格rsa) 之后回车两次,根据提示输入小写y,之后再连续回车三次,直到出现一堆圈圈点点。
然后,去C盘,找到用户,再找到你自己的用户名,再找到.ssh文件夹,里面有一个id_rsa.pub文件,后缀是.pub就代表是公钥,没有后缀就代表是私钥,私钥是自己留着的,公钥是可以给大家看的。所以我们用的就是带.pub后缀的公钥,右键用记事本打开,按Ctrl+A进行全选,再按Ctrl+C进行复制。
再然后,打开浏览器,登录自己的GitHub,浏览器右上角自己头像的旁边有一个下拉选项,点击之后选择Setting,继续左侧的SSH and GPG keys,再点击页面右上方的New SSH key,随意输入Title,将刚才复制的公钥粘贴到Key的编辑框里,按Add SSH key进行保存
再次点击浏览器右上角的头像下拉选项,选择Your repositories(你的仓库),继续点击页面的右上方的New,输入Repository name,比如我这里起个名叫test,之后果断的点击Create repository ,之后你会看到一个空仓库,里面一堆英文。
强调一下,下面这个页面其他的任何东西不要点,只需要输入Repository name之后点击Create repository,
首先,我们需要自报家门,告诉Git这个应用程序是谁在用它,分别执行下面两句命令:
git config --global user.name “GitHub用户名”
git config --global user.email “注册GitHub用到的邮箱”
然后,初始化本地仓库
git init
再然后,与远程仓库建立连接
git remote add origin git@github.com:GitHub昵称/新建的仓库名.git
接下来,告诉Git你要往远程推送哪些东西
git add .
git commit -m”这个引号里写推送时候需要的备注,必须写”
最后,执行推送命令
git push -u origin master (第一次推送需要加 -u 参数,第二次及以后就不用加了,不过我试了试第一次不加也能成功,但是为了保险起见,建议你加上 -u 参数)
执行完成之后,想要看看推送是否成功,我们需要再次点击浏览器右上角头像一旁的下拉选项,选择Your repositories,然后点击刚刚创建的仓库,进去之后你就会发现本地文件已经上传到GitHub了。
比如说,我刚才是把路径为
Desktop/MyBlog/新建文件夹/
这个文件夹里的图片推送到一个新建的空的远程仓库了,现在远程仓库已经有一些图片存在了,那么假如我想把我写的一些代码也推送到这个test远程仓库怎么办?当然,前期步骤还是一样:
首先,找到我的代码文件所在位置,右键Git Bash Here
因为Git这个应用程序已经知道是你在用它了(user.name和user.email刚才都配置过了),所以就没必要再执行git config –globa那个命令了,直接上来就是初始化本地仓库,然后与远程仓库建立连接,再告诉Git你想要推送到远程仓库的文件。
上面那些步骤都没问题,关键是最后推送的时候,会出现拒绝推送的错误。
原因就是,你远程仓库里面有的东西你本地仓库里面没有。比如说我现在远程仓库test里面存放了一个”新建文本文档.txt”,而我本地仓库现在只有第三章的代码(因为为换文件夹了,所以”新建文本文档.txt”不在这个文件夹里),这就难为Git了。
为什么这就难为Git了?因为Git的本质是“版本控制”,所谓版本控制就是在原有的基础上更新迭代,远程仓库原有的是”新建文本文档.txt”,而你现在只有一些代码,Git不是百度云,不能说你想怎么上传就怎么上传。
为了解决这个问题,我们执行下面的命令:
git pull origin master --allow-unrelated-histories
这个命令的作用就是把远程仓库里有的而本地仓库里没有的给下载(pull)到本地,执行的时候Git会调用一个类似Vi的编辑器,让你记录一下为什么要执行pull操作,随意写写之后保存退出。
执行完pull操作后,你会发现你的本地多了一个”新建文本文档.txt”,这个就是远程有的而本地没有的,这时候再次执行推送命令就可以推送成功了。
git push -f origin master
这个命令会强制把本地文件推送到远端,远端未在本地的文件将会丢失。
除非远端仓库是空仓库或者一些无关紧要的文件,否则不要用这个命令。
本地仓库原先有三张图片,我将其推送到远程仓库,之后我在远程仓库手动创建了一个文件a.txt,然后我又在本地仓库创建了一个“新建文本文档.txt”。
这个时候我想要把本地的“新建文本文档.txt”推送到远程,我有两种选择,一种是工作的时候用的方式,就是上面讲到的先pull一下,把远程的东西给拉下来,再push本地的东西。还有一种选择就是强行推送,即命令:git push -f origin master
执行完命令后,刷新远程仓库的界面
发现本地的“新建文本文档.txt”是推送上去了,可是远程里面的a.txt没了,这就是强制推送,强制让远程仓库和本地仓库统一。
如果说是自己一个人玩玩,这没什么的,假如是团队协作,不光你一个人用Git,别人也在往这个仓库里推送人家自己的代码,你一下子把人家辛辛苦苦敲出来的代码都给搞没了,不说翻脸,也不说动刀子,把枪的都有。真的,美国有个新闻就是说一个程序猿不满另一个程序猿xjb用Git,经常强制推送,最后一枪把那个人给崩了。
git clean -d -fx
这个命令会把本地未曾和git有过交集的文件删除,慎用!!!
请看我先买这两张图片的文件内容
有没有发现同样是在路径/第三章底下,可是上面的那张还有好多个文件夹,下面的那张就只有四个文件夹,这就是我只对上传文件 、国际化应用 和jsp_struts_javabean_jdbc这三个项目执行了git add之后就执行了一下git clean -d -fx这个命令,而我之前又不知到这个命令的作用,所以我的那些项目就都没了,真的没了,回收站里都没有。
如果你没理解这个命令的作用,我再给你举个例子,比如说我现在在本地仓库新建三个文件夹,不对这三个文件夹执行git add 命令,直接执行git clean -d -fx,执行前后对比图如下:
看出来了吧,只要是和Git不沾边的文件,这个命令都会将其删除,而且是删的一干二净,哪里也找不到,可能找回这些被删除文件的唯一办法就是赶紧切断电源,拔下磁盘,然后找专业人员进行数据恢复。否则,误删了项目代码,你的数月努力都将付之东流。
Git第一次连接GitHub用到的命令
生成SSH
ssh-keygen -t rsa
自报家门
git config --global user.name “GitHub用户名”
git config --global user.email “GitHub注册时的邮箱”
初始化本地仓库
git init
与远程仓库建立连接
git remote add origin git@github.com:GitHub用户名/新建的仓库名.git
将要推送的文件加入到本地仓库
git add .
点代表此目录下的所有的文件,也可以使用git add 具体文件名称
这样只会添加一个文件到本地仓库
git commit -m”推送到远程的备注信息”
-m和备注信息之间不需要空格
备注信息是必须要有的
git push -u origin master
Git第二次连接GitHub的同一个仓库需要用到的命令
初始化本地仓库
git init
与远程仓库建立连接
git remote add origin git@github.com:GitHub用户名/新建的仓库名.git
将要推送的文件加入到本地仓库
git add .
git commit -m”推送到远程的备注信息”
将远程仓库的文件拉取到本地仓库
git pull origin master --allow-unrelated-histories
git push origin master
最后推荐一个学习Git的好地方:
【廖雪峰的官方网站】:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
.
看完如果觉得不错,留个赞再走。
.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。