这里是本人所需的相关笔记,如果需要详细的教程可以点击这里
附上git常用命令git cheatsheet
使用GitHub
目的
- 借助github托管代码
基本概念
- Repository :仓库,仓库用来存放项目代码,每个项目对应一个仓库,多个开源项目则有多个仓库。
- Star :收藏项目,方便下次查看。
- Fork:复制克隆项目,自动在自己的GitHub账户中新建一个同名仓库,存放要复制的项目代码。
- Pull Request:发送请求。此操作基于Fork,张三Fork了李四的项目A,张三的账户中会有一个同名项目仓库A',张三对A'进行了改进,且希望将此改进应用到原项目A中,则可以发送请求,李四就会收到请求,然后检查张三的代码,如果OK了,就可以同意这个请求,这时张三的改进就会并入到原项目A中。
- Watch:关注,若你关注了某个项目,那么以后这个项目有任何更新,你都会在第一时间收到关于这个项目的通知提醒。
- Issue:当项目中的代码出现Bug,或者有需要改进的地方,但又没有成形的代码,需要进行讨论时,就可以在项目下提一个Issue。
- Github主页、项目主页、个人主页
开源项目贡献流程
1、新建Issue
- 提交使用问题、建议或者想法
2、Pull Request
1.Fork项目
2.修改自己仓库的项目代码
3.新建pull request
4.等待作者操作
使用Git
目的
- 通过Git管理GitHub托管项目代码
安装
- 基于win10系统
- 在git官网上下载并安装git,设置全都选择默认即可。
-
新建项目文件夹,并在新建文件夹中打开git命令行终端,如下图
我在桌面上新建了一个git_learn文件夹,然后进入这个文件夹中右键打开git bash(如果鼠标右键未出现git bash,说明安装未成功),输入pwd显示当前工作路径。
Git初始化及仓库创建和操作
基本信息设置
-
设置用户名和用户名邮箱
- git默认的编辑器是vim,你也可以通过修改环境变量使用自己的编辑器,比如sublime或notepad++。
创建仓库
- 仓库(Repository)也称为版本库,在本地电脑上我们可以简单理解为一个文件夹,然后用Git对这个文件夹中的文件进行跟踪,实现版本控制。
- 初始化仓库,在前面我们建立了一个git_learn的文件夹,这个文件夹和普通的文件夹没有区别,git也不能对其中的文件进行跟踪管理,要想将这个文件夹初始化成一个git仓库,只需在此文件夹路径下运行git init指令即可,如下图
工作区、暂存区和版本库(仓库)
- 当我们向仓库中添加文件时,一般需要两个步骤(当然,事先我们需要在文件夹中编辑好需要添加的文件)。例如,在上面的git_learn文件夹中编写一个文件readme.txt,然后用git add readme.txt命令添加文件,再用git commit -m "commit description"命令进行提交。如下图
- 现在说明工作区、暂存区和版本库的概念,在上面git_learn文件夹就是工作区,当运行git init之后创建的.git子文件夹就是版本库,而在.git文件夹中有一个index的文件,也称为stage(暂存区)。add命令将文件或者修改(可以有多个)送入暂存区,commit命令将暂存区所有内容提交到当前分支(在这里就是master分支)。详细说明可以参考这里 工作区、暂存区
远程仓库
- 情况一般是这样,有一台电脑充当服务器的角色,里面有最初的仓库,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。这就是一个远程仓库,现阶段最熟悉的远程仓库就GitHub。
- GitHub就是提供Git仓库托管服务的,所以,只要注册一个GitHub账号,就可以免费获得Git远程仓库。
ssh连接
- 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要设置:
- 创建SSH Key,在用户主目录下看看有没有.ssh文件夹,此文件夹下的id_rsa和id_rsa.pub分别是私钥和公钥。如果没有.ssh文件夹,在Git Bash终端创建,使用如下命令(前提已经安装了ssh):
$ ssh-keygen -t rsa -C "your_email@example.com"
然后一路回车,这里无需设置密码。
- 登录GitHub,打开Account setting的SSH Keys界面,点击Add SSH Key,填上任意Title,在Key文本框粘贴id_rsa.pub文件的内容。
- GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。
- GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
- 在GitHub上免费托管的Git仓库,任何人都可以看到,但只有你才能修改。
添加远程仓库
- 首先,在本地建立一个Git仓库,这里就用前面的git_learn仓库
- 登录GitHub,新建一个仓库,名字为git_learn,其他保持默认。这样,新建的GitHub仓库是空的,我们根据页面的提示把一个已有的本地仓库与之关联,然后把本地仓库的内容推送到GitHub仓库
- 在本地git_learn仓库下运行命令:
$ git remote add origin https://github.com/acphart/git_learn.git
这样我电脑上的git_learn仓库就与我的GitHub账户中的git_learn远程仓库相关联了。
origin是远程库的名字,也可以改成别的。
- 将本地仓库的所有内容推送到远程库中
$ git push -u origin master
第一次推送的时候加上-u参数,Git不但会将本地的master分支内容推送到远程仓库的master分支,还会把本地master分支与远程的master分支相关联。
- 现在在GitHub上的远程仓库就和本地仓库一样了,而且从现在起,只要本地做了提交,就可以通过命令:
$ git push origin master
把本地master分支最新的修改推送至GitHub。
总结工作中各个文件的更新状态
- 首先在本地工作区的文件是最新的,即git_learn文件夹下的文件
- 本地暂存区的内容是次新的,是由add命令添加的
- 本地版本库的内容再次,由commit命令提交的
- 远程仓库的内容最旧(对于作者个人而言,除去多人协作的情况),由push命令推送。
- 前三部分的内容是在本地电脑上的,如果本地硬盘崩了,这些都没了。
- 远程仓库的内容除非主动删除,否则不会丢失,只需联网即可拉取到本地。
- 没有联网的时候可以在本地工作,不需要考虑远程库的存在,而联网时可以本地提交推送完成同步。