第三章 Git使用入门
我们都知道Linux和Android是开源的。Linux下的软件很多都不直接以二进制形式的安装包提供,而是直接提供了源代码,为了减少发行包的大小,用户须先下载源代码,在本机上编译并安装,使用make、make install命令。在提供源代码的软件中,很多是与内核紧密相关的驱动及其他底层程序。使用Git进行源代码管理,它在各方面都优于其他同类的源代码管理软件。想直接更快的融入Linux内核的方式就是直接阅读Linux内核的源代码,要想获得这些开源项目的源代码,必须使用Git。想参与Linux内核开发,就更需要了解Git,Linux内核完全是使用Git管理的。
有关Git的安装以及其文档的相关内容就不再赘述,主要学习Git的基本用法,如何管理源代码,即源代码的提交和获取的方法和步骤。
1.创建版本库 git init:任何版本管理软件都必须有一个版本库,不同的是这些软件对版本库的管理方式。Git版本库管理软件的版本库的组织方式与其他管理软件有很大差异。Git的版本库分为本地版本库和远程版本库。不连接Internet时,Git管理源代码直接与本地版本库通信;连接Internet时,将本地版本库同步到远程版本库。访问本地版本库不需要任何权限,自己就是本地版本库的主人。任何人想修改Git源代码托管服务器中的源代码,必须使用git clone命令在本地建立一个与远程版本库一模一样的本地版本库。
先使用git init在本地创建一个空的版本库,执行命令
“# mkdir -p 开源项目的工作目录
# cd 开源项目的工作目录”
建立一个开源项目的工作目录,并进入工作目录。执行命令“# git init”,执行完后会输出信息“Initialized empty Git repository in 开源项目的工作目录/.git/”在开源工作目录中使用ls命令不会显示内容,执行命令“# ls -al”会显示.git隐藏目录。一个空的版本库成功建立了,在源代码工作目录中有一个隐藏的.git目录,即本地版本库。进入该目录,使用ls命令列出.git目录中的子目录和文件,目前还都是初始状态,在经过不断操作这个本地版本库后,相关子目录和文件的内容也会被修改。
2.将文件提交到本地版本库-git commit:Git管理文件不仅管理源代码,还管理任何文件。
先将文件提交到本地版本库.git目录,执行命令
“#cd 开源项目的工作目录
#echo "文件中输入的内容">文件名.txt”
进入开源项目的工作目录,并建立一个txt文件。在txt文件中有一行刚才命令中输入的内容,执行命令
“# git add txt文件
# git commit -m 提交的备注”
将txt文件加到本地版本库的索引中,并将txt文件提交到版本库。-m命令行参数为本次提交的备注,Git要求必须指定该信息。如果git commit未指定该信息,系统会调用默认的文本编辑器vi要求输入该信息。执行命令“# git log”可以显示日志信息。一旦将工作目录中的文件提交到本地版本库,就不怕源代码误册或误改了。
执行命令
“# echo 文本内容>txt文件
# cat txt文件”
可在txt文件后再添加一行文本。
执行命令“# git checkout txt文件”可以立刻恢复到最近一次提交的状态,删除txt文件也同样可以恢复。
3.创建本地分支-git branch:Git提供了分支,一个源代码可能由多人共同完成,开发人员会为每一处修改建立一个分支,这样在修改后提交不会影响主分支的代码。提交后经测试人员审核,会将该分支合并到主分支。使用命令“# git branch”可以了解当前版本库包含哪些本地分支,使用命令“# git branch new-branch”可以建立一个新的分支。分支前面的*表示当前工作目录在哪个分支下。使用git commit命令会将修改后的文件提交到工作目录当前所在的本地分支。使用命令“# git branch -D new-branch”可以删除刚建立的分支,但在执行命令时要小心,因为在分支中所做的一切修改都将消失。
4.切换本地分支-git checkout:本地分支是为了隔离主分支不同部分的修改。使用git checkout命令可在不同的本地分支之间切换。使用命令“# git checkout new-branch”将当前本地分支切换到new-branch上。使用命令
“# echo '文本内容'>txt文件
# git add txt文件
# git commit -m 文件名-new-branch”
可以修改txt文件的内容,保证与master分支的内容不同,并重新提交到本地版本库。使用git checkout master和git checkout new-branch来回切换本地版本库,txt文件中的内容会随着分支的变化而变化。
5.在GitHub上创建开源项目:使用Git管理源代码都会使用远程的Git托管服务器。GitHub是目前比较流行的Git托管服务提供商,使用它之前需要在网页上注册一个免费的用户。注册登录成功后,进入GitHub首页,单击右下角“New repository”创建一个新的项目,输入项目名即可。免费账号只能建立开源项目,并不能建立闭源项目。建立完项目后,页面会指引用户将源代码上传到GitHub。
6.上传源代码到GitHub-git push:GitHub上传代码时需要SSH校验,使用命令“# ash-keygen -t rsa -C "注册GitHub时输入的Email"”,在~/.ssh目录中生成一个密钥文件id_rsa和一个公钥文件id_rsa.pub,如果这两个文件已存在,需要备份。执行命令需要做一些选择或输入,如果~/.ssh目录中存在id_rsa和id_rsa.pub文件,会询问是否覆盖它们,还需输入注册账号时输入的密码。生成的~/.ssh/id_rsa和~/.ssh/id_rsa.pub都是纯文本格式,使用编辑器打开~/.ssh/id_rsa.pub,将该文件中的所有内容复制到剪贴板,不要修改文件的任何内容。进入GitHub账户设置页面,在账户设置页面左侧选择“SSH public Keys”,单击页面中间“Add another public key”链接,在添加public key的输入框内将刚才复制的内容粘贴进来。Title输入框可以随意输入,完成后单击“Add key”添加一个public key。设置完public key后,执行命令“# ssh -T git@github.com”检测公钥、密钥以及刚才的设置是否正确。不正确会输出信息“Permission denied(publickey)
fatal:The remote end hung up unexpectedly”。如果成功完成上面操作但也无法通过测试,则需执行命令“# ssh-add”向代理身份验证添加RSA身份。上传文件之前需使用git config设置上传者的名字和email,在客户端并不验证,Git托管服务器可能会验证,要使用自己的名字和email,命令
“# git config --global user.name 自己设的名字
# git config --global user.email 自己的email”,
接下来使用git remote add和git push命令上传工作目录中的文件。先使用git remote命令设置某个工程在GitHub上的URI,“# git remote add origin 远程代码库名,与工程对应的URI”,工程中没有任何文件是无法进入工程管理页面的。使用命令“# git push -u origin master”将本地版本库中的文件上传到GitHub。master是远程版本库origin中的主分支。执行命令“# git branch -a”查看所有的分支,本地分支和远程分支。成功后可在GitHub页面上看到刚上传的文件,也可在该页面找到用于上传的URI
7.从GitHub下载源代码-git clone:执行命令“# git clone 工程目录”可下载需要的整个工程。工程目录中包含一个.git本地版本库目录。想获取某一分支的最新内容,可以使用命令“# git pull origin master”
第三章 Git使用入门的更多相关文章
- 第三章 Git的入门 - 读书笔记
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...
- 第三章Git使用入门--读书笔记
“管理”一词,几乎在生活的方方面面都存在,而在Linux驱动开发中会涉及很多的源代码,对于数量繁多的源码,我们也应该有一个管理软件.Android和Linux内核及驱动开发的源代码基本都是由Git 来 ...
- Android深度探索HAL与驱动开发 第三章 Git入门
Git功能十分复杂,简单来说它使你的开发更为快捷和可控,尤其是在开源项目上展现的友好的交互和回馈. 熟悉一些git指令操作对开发者的帮助可以避免开发者受到一些外在因素打断开发进度,甚至延误项目的che ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(3)
这里说一下在建测试工程里遇到的问题 1.第一次建工程,junit依赖始终没有成功,最后删除现在工程,新建了一个工程就好了 2.使用junit4的问题.工程默认的依赖是junit3.8.1,我改成了4. ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(2)
使用maven执行编译和测试 1.maven执行编译 (1).在pom.xml上点右键,选择Maven build... (2).在Goals里输入clean complie,执行编译 执行结果: [ ...
- 学习笔记-[Maven实战]-第三章:Maven使用入门(1)
说明:[Maven实战]一书还介绍了怎么样手工创建Maven工程,学习这本书是为了能尽快在工作中使用,就忽略了手工建工程的部分 如果想了解这部分的内容,可以自己看看书 开始: 1.新建一个maven工 ...
- maven第三章 maven使用入门
3.1编写pom groupId 一个项目名称 artifactId 子项目(模块)名称 version 开发中的版本,稳定的版本 name 项目名称,方便信息交流 http://news.cnblo ...
- [Maven实战-许晓斌]-[第三章] Mave使用入门二(在IDE中的使用) [第四章] 案例的背景介绍
创建maven项目
- [Maven实战-许晓斌]-[第三章] Mave使用入门
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
随机推荐
- 深入理解javascript系列,读书笔记
深入理解JavaScript系列(2):揭秘命名函数表达式 1.讲了函数声明和函数表达式的区别,包括一些在函数提升上的区别 2.如果给函数表达式的函数也取名,会在调试的时候受益 3.不要在block( ...
- angularjs 嵌套控制器,子控制器访问父控制器
<pre> http://www.lovelucy.info/understanding-scopes-in-angularjs.html http://blog.csdn.net/jfk ...
- 每个部门绩效成绩第二名 sql server 查询 ( 替代 not in )
原题: 集团中有多个部门,部门底下有多个员工,求每个部门绩效分数排名第二的人员,数据表结构如下: DEPAR NAME SCORE A ...
- vbscript input select 添加个option根据value值到指定位置--相当于排序
'添加option到指定位置(按value排序) dim valindex valindex=-1 for i=0 to selcom.length-1 if selcom.Options(i).va ...
- uva 10801(最短路)
题目大意: 有一层不超过100层的大楼, 有n个电梯,它们的速度都不同. 而且每个电梯只能到达指定的那些楼层,而且它们都有各自的速度(即上升一层或下降一层所用的时间). 如果一个人在某层走出电梯,要换 ...
- PHP发送电子邮件
1.导入文件,如本案例把Stmp.class.php放到Common\Common目录下,代码很多,直接复制就行! <?php namespace Common\Common; class Sm ...
- 基于事件的异步模式(EAP)
什么是EAP异步编程模式 EAP基于事件的异步模式是.net 2.0提出来的,实现了基于事件的异步模式的类将具有一个或者多个以Async为后缀的方法和对应的Completed事件,并且这些类都支持异步 ...
- CentOS 6中MATLAB print函数“所见非所得”bug的解决方案
0 系统配置+软件版本 主机:Dell optiplex 390 MT (i5) 系统+软件:CentOS 6.5 x64, Matlab R2012, R2013 系统+软件:CentOS 6.7 ...
- springMVC中实现servlet依赖注入
记录一下开发过程中遇到的问题: 首先看一下这个帖子: http://blog.csdn.net/gaogaoshan/article/details/23540129 由于我使用的是springMVC ...
- JAVA字符串的相关练习
/*String s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";//生成随机验证码 fo ...