介绍下Github工程中常见的特殊文件

Github工程中常见的特殊文件

Posted by Mcoder on April 4, 2019 页面浏览

新的计算机从业者很多会奇怪为什么很多github工程中都会有些相同命名的文件,这里为大家简要介绍其中的几个。

README.md

如上图,通常我们打开一个Github时都会在其下方看到关于工程的介绍说明,readme的意思“读我”也是希望访问工程的读者首先读一下这里的内容。通常包括工程的介绍、工程的效果展示、工程的编译说明、如何为此工程做出贡献、以及工程文档等相关内容。有的时候因为内容过多,会新建更多的*.md文档放在doc/目录下,并在readme文件中插入超链接跳转过去。

Markdown

*.md文件是markdown文件格式的后缀名,当前时代的程序猿如果不知道MarkDown便有些与时代脱节了。

Markdown 是一种轻量级标记语言,它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。

我们只需要记住简单的markdown语法,然后便可以在众多支持markdown的平台发表博客,他相比传统的超文本编辑器更加的轻量简洁,目的是使写作者能够专注于内容而非排版。很多支持markdown语法的平台会将markdown渲染的非常精美优秀。

markdown的语法各平台的兼容性也不尽相同,我们可以主要学习Github的markdown标准

在本地支持markdown的编辑器也比较多,比如:VS CodeATOM等都是支持markdown的非常好用的编辑器,他们拥有丰富的第三方插件,支持各种编程语言的语法高亮,很适合用来阅读Github上clone下来的代码。

.gitignore

.gitignore文件是用来记录某些你不想要同步的文件的规则的。

为啥?很多时候你在编译自己的项目时会 生成大量的临时文件 ,比如使用gcc编译C++代码时会生成很多*.o类型文件,而这些文件不仅占用大量的存储空间而且不同平台不同版本的gcc生成的文件具体细节并不一样。如果让git对这类文件进行版本控制,不仅耗费性能还占用存储空间。又或者你写了一些调试代码,其中有包含你个人数据库服务器的秘钥,而 这些文件并不是你希望分享给他人的

在这种时候我们便需要使用一些过滤规则来防止git讲该类型文件加入版本控制,防止git将这些文件推送到github等开源代码管理平台。这里有git官方的gitignore文件规则说明,也有github关于该文件的说明Github ignore files

使用方法

首先,在你的工作区新建一个名称为.gitignore的文件,注意该文件是没有文件名的,有的时候windows会阻止你创建该文件,所以你需要编辑器中创建该文件。 然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。 gitignore文件不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。

举个例子,如果你是一个C++写手,你需要屏蔽和你使用的IDE相关的文件,比如Visual Studio,那么我们从VisualStudio.gitignore中复制前人预制的关于VisualStudio临时文件的规则,将他们复制到你的文件,然后再打开C++.gitignore文件,复制关于C++的规则。最后,追加些自己的自定义规则,比如:放置了我个人测试数据的文件夹test_data/,我个人写的测试的cpp脚本test.cpp,个人导入的工程的一些项目运行需要的重要信息文件pre_info.json。最后生成了如下文件:

## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore

# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates

# *******************************
# 太多了选择省略,以上内容为VisualStudio.gitignore文件内容

# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# *******************************
# 太多了选择省略,以上内容为C++.gitignore文件内容

# My ignore filter
test_data/
test.cpp
pre_info.json
# 以上为自定义的过滤规则

LICENSE

所谓LICENSE便是英文许可的意思,是为了避免非法所采取的法律允许行为,最初在项目中放置一个LICENSE是开源软件做的事,为了让更多的人加入开源软件活动,同时为了避免大型商业公司大规模使用开源代码而侵犯开源项目的知识产权的行为。

简要的说,你开源了一个项目,自然是希望大家和你一起共同使用,甚至寻求有志同道合的朋友与你一同维护,为你提出更好的改进意见。而这个时候出现了一个人,他复制了你的代码,拿去开了公司赚钱。于是你的辛苦付出,只是为了他人做了嫁衣,心里一定是很不舒服吧。因此有些开源协议会作出要求,不得用于商业活动,有的开源协议中要求是,如果你在工程A中用了本协议AA的有关代码,那么你的工程A也要服从本协议AA的要求,并且划归于开源项目。甲骨文公司收购MySQL的案例可以看出开源协议对于广大开源社区的一个好处,即便你收买了一个开源软件的开发团队,也无法将已经开源的软件收编成一个完全商业的软件。

鸟哥在鸟哥的linux私房菜-关于GNU计划、自由软件与开放源代码中对开源协议的历史做出了一些介绍,开源协议是伴随着Unix成长起来的,是一个非常珍贵的东西并且形成了一定的规则。我们后来加入的程序员需要默默的遵守规则,而不是破坏规则,我们需要了解一些常见的开源协议,并且学会为自己的项目选取合适的开源协议。

世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种—-GPL、BSD、MIT、Mozilla、Apache和LGPL—-之中做选择,也很复杂。阮一峰老师在他的博客中总结了一些开源协议的选择技巧,也给出了一些常见的开源协议简介,大家有兴趣可以阅读下。

Reference

  1. Markdown Github
  2. Markdown tutorial
  3. Git gitignore
  4. Github ignore files
  5. 鸟哥的linux私房菜-关于GNU计划、自由软件与开放源代码
  6. 如何选择开源许可证?-阮一峰
  7. 开源许可证教程 -阮一峰
  8. 为什么GPL是更好的开源许可证? -阮一峰