GitHub上混迹多年,近来想到应该整理一下关于GitHub使用的知识和技能,以成系统,于是重读《GitHub入门与实践》一书,并做一点如下的阅读笔记。
一、什么是GitHub
GitHub是为开发者提供Git仓库的托管服务。同时还为开发者或团队提供一系列助其高效率、高品质地编写代码的其他功能。
GitHub与Git的区别。GitHub与Git是完全不同的两个东西。在Git中,源代码会存入叫“Git仓库”的资料库中,而GitHub则是在网络上提供Git仓库的一项服务。
社会化编程。GitHub服务为开源世界带来了社会化编程的概念。放眼世界,注意那些日新月异的源代码、技术、设计以及文化,会对自己编写的源代码及成果带来巨大影响。
GitHub与以往仓库托管服务最大的不同点,在于它以人为中心。以往的仓库托管服务都是以项目为中心,每个项目就是一个信息封闭的世界。
二、Git的导入
Git仓库管理功能是GitHub的核心。使用GitHub前需清楚Git的相关知识,并且本地安装Git环境。
Git是分散型版本管理系统,是为版本管理而设计的软件。在Git出现以前,人们普遍采用Subversion等集中型版本管理系统。
安装。最近的Mac中都预装了Git。而各版本的Linux中也都以软件包的形式提供了,可直接使用。Windows环境中,最简单快捷的方式是使用msysGit(略...) 。
初始设置。首先设置使用Git时的姓名和邮箱地址。名字用英文输入。
git config --global user.email "your_email@example.com"
另外,将color.ui设置为auto可以让命令的输出拥有更高的可读性。
$ git config --global color.ui auto
三、使用GitHub的简要相关准备
创建账户、设置SSH Key 。。。。。。
创建仓库、连接仓库、编写代码、提交。。。。
四、Git实际操作学习
1、基本操作
git init ---初始化仓库
要使用Git进行版本管理,须先初始化仓库。初始化成功后,执行git init命令的目录下就会生成.git目录。此.git目录里存储着管理 当前目录内容所需的仓库数据。
在Git中,将此目录的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。若要将文件恢复到原先状态,可从仓库中调取之前的快照,在工作树中打开。
cd git-tutorial
$ git init
git status ---查看仓库的状态
工作树和仓库在被操作的过程中,状态会不断发生变化,可用git status命令查看当前状态。
$ git status
git add ---向暂存区中添加文件
如果只是用Git仓库的工作树创建了文件,那么该文件并不会被记入Git仓库的版本管理对象中。要想让文件成为Git仓库的管理对象,就需要用git add命令将其加入暂存区。暂存区是提交之前的一个临时区域。
git status
git commit ---保存仓库的历史记录
git commit命令可将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,可以在工作树中复原文件。
$ git commit -m "First commit"
git log ---查看提交日志
git log命令可以查看以往仓库中提交的日志,包括什么人什么时候进行了提交或合并。可显示commit哈希值、author及date等。
git log README.md
git log -p,git log加上-p参数可以查看提交所带来的改动,文件的前后差别就会显示在提交信息之后。
如$ git log -p README.md
git diff---查看更改前后的差别
git diff可查看工作树、暂存区、最新提交之间的差别。
$ git diff
注:建议在执行git commit命令之前执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别。
2、分支操作
进行多个分支并行作业时,会用到分支。在这类并行开发过程中,往往同时存在多个最新代码状态。不同分支中,可以同时进行完全不同的作业。等该分支的作业完成之后再与master分支合并。通过灵活运用分支,可多人高效地并行开发。
git branch --- 显示分支一览表
git checkout -b feature-A 创建名为feature-A的分支并切换。也可连续执行两条命令实现:
git checkout feature-A
git checkout master---切换到master分支。
git checkout - 切换回上一分支。
git checkout master
随机合并feature-A分支。
git log --graph
3、更改提交到操作
Git的另一特征是可以灵活操作历史版本。凭借分散仓库的优势,在不影响其他仓库的前提下对历史版本进行操作。
git commit --amend
执行此命令后,编辑器会启动,在其中可修改提交信息。
git rebase -I ---压缩历史
4、推送至远程仓库
git remote add ---添加远程仓库
git push -u origin master 当前分支的内容会推送给远程仓库的origin 的master分支。-u参数可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游).
$ git push -u origin feature-D 推送至远程仓库的feature-D分支。
5、从远程仓库获取
git clone --- 获取远程仓库
git checkout -b feature-D origin/feature-D
-b 参数的后面是本地放开中新建分支的名称。新建分支名称后面是获取来源的分支名称。
git pull ---获取最新的远程仓库分支
$ git pull origin feature-D
在本地feature-D分支中执行此命令,将本地的feature-D分支更新到远程仓库feature-D最新状态。
五、Pull Request
Pull Request是社会化编程的象征。是修改源代码后,请求对方仓库采纳该修改时的行为。
。。。待续