这个作业属于哪个课程 | 2020面向对象程序设计张栋班 |
---|---|
这个作业要求在哪里 | 面向对象程序设计寒假作业2 |
这个作业的目标 | 新建一个github仓库、使用git把代码传到这个仓库、使用.gitignore文件忽略不要上传的文件 |
其他参考文献 | 廖雪峰git教程、github创建仓库-学习笔记、如何解决error: failed to push some refs to 'xxx(远程库)'、Git忘记添加.gitignore文件 |
实践题
1.首先了解什么是git和GitHub,我在网上找到廖雪峰的教程,这里做个小结:
- (1)什么是git
- Git是目前世界上最先进的分布式版本控制系统(没有之一)。
看不懂,大致理解一下,有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以。 - 历史来源:大概是Linux的创始人Linus因为一些和一个商业的版本控制系统BitKeeper东家BitMover公司的矛盾,所以Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git。看上去好厉害,别人不给就自己创造,好牛好牛。
- 2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub。
- Git是目前世界上最先进的分布式版本控制系统(没有之一)。
- (2)git的特点
- git是分布式版本控制系统,与之对应的是集中式版本控制系统,集中式版本控制系统与百度云盘有些相像,自然缺点都懂,需要网速,而分布式版本控制系统每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。虽然还是不能理解这样多人如何协作,但是时间还长,还可以继续学习。
- Git极其强大的分支管理
更加不懂
- (3)安装git(Windows)
- 在Git官网进行下载,按默认进行安装,安装完成之后打开开始菜单如果有Git Bash这说明安装完毕
2.使用Git和Github
- 创建一个版本库,英文名叫做repository,简单理解就是这个目录中所有文件现在都归属与Git管理,操作如下图(这里下面的name和email后跟上自己的名字和邮箱都应该加上双引号):
- 使用
git init
命令把这个目录变成Git可以管理的仓库如下图:
打开文件夹查看,发现如下图:
并没有按照教程所示的出现.git文件,但是不必担心,点击左上角的查看,然后将隐藏的项目打上勾,就有了,如下图:
这样就好了!!
我把作业2修改后的代码和.ignore文件放入,.gitignore文件用于标记忽略上传的文件名,如下图:
我准备了一张bird.png的图片,所以在.gitignore文件中,我需要加上该文件不予上传,如下图:
- 登录Github官网,登录账号,这里我已经创建好仓库,这里我忘记了添加SSH keys,导致后面上传失败,所以在这边我回到Git Bash,输入如图:其中邮箱填注册Github的邮箱具体步骤参考github创建仓库-学习笔记,如下图:
依照步骤添加到Github上即可,如下图,我已添加完毕。
然后再次遇到问题,我在Git Bash中输入git remote add origin https://github.com/Xingyb14/Test.git
和git push -u origin master
,后发生错误,我百度后发现是因为本地目录中没有README文件,按照如何解决error: failed to push some refs to 'xxx(远程库)'的指示,我输入了git pull –rebase origin master
,从远程对代码进行合并,完成。
等等有些不对劲,我的test.png也被上传上来了,再次百度······ - 发现原先的.gitignore没有起作用,于是我删除原来的.gitignore文件,然后
一顿操作猛如虎,我忘记截图了,简单描述一下过程,首先添加上新的.gitignore文件,我百度一下,发现是可能是因为原来是直接在目录下创建.gitignore文件。由于Windows的种种原因出现差错,这次直接在Git Bash中输入touch .gitignore
,生成了.gitignore文件,然后打开,向里面添加*.png
然后按照Git忘记添加.gitignore文件中的方法,终于成功了!!!直接给出图:
ps:本次作业代码已经全部上传到GitHub仓库
小结:现在真心觉得计算机这东西要学的太多了,曾经我有一个全栈的梦想,但是现在也只能感叹这十几年计算机技术发展的迅猛。鼓励一下,脚踏实地,扎实学好基础,虽然心累,但是在完成任务过后体会到喜悦的感觉妙不可言。