GitHub使用指南
创建分支
- 在分支上所做的更改不会影响master分支,因此可以自由地进行实验和提交更改,并且分支将不会合并,直到准备好与正在协作的人进行审核
- master分支中的任何内容始终都是可部署的
- 在处理功能或修复时,创建新分支非常重要。您的分行名称应该是描述性的,例如
make-retina-avatars
,user-content-cache-key
;
添加提交
- 无论何时添加,编辑或删除文件,都要进行提交,并将它们添加到分支。添加提交的过程会在处理功能分支时跟踪进度
- 提交还可以创建一份透明的工作历史记录,其他人可以遵循这些历史记录来了解已完成的工作和原因
- 每个提交都被视为一个单独的变更单位
- 如果发现错误,或者决定朝不同方向前进,则可以回滚更改
- 提交消息很重要,特别是因为Git会跟踪更改,然后在将它们推送到服务器后将其显示为提交。通过编写清晰的提交消息,可以更轻松地让其他人跟进并提供反馈
打开拉取请求
- Pull Requests对于贡献开源项目和管理对共享存储库的更改很有用。
- 如果使用的是Fork&Pull模型,则Pull Requests提供了一种向项目维护人员通知希望他们考虑的更改的方法。
- 如果使用的是共享存储库模型,则Pull Requests会在合并到主分支之前帮助启动代码审查和有关建议更改的对话。
讨论并检查代码
- 一旦拉开请求被打开,审核您的更改的人员或团队可能会有问题或意见
- GitHub将在统一的Pull Request视图中显示您的新提交以及您可能收到的任何其他反馈
- Pull Request注释是用Markdown编写的,因此可以嵌入图像和表情符号,使用预先格式化的文本块和其他轻量级格式
部署
- 使用GitHub,可以在合并到master之前从分支部署进行生产中的最终测试
- 如果分支导致问题,可以通过将现有主数据库部署到生产中来回滚它
合并
- 将代码合并到主分支中,合并后,Pull Requests会保留代码历史更改的记录
- 因为它们是可搜索的,所以任何人都可以及时回过头来理解为什么以及如何做出决定。
- 通过将某些关键字合并到Pull请求的文本中,可以将问题与代码相关联。合并Pull请求后,相关问题也将关闭。例如,输入短语
Closes #32
将关闭存储库中的第32个问题。
GitHub实践–项目提交
创建和使用存储库
GitHub简介
- GitHub是用于版本控制和协作的代码托管平台;在任何地方与任何人协同工作;存储库/分支/提交/Pull请求
创建存储库
- 一个库通常用于举办单个项目
- 存储库可以包含文件夹和文件,图像,视频,电子表格和数据集 - 项目需要的任何内容
- 建议包括README或包含项目信息的文件
创建新存储库
- 在右上角,在头像或identicon旁边,单击 + 然后选择New repository
- 命名存储库
- 写一个简短的描述
- 选择使用自述文件初始化此存储库
- 单击创建存储库
启动和管理新分支
创建一个分支
- 分支是一次在不同版本的存储库上工作的方式
- 默认情况下,存储库有一个名为branch的分支master,它被认为是权威分支。使用分支进行实验并在提交之前进行编辑master
- 当在分支机构上创建分支时master,正在创建该master时间点的副本或快照。如果其他人master在分支机构工作时对分支进行了更改,则可以引入这些更新。
- 在GitHub,开发人员,编写人员和设计人员使用分支来保持错误修复和功能工作与master(生产)分支分开。当更改准备就绪时,
创建一个新分支
- 转到存储库
- 单击文件列表顶部的下拉列表:master:master
- 在新分支文本框中键入分支名称
- 选择蓝色的创建分支框或按键盘上的“Enter”
- 现在有两个分支,master和readme-edits。它们看起来完全一样,接下来,将更改添加到新分支。
对文件进行更改并将其作为提交推送到GitHub
概括
- 在GitHub上,保存的更改称为提交
- 每个提交都有一个关联的提交消息,这是一个解释为什么进行特定更改的描述
- 提交消息可捕获更改的历史记录,因此其他贡献者可以了解您已完成的操作和原因
制作并提交更改
- 单击新分支下的该README.md文件
- 点击要编辑的文件视图右上角的铅笔图标
- 在编辑器中,写下该分支的简介信息
- 编写描述更改的提交消息
- 单击提交更改按钮
- 这些更改将只对新分支上的README文件进行,因此现在此分支包含的内容与之不同master
打开并合并拉取请求
打开Pull请求
- Pull Requests是GitHub上合作的核心。当打开拉取请求时,提出了更改并请求某人审核并提取自己的贡献并将其合并到他们的分支中
- Pull Requests显示来自两个分支的内容的差异或差异。更改,添加和减少以绿色和红色显示
- 提交后,即使在代码完成之前,您也可以打开拉取请求并开始讨论
- 可以在自己的存储库中打开pull请求并自行合并;在开展大型项目之前,这是学习GitHub流程的好方法
打开Pull Request以更改README
Git手册
版本控制系统
- 版本控制系统或VCS会跟踪人员和团队一起协作项目时的更改历史记录。
- 随着项目的发展,团队可以运行测试,修复错误并提供新代码,并确信任何版本都可以随时恢复。
- 开发人员可以查看项目历史记录以找出
- 做了哪些更改
- 是谁做出了改变
- 什么时候做出改变
- 为什么需要更改
分布式版本控制系统
- Git是分布式版本控制系统(DVCS);
- DVCS允许完全访问项目的每个文件,分支和迭代,并允许每个用户访问所有更改的完整且自包含的历史记录
关于Git
- Git允许开发人员在一个地方查看他们的变更,决策和任何项目进展的整个时间表
关于存储库
- 一个仓库,或Git项目,包括与项目相关的文件和文件夹的整个集合,每个文件的修订历史记录一起。
- 文件历史记录显示为称为提交的快照,并且提交作为链接列表关系存在,并且可以组织成称为分支的多个开发行。
- 由于Git是DVCS,因此存储库是自包含单元,拥有存储库副本的任何人都可以访问整个代码库及其历史记录。
- 使用命令行或其他易用的接口,git存储库还允许:与历史记录,克隆,创建分支,提交,合并,比较代码版本之间的更改等进行交互
基本Git命令
- 基本命令:git init;git clone;git add;git commit;git status;git branch;git merge;git pull;git push
- 详细命令参考:https://git-scm.com/docs
- Git简要命令:https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Basic-Snapshotting
Github帮助:
https://help.github.com/en/articles/git-and-github-learning-resources
协作开发方式
共享存储库
- 使用共享存储库,个人和团队被明确指定为具有读取,写入或管理员访问权限的贡献者
fork和pull
- fork and pull模型允许任何可以查看项目的人做出贡献。
- fork是开发人员个人帐户下项目的副本。
- 每个开发人员都可以完全控制他们的分支,并可以自由地实现修复或新功能。
- 在fork中完成的工作要么保持独立,要么通过拉动请求浮现回原始项目。在那里,维护人员可以在合并之前查看建议的更改
Fork
简介
- fork:使用GitHub一段时间后,自己想要为其他人的项目做出贡献。或者,希望将某人的项目作为自己的起点。
- 创建“fork”正在生成其他人项目的个人副本
- Forks充当原始存储库和自己的个人副本之间的桥梁。可以提交Pull请求,通过提供原始项目的更改来帮助改善其他人的项目。
- fork是GitHub社交编码的核心
步骤
- 点击fork
- clone/download
- 暂存并提交更改
- make a Puull Request
- 转到项目所在存储库,单击Compare and Pull Request,输入标题和可选说明–提供尽可能多的信息
- 点击发送Pull Request 即可
DOI
MarkDownPad2
https://help.github.com/en/categories/writing-on-github
通过Git上传文件夹至GitHub
基本设置
参考文章(有错误) https://www.cnblogs.com/xiaosongbiog/p/7003601.html
- 绑定用户:打开git-bash.exe
- 因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识
- 用户和邮箱为你github注册的账号和邮箱
- git config –global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定的不同的用户名和邮箱
- 命令:
git config --global user.name "Mr-Zhangheng"
git config --global user.email "1393640672@qq.com"
- 为GitHub账户设置SSH key
- 原理:
- ssh key是加密传输
- git使用rsa,rsa要解决的一个核心问题是,如何使用一对特定的数字,使其中一个数字可以用来加密,而另外一个数字可以用来解密
- 这两个数字就是在使用git和github的时候所遇到的public key也就是公钥以及private key私钥
- 公钥就是那个用来加密的数字,这也就是为什么你在本机生成了公钥之后,要上传到github的原因。从github发回来的,用那公钥加密过的数据,可以用你本地的私钥来还原
- 生成ssh key:
- 首先检查是否已生成密钥
cd ~/.ssh
,ls如果有3个文件,则密钥已经生成,id_rsa.pub就是公钥 - 如果没有生成,那么通过
$ ssh-keygen -t rsa -C “1393640672@qq.com”
来生成。- 1 是路径确认,直接按回车存默认路径即可
- 2 直接回车键,这里我们不使用密码进行登录, 用密码太麻烦
- 3 直接回车键
- 生成成功后,去对应目录用记事本打开id_rsa.pub,得到ssh key公钥 –对应目录C:\Users**.ssh里(**为电脑用户名,每个人不同)
- 首先检查是否已生成密钥
- 原理:
- 为GitHub账户配置ssh key
- 切换到github,展开个人头像的小三角,点击settings
- 打开SSH keys菜单, 点击Add SSH key新增密钥,填上标题,跟仓库保持一致吧,好区分
- 接着将id_rsa.pub文件中key粘贴到此,最后Add key生成密钥
- github账号的SSH keys配置完成
上传本地项目到github
- 在你要上传工程的顶级目录(工程目录)下右键,git bash here
- 命令:
git init
- 初始化成功后会发现项目里多了一个隐藏文件夹.git
- 这个目录是Git用来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了
- 命令:
- 将所有文件添加到仓库
- 命令:
git add .
- 命令:
- 把文件提交到仓库,双引号内是提交注释
- 命令:
git commit -m "提交信息简介"
- 如此本地仓库建立好了
- 命令:
- 关联github仓库
- 到github的相应仓库复制仓库ssh地址
- 执行命令:
git remote add origin git@github.com:Mr-Zhangheng/Java.git
–注意git@github.com:Mr-Zhangheng/Java.git是仓库ssh地址
- 代码合并
- 命令:
git pull --rebase origin master
–注:pull = fetch + merge
- 命令:
- 上传本地代码
- 执行指令:
git push -u origin master
- 上传成功
- git是不能管理空的文件夹的,文件夹里必须有文件才能上传
- 执行指令:
删除GitHub中的某个文件或者文件夹
在Github上我们只能删除仓库,并不能删除文件或者文件夹,所以只能用命令来解决
本地仓库和远程仓库同时删除
只删除远程仓库,不删除本地仓库
远程仓库即GitHub仓库,本地仓库即Git仓库
git rm file_path
;git commit -m "delete_info"
;git push
;删除暂存区或者分支上的文件,同时工作区也不再需要这个文件git rm --cached file_path
;git commit -m "delete remote somefile"
;git push
;需要删除暂存区或分支上的文件,但本地依然需要使用,只是不希望这个文件被版本控制
- 先用git打开本地要操作的仓库,然后把远程仓库拉到本地;
git pull origin master
https://img-blog.csdn.net/20180806200300939?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25pc2hpd29kZWJvY2FpMjE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70 - 使用
dir /ls -a
查看远程仓库包含的文件,文件夹。(可以不操作) git rm -r --cached filename
选择删除你要删除的文件或者文件夹–注: -r参数是循环删除,一般是用来删除目录(文件夹)git commit -m "具体删除日志信息"
交操作信息日志,方便以后查看git push origin master
把修改后的内容push到远程仓库完成删除操作;操作结束- git回滚图 https://images2017.cnblogs.com/blog/425762/201708/425762-20170812194454960-1674213106.png