github入门书籍总结
目录
- 第一章 由来
- 第二章 基本知识简介
- 第三章 初始操作
- 3.1 注册账号
- 3.2 创建仓库
- 第四章 具体实际操作
- 4.1 初始化仓库及相关操作
- 4.2 分支操作
- 4.3 消除冲突
- 4.4 压缩历史
- 4.5 推送至远程仓库
- 4.5 从远程仓库获取
第一章 由来
GitHub是为开发者提供Git仓库的托管服务。
Git与GitHub的区别:在Git中,开发者将源代码存入名叫“Git仓库”的资料库中并使用;而GitHub则是在网络上提供Git仓库的一项服务。
Pull Request使得地球上不同位置不同时间的开发者共同开发软件。
GitHub Flavored Markdown语法被用于GitHub作文字标记使用。
GitHub以人为中心,我们可以看到一个人公开的所有源代码,还能看出其他的信息,包括提交信息等。
Issue功能是将一个任务或问题分配给一个Issue进行追求和管理的功能。
第二章 基本知识简介
版本管理就是管理更新的历史记录。
集中型,将所有数据集中存放在服务器中,便于管理,但一旦开发者所处环境无法连接服务器时,就无法获取最新的源代码,使得开发停滞下来。万一翻身服务故障导致数据消失,那就一切前功尽弃了。
分散性,GitHub将仓库Fork给了每一个用户,分散性拥有多个仓库,开发者本地就有仓库,无需连接远程服务器就可以进行开发。
Fork就是将GitHub的某个特定仓库复制到自己的账户下,Fork的仓库与原仓库是两个不同的仓库,开发者可以随便编辑。
所有仓库之间可以push和pull,即使不通过GitHub,开发者A也可以直接向开发者B的仓库进行push和pull。
linux和mac系统自带Git,windows安装git应用程序git bash。
设置姓名和邮箱地址,输入内容会在
~/.gitconfig
中显示
git config --global user.name "Firstname Lastname"
git config --global user.email "email@example.com"
- 另外,为了提高可读性,可以设置
git config --global corlor.ui auto
第三章 初始操作
3.1 注册账号
注册账号https://github.com/
设置SSH Key,GitHub上连接已有仓库时的认证,是通过使用了SSH的公开密钥认证方式进行的。
$ ssh-keygen -t rsa -C "your_email@example.com"Generating public/private rsa key pair.Enter file in which to save the key(/Users/your_user_directory/.ssh/id_rsa): 按回车键Enter passphrase (empty for no passphrase): 输入密码Enter same passphrase again: 再次输入密码
需求:注册有限,密码,生成的ssh密钥会放置在/Users/your_user_directory/.ssh/
,包括id_rsa
和id_rsa.pub
。
然后将id_rsa.pub
其添加至注册GitHub账号的SSH keys中,id_rsa
是私钥,需要自己慎重保存,切勿公开。添加位置
之后就可以使用手中的私人密钥与GitHub进行认证和通信了。测试:
ssh -T git@github.com
Hi hugechuanqi! You've successfully authenticated, but GitHub does not provide shell access.
表示成功。
3.2 创建仓库
创建仓库repository,参考笔记
.gitgnore
文件记录不需要在Git仓库中进行版本管理的文件。README.md文件标明本仓库所包含的软件的概要、使用流程、许可协议等信息。
clone仓库,将已有仓库clone到本地电脑上进行开发:
git clone https://github.com/hugechuanqi/MachineLearing.git
然后编写代码或其他文件,例如
.md, .py, .cpp, .c, .java, .txt
等,此处假设为hello_world.php,内容自定。提交,通过
git add
命令将文件加入暂存区,再通过git commit
命令提交
git add hello_world.php
git commit -m "Add very good script by php"
-m表示提交说明
可以通过git log
查看日志;公开的源代码也拥有软件著作权,协议包括BSD修正协议,Apache许可协议,MIT许可协议。
- 然后执行push,GitHub上的仓库就会被更新:
git pull
第四章 具体实际操作
4.1 初始化仓库及相关操作
- git init初始化仓库,要使用版管理,首先得初始化一个仓库,实际建立一个目录并初始化仓库:
mkdir git-tutorialcd git-tutorialgit init
目录底下会生成.git目录,存储着管理当前目录内容所需的仓库数据。在Git中,这个目录的内容成为“附属于该仓库的工作树”,文件编辑等操作在工作树中进行。
git status显示Git仓库的状态。
git add表示向暂存区中添加文件。
git commit命令可以将当前的暂存区中的文件实际保存到仓库的历史纪录中,保存仓库的历史记录。
git log查看提交日志
git log -p
显示文件的改动
git log -p README.md
仅查看README.md文件的提交日志。
git diff
查看更改前后的差别,可以查看工作树、暂存区、最新提交之间的差别。
4.2 分支操作
分支操作:从master分支创建feature-A分支和fix-B分支,每个分支中都拥有自己的最新代码;master分支是Git默认创建的分支。
git branch命令可以显示分支名列表;
git checkout -b创建和切换分支;
git checkout -b feature-A
git checkout master
表示切换到master分支
git checkout -
切换回上一个分支
特性分支,是集中实现单一特性,除此之外不进行任何作业的分支,往往特性分支会有数个,如feature-A,而保留一个可以随时发布软件的稳定分支,如master。
主干分支,master,是特性分支的原点,也是特性分支的终点。
git merge合并分支,假设分支feature-A上的内容已经实现完毕,这时应该先切换到主干分支master中,然后
git merge --no-ff feature-A
- git reset 回溯历史版本
git reset --hard 3e3e67a1a94cc6180dcd0bbdd2efa91076073422
其中这一长串数字是时间节点的哈希值。git log之后就可以看到,在commit后面。
git checkout -b fix-B
创建特性分支
4.3 消除冲突
- 消除冲突,系统在合并README.md时,feature-A分支更改的部分与本次想要合并的fix-B分支更改的部分发生了冲突,因此需要解决这个冲突。打开README.md文件会发现以下内容:
<<<<<<< HEAD
- Feature-A
=======- fix-B
>>>>>>> fix-B
其中,=======以上的部分是当前HEAD的内容,以下的部分是要合并的fix-B分支中的内容。我们在编辑器中将其改成想要的样子,即
- Feature-A
- fix-B
这样,就可以让feature-A和fix-B的内容并存于文件之中;但是在实际中,往往需要删除其中一个。然后提交:
git add README.md
git commit -m "solve the conflict"
- git commit --amend修改提交信息
git commit --amend
然后在编辑器中修改并保存
随后git log --graph就可以看到提交日志的相应内容已经被修改。
4.4 压缩历史
- git rebase -i 压缩历史,若发现前一个提交内容有错,则提交一个修改,并将这个修改包含到前一个提交之中,压缩成一个历史记录。过程为:
git checkout -b feature-C
#创建新分支git commit -am "Add feature-C"
#提交内容git diff
#查看修改后的差别,如何修改内容就是对文件的操作了git commit -am "Fix typo"
#Fix typo英文意思是错字和漏字git rebase -i HEAD~2
#将修改的内容“Fix typo”与前一次的提交合并
- git checkout master 切换到主分支
- git merge --no-ff feature-C 将分支feature-C与master主分支合并
4.5 推送至远程仓库
- Git是分散型版本管理系统,为防止与其他仓库混淆,仓库名请与本地仓库保持一致,即git-tutorial。为了提高整合性,创建仓库时不要勾选初始化README文件。
- git remote add 添加远程仓库。在GitHub上创建的仓库路径为"git@github.com: 用户名/git-tutorial.git"。用git remote add命令将其设置成本地仓库的远程仓库。例如:
git remote add original git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git
上述操作之后,Git会自动把git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git远程仓库的名称设置为origin(标志符)。
- git push 推送至远程仓库
git push -u origin master
把当前分支的内容推送给远程仓库origin的master分支。-u阐述可以在推送的同时,将origin仓库的master分支设置为本地仓库当前分支的upstream(上游)。添加-u阐述有利于之后运行git pull
命令从远程仓库获取内容时,省去了另外添加的麻烦。
- git push 推送至master以外的分支
git checkout -b feature
创建分支git push -u origin feature-D
将当前分支push给远程仓库并保持分支名称不变。之后就可以在远程仓库的GitHub页面就可以查看到feature-D分支。
4.5 从远程仓库获取
- git clone 获取远程仓库。
切换到非仓库目录名
下后,执行git clone git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git
,我们会默认处于master分支,同时系统会自动将origin设置成该远程仓库的标识符。即当前仓库的master分支与GitHub端的远程仓库(origin)的master分支在内容上完全相同。 git branch -a 命令查看当前分支的相关信息。
- 获取远程的feature-D分支(??此处有点问题,今天暂时没时间修改)
git checkout -b feature-D origin/feature-D
. -b参数后面是本地仓库中新建分支的名称。为了与远程仓库origin/feature-D
保持同名,此处-b后面也起名为feature-D
,过程如下:
git init git remote add origin git@github.com:hugechuanqi/Algorithms-and-Data-Structures.git #将远程仓库名称设置为origin git checkout -b feature-D origin/feature-D #新建分支,并获取远程分支内容
- git pull 获取最新的远程仓库分支
git pull origin feature-D
将本地的feature-D分支更新到最新状态。如果两人同时修改了同一部分的源代码,push时就很容易发生冲突,所以多人同时在同一个分支中进行作业时,为减少冲突情况的发生,建议更频繁地进行push和pull操作。
推荐资料:
1、Pro Git:http://git-scm.com/book/zh/v1,是一本零基础Git学习资料。 由 Scott Chacon书写。
2、LearnGiBranching:http://pcottle.github.io/learnGitBranching/,是学习Git基本操作的网站,偏重树形结构。
3、tryGit:http://try.github.io/ 可以在Web上一边操作一边学习Git的基本功能。
97/286 未完待续
参考:书籍:github入门与实践
转载于:https://www.cnblogs.com/hugechuanqi/p/10461988.html
github入门书籍总结相关推荐
- 史上R语言最强--资源(免费课程、书籍、教程和各种高级图表)
史上R语言最强–资源(免费课程.书籍.教程和各种高级图表) 下面是一些免费R的书籍.教程.软件包.图表2单和其他材料,可以在网上学习编程和改进工作流程.有单独的概述 Python resources, ...
- 句子嵌入_带句子转换器库的句子嵌入
句子嵌入 数据科学,机器学习(Data Science, Machine Learning) I came across this simple to use sentence-transformer ...
- github使用-知乎的某小姐的一篇文章
作者:珊姗是个小太阳 链接:http://www.zhihu.com/question/20070065/answer/79557687 来源:知乎 著作权归作者所有,转载请联系作者获得授权. 作为一 ...
- jango web开发指南_Web前端“月薪过万”必读的一些入门书籍和网站!
互联网的快速发展和激烈竞争,使得用户体验成为一个重要的关注点,导致专业Web前端工程师成为热门职业.各大公司对Web前端工程师的需求量都很大,要求也越来越高,优秀的Web前端工程师更是稀缺.因此想要学 ...
- 互联网计算机技术方面的入门书籍有哪些推荐?
互联网计算机技术方面的入门书籍有哪些推荐? 善用搜索.Github 上除了项目代码之外,还有很多编程相关的资源列表,比如下面这个: 免费的编程中文书籍索引 免费的编程中文书籍索引,欢迎投稿. 国外程序 ...
- 文科妹学 GitHub 简易教程(转)
文科妹学 GitHub 简易教程 #什么是 Github ?必须要放这张图了!!! Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版本控制/ ...
- 怎样使用github?(转)
怎样使用github?(转) 转自: 怎样使用 GitHub? - 知乎 https://www.zhihu.com/question/20070065 珊姗是个小太阳 ❤努力做最胖//bang的健身 ...
- 文科妹子都会用 GitHub,你这个工科生还等什么
在某乎上刷到一条关于 GitHub 的留言,如下: 点赞人数还不少,这说明还真有不少工科生不会用 GitHub,你看大小写都没有区分(手动狗头).所以我就想写篇文章科普下,"新手如何使用 G ...
- 【github】机器学习(Machine Learning)深度学习(Deep Learning)资料
转自:https://github.com/ty4z2008/Qix/blob/master/dl.md# <Brief History of Machine Learning> 介绍:这 ...
最新文章
- 前端面试官,我为什么讨厌你。
- IMU, 自动驾驶定位团队“小而美”的队员
- 在.net中使用强类型来读取配置信息
- 【数学建模】MATLAB应用实战系列(九十)-变异系数法应用案例(附MATLAB和Python代码)
- Linux常见命令(大图)
- Dev-C++实现调试功能
- JVM第五部分 高效并发
- gentoo 安装时的网络配置
- Linux的实际操作:文件目录类的实用指令(重定向“>“和追加“>>“)
- 8.使用Exists监控ZNode的三大Change事件
- # 电脑管家_如何彻底关闭电脑上的“恶心小广告”?联想电脑管家一步到位!...
- Linux启动tomcat带控制台
- html添加变量参数吗,动态CSS与变量参数? (可能吗?)
- oa服务器维护,办公系统维护,维护oa系统的方法
- Java打包JRE于exe中方法
- 准确率(Accuracy) 精确率(Precision) 召回率(Recall)和F1-Measure(精确率和召回率的调和平均值)
- linux 检查ntp版本,查看linux安装ntp服务器配置
- 学计算机广告制作用什么电脑,大学设计专业电脑配置须知
- 爬虫学习笔记:爬取古诗文网
- 前端获取页面的高度/宽度