GitHub

Eric讨论 | 贡献2020年8月27日 (四) 04:38的版本 (创建页面,内容为“GitHub是通过Git进行版本控制的软件源代码托管服务平台。目前世界上最大的代码存放网站和开源社区。GitHub采用Ruby on Rails和Er…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

GitHub是通过Git进行版本控制的软件源代码托管服务平台。目前世界上最大的代码存放网站和开源社区。GitHub采用Ruby on Rails和Erlang作为后端。2018年6月4日,美国科技公司微软宣布以75亿美元的股票收购GitHub。

简介

时间轴

  • 2007年10月1日,GitHub平台开始开发。
  • 2008年2月,GitHub公司成立,GitHub平台开始上线。
  • 2013年4月,GitHub用户数达到350万,代码库数量达到6百万个。
  • 2018年6月4日,美国科技公司微软宣布以75亿美元的股票收购GitHub。
  • 2019年1月7日,GitHub宣布免费用户也可以创建私有仓库,私有仓库数量不限但每个仓库最多指定三个合作者。
  • 2019年5月,GitHub更新了用户协议,表明GitHub的产品和服务适用于美国出口管制法律。
  • 2019年7月起,GitHub基于美国出口管理条例,开始对伊朗、叙利亚和克里米亚的私人repo和付费账户实施限制。
  • 2020年4月14日,GitHub宣布进一步开放核心功能,取消私有仓库合作者数量限制,并降低了收费账号费用。

用户

许多程序库、开发框架都采用GitHub作为为主版本控制平台,其中包括:

功能

Github的主要功能:

  • 软件开发版本控制,代码托管。
  • 文档:包括自动生成的、采用类Markdown语言的Readme文件。
  • 问题追踪系统(同时可用于功能需求)
  • Wiki
  • GitHub Pages支持用户通过软件仓库创建静态网站或静态博客。
  • 任务列表
  • 甘特图
  • 可视化的地理位置分析。
  • 预览3D渲染文件。预览功能通过WebGL和Three.js实现。
  • 预览Adobe Photoshop的PSD文件,甚至可以比较同一文件的不同版本。

使用方式

GitHub网页

使用GitHub可以直接在网页使用,不用输入任何命令。

注册账号

GitHub官网注册一个账号。

资源搜索

创建仓库

上传代码

了解更多 >> GitHub指南:hello world


Git命令

安装git并配置

在ubuntu上安装git软件,然后配置git用户名和邮箱,设置为Github的用户名和邮箱。可以不配置,git会使用主机用户名和主机名自动生成,但提交到Github仓库时不会显示你为贡献者,还可能会显示其他人为贡献者:

#安装git
 sudo apt-get install git
#设置git信息,输入你Github的用户名和邮箱。
git config --global user.name yourname
git config --global user.email yourname@email.com

上传代码

首先在GitHub上创建一个仓库,然后复制好这个仓库的Https地址,如下面这个地址是用户名为yourname创建的Test仓库:

https://github.com/yourname/Test.git

接下来在本地操作:

#进入要上传项目的文件夹,如mytest项目文件夹
cd mytest
#通过git init命令把这个文件夹变成Git可管理的仓库
git init
#可以通过git status查看状态
git status
#使用git add <file>把需要包含的文件添加到本地仓库,如添加文件夹下全部文件:
git add .
#git commit提交到本地仓库版本库,可以使用-m参数版本的描述,如:
git commit -m "flask升级到2.2"
#使用git remote add命令关联本地仓库和Github仓库,如:
git remote add origin https://github.com/yourname/Test.git
#使用git push上传到Github仓库,由于新建的远程仓库是空的,所以要加上-u这个参数,如:
git push -u origin master

可能遇到的错误:[rejected] master -> master (non-fast-forward) 这是由于跟新前本地仓库和Github仓库就有不一样,需要先同步:

git pull origin master --allow-unrelated-histories

然后重复add和commit命令,再push上传到GitHub就行了。

同步下载

在github网页修改后,需要把修改同步到本地,可以使用git pull拉取线上内容。

#git pull origin master为默认分支,可以简写为git pull
git pull 

可能遇到的错误:Your local changes to the following files would be overwritten by merge:Please commit your changes or stash them before you merge. 由于本地还有修改未提交,有两种解决方法:

1.需要保留本地修改的内容:

git stash  
git pull origin master  
git stash pop 

2.不需要保留,直接恢复到上一个commit id:

git reset --hard 
git pull origin master

配置SSH key

配置SSH key后可以上传代码,可以不用再输入账号密码。

GitHub客户端

基础教程

忽略文件

  • 使用.gitignore设置单个项目的git忽略文件,直接在项目的根目录下创建一个.gitignore,git会根据你的设置自动忽略不想提交的文件。

如下.gitignore

#井号开头表示注释行

#忽略所有python编译文件夹
__pycache__/

#忽略所有jupyter文件夹
.ipynb_checkpoints/

#忽略所有以.db结尾文件
*.db

要忽略git仓库中已存在的文件,必须在先使用git rm删除该文件,再修改.gitignore添加忽略该文件。使用git add和commit命令,再push上传到GitHub就可以同步删除GitHub文件。

git rm --cached FILENAME
  • 使用全局.gitignore文件设置电脑上所有项目的git忽略文件
git config --global core.excludesfile ~/.gitignore_global

了解更多 >> GitHub帮助:忽略文件


进阶教程

从仓库中删除敏感数据

如果将敏感数据(例如密码或 SSH 密钥)提交到 Git 仓库,您可以将其从历史记录中删除。 要从仓库的历史记录中彻底删除不需要的文件,您可以使用 git filter-branch 命令或 BFG Repo-Cleaner 开源工具。

使用filter-branch

导航到仓库的工作目录

cd YOUR-REPOSITORY

运行以下命令,将 PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA 替换为您要删除的文件的路径,而不仅仅是其文件名。 这些参数将:

  • 强制 Git 处理但不检出每个分支和标记的完整历史记录
  • 删除指定的文件,以及因此生成的任何空提交
  • 覆盖现有的标记
git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \
  --prune-empty --tag-name-filter cat -- --all

注:如果含有敏感数据的文件曾经存在于任何其他路径中(因为它已被移动或重命名),则也必须在这些路径上运行此命令。

将含有敏感数据的文件添加到 .gitignore 防止下次意外提交它。

echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"

仔细检查您是否已从仓库历史记录中删除所需的所有内容,并且所有分支均已检出。对仓库的状态感到满意后,强制推送本地更改以覆盖 GitHub 仓库,以及您已向上推送的所有分支:

git push origin --force --all

要从标记的发行版删除敏感文件,您还需要强制推送 Git 标记:

git push origin --force --tags

联系 GitHub 支持 或 GitHub 高级支持,请求他们删除 GitHub 上拉取请求中敏感数据的缓存视图和引用。

告知协作者变基而不是合并他们从旧的(污染的) 仓库历史记录创建的任何分支。 一次合并提交可能会重新引入您刚刚遇到清除问题的部分或全部污染的历史记录。


使用 BFG

BFG Repo-Cleaner 是一种由开源社区构建和维护的工具。 它提供一种更快、更简单的 git filter-branch 替代方法,用于删除不需要的数据。


有一些简单的技巧可避免提交您不想要提交的内容:

  • 使用如 GitHub Desktop 或 gitk 之类的可视程序提交更改。 可视程序通常可以更容易地查看每次提交时将添加、删除和修改具体哪些文件。
  • 避免在命令行中使用全部捕获命令 git add . 和 git commit -a — 使用 git add filename 和 git rm filename 逐个暂存文件。
  • 使用 git add --interactive 逐个查看和暂存每个文件中的更改。
  • 使用 git diff --cached 查看您为提交暂存的更改。 只要不使用 -a 标志,这就是 git commit 将产生的确切差异。

了解更多 >> GitHub帮助:从仓库中删除敏感数据


资源

官网

相关网站

参考资料