Github 是开源一个代码仓库,上面有很多出色并且有趣的项目,很多开源产品的源代码都托管在上面, 你可以看到整个项目的发展,同时也可以多人协作开发项目,个人使用者完全免费,但是代码也是公开的, 当然Github也提供了付费版的支持,如果你不想付费,也可以考虑自己搭建gogs

Github 和 Git 有什么不同?

Git 是一个代码管理工具,支持代码修订记录,代码分支,分支合并,代码回滚。而 Github 相当于是一个 中心仓库,所有人的代码都可以通过 Git 工具往 Github 或者 其余替代产品中同步,也可以从中心仓库把 代码下载到本地环境,修订后再同步到云端,多人协作的过程中,由其中一个人再 Github 建立一个原始的 中心仓库,其余的写作者从这个仓库 fork 一份到自己的 GitHub ,然后每个人开发之前,先从中心仓库中 获取最新的代码,然后在自己本地开发功能,开发完成后,先提交到自己的 Github ,然后通过提交 Merge Request 把新功能合并到中心仓库,其余的开发者再从中心仓库同步到自己的 Github。

Git 的基本使用

Git 主要功能如下:

  • git init: 本地代码目录初始化,开始记录各项修改
  • git commit: 锁定本地某个修改,并记录到历史中
  • git clone: 从Github下载代码到本地目录
  • git pull: 从自己的Github或者从中心仓库同步最新的代码
  • git push: 将本地的代码修改提交到自己的Github
  • git checkout: 切换本地代码分支,或者创建新的代码分支
  • git remote: 管理远端的Github仓库,可能有多个,一般包括自己的Github项目和该项目的中心仓库配置
  • git tag: 给代码的关键历史打tag,方便日后快速回滚发布

开始一个新的项目

  1. 首先注册Github 如果已经有了,这一步可以忽略
  2. 在自己的主页建立一个空白的项目,需要填写项目的名字,描述,所使用的主要语言环境,仓库协议
  3. 创建完成后,就可以通过项目主页的clone路径,将代码下载到本地的环境中。
git clone https://github.com/smileboywtu/MillionHeroAssistant

如果项目已经在本地开发完成了,想要开源到自己的Github页面,那么在建立项目的时候最好不要选择仓库协议和 主页的READMME,主要是建立一个完全空的仓库,不包括任何的文件。

## 配置自己的github,替换成你自己的邮箱和名字
git config --global user.name "smileboywtu"
git config --global user.email "smileboywtu@gmail.com"

## 本地代码目录中
git init

## 将所有的文件添加到版本管理中
git add -A

## 提交当前的修改
git commit -am "initialize code repo"

## 配置自己的远端仓库路径
git remote origin https://github.com/smileboywtu/MillionHeroAssistant.git

## 推送本地的代码以及历史到自己的github
git push origin master

参与一个已有的项目

  1. 进入到项目的中心仓库,点击fork到自己的Github
  2. 从自己的Github页面clone代码到本地,修改版本并提交
  3. 将自己的代码先提交到自己的Github仓库
## 显示所有的remote 配置
git remote -v

## 如果没有中心仓库的话,先添加中心仓库的remote
git remote add center https://github.com/smileboywtu/MillionHeroAssistant.git

## 先从中心仓库拉取最新的代码
## 这一步可能会发生merge,具体原因是自己的代码落后于中心仓库的代码
git fetch center

## 提交本地的修改到自己的github
git push origin master
  1. 在自己的项目主页,pull requests选项卡下面提交合并到中心仓库的PR
  2. 中心仓库的维护者,会在收到PR后,做code review,最后会决定是合并还是拒绝

.gitignore 文件有什么用?

使用 Git 工具进行版本管理的时候,添加文件可能比较多,挨个使用git add命令添加,一般都比较费事, 而且有些文件只能是本地可见,并不想开源,这个时候某些文件就不需要被写到版本里面。.gitignore文件就是 用来记录那些不需要提交到仓库的文件,对于python来说,一个典型的.gitignore文件内容如下:

.idea
*.pyc
__pycache__
core/__pycache__
screenshots
.vscode
.DS_Store
dist
build

如果你添加了.gitignore文件后,那么文件中的每一行中可以使用完整的文件名字,或者简单的匹配来忽略 文件,在.gitignore文件中那些匹配的文件在你使用git add -A的时候,不会添加到仓库,也不会提交 到Github,相当于是未开源。

.gitkeep 文件有什么用?

Git 默认是不能添加完全空的文件夹的,如果需要对空文件夹版本进行控制,需要在空文件夹中添加一个 .gitkeep 文件 这个文件名字和文件内容是没有任何要求的,但是大家形成的惯例是使用 .gitkeep 来保留文件夹,文件的内容为空。

git tag 的简单使用

使用git tag命令可以简单的管理release的版本,比如你对一个项目做了重大的修改,足以提交一个新版本,那么 在你的所有代码确定提交后,也就是commit之后,只用git tag tagname对最新的代码打一个tag,可以用git log -v 命令看到你的tag信息,也可以使用git tag -l显示你所有的tag,由于 Github 也是支持tag的,所以在推送 到仓库的时候使用--tags参数将tag提交过去。