我们都知道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使用入门的更多相关文章

  1. 第三章 Git的入门 - 读书笔记

    Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...

  2. 第三章Git使用入门--读书笔记

    “管理”一词,几乎在生活的方方面面都存在,而在Linux驱动开发中会涉及很多的源代码,对于数量繁多的源码,我们也应该有一个管理软件.Android和Linux内核及驱动开发的源代码基本都是由Git 来 ...

  3. Android深度探索HAL与驱动开发 第三章 Git入门

    Git功能十分复杂,简单来说它使你的开发更为快捷和可控,尤其是在开源项目上展现的友好的交互和回馈. 熟悉一些git指令操作对开发者的帮助可以避免开发者受到一些外在因素打断开发进度,甚至延误项目的che ...

  4. 学习笔记-[Maven实战]-第三章:Maven使用入门(3)

    这里说一下在建测试工程里遇到的问题 1.第一次建工程,junit依赖始终没有成功,最后删除现在工程,新建了一个工程就好了 2.使用junit4的问题.工程默认的依赖是junit3.8.1,我改成了4. ...

  5. 学习笔记-[Maven实战]-第三章:Maven使用入门(2)

    使用maven执行编译和测试 1.maven执行编译 (1).在pom.xml上点右键,选择Maven build... (2).在Goals里输入clean complie,执行编译 执行结果: [ ...

  6. 学习笔记-[Maven实战]-第三章:Maven使用入门(1)

    说明:[Maven实战]一书还介绍了怎么样手工创建Maven工程,学习这本书是为了能尽快在工作中使用,就忽略了手工建工程的部分 如果想了解这部分的内容,可以自己看看书 开始: 1.新建一个maven工 ...

  7. maven第三章 maven使用入门

    3.1编写pom groupId 一个项目名称 artifactId 子项目(模块)名称 version 开发中的版本,稳定的版本 name 项目名称,方便信息交流 http://news.cnblo ...

  8. [Maven实战-许晓斌]-[第三章] Mave使用入门二(在IDE中的使用) [第四章] 案例的背景介绍

    创建maven项目

  9. [Maven实战-许晓斌]-[第三章] Mave使用入门

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...

随机推荐

  1. grunt不是内部或外部命令错误处理

    如题, npm install -g grunt-cli发现grunt命令却不可用, 其实是环境变量问题,但是网上很多给出的方法其实是不准确的, 正确方法,可以通过npm root -g查看路径,之后 ...

  2. mongo 相关命令

    mongo导入数据: 1. 先进入找到mongo 安装目录 执行 ./mongo 进入mongo 2. mongorestore -u 用户名 -p 密码 -d 数据库 —drop 文件存在路径 显示 ...

  3. selenium ide脚本回放出现element not found

    原因: 点击按钮,没有设置时间延迟,而页面加载,需要时间:当页面元素未加载完全,执行点击事件,就会报错:element... not found. 解决方案: 在点击事件前添加新的COMMAND.设置 ...

  4. html5对密码加密

    今天找了几个关于对html5的密码加密的方法,仅供参考 1.base64加密:在页面中引入base64.js文件,调用方法为: <html> <head> <meta c ...

  5. Unity3D 中的定时器

    不算上 C# 自带的,目前知道两种,以下分别介绍. 1.每帧检查 定义一个时间变量 timer,每帧将此时间减去帧间隔时间 Time.deltaTime,如果小于或者等于零,说明定时器到了,执行相应功 ...

  6. C#如果把A.new()编译成new A()

    缘由 对于初次接触某个第三方库的C#开发者,假如要调用里面一个方法,发现需要一个A类型的实例作为参数,怎么获得这个实例呢? 我想大多数人会先尝试new A吧: 如果没有,可能会尝试输入A.看看有没可能 ...

  7. Ubuntu: ImportError: No module named xgboost

    ImportError: No module named xgboost 解决办法: git clone --recursive https://github.com/dmlc/xgboost cd ...

  8. JS实现 点击button(copy) 复制对应的网址——类似于复制推广链接

    <form action=""> <input type="text" class="share-input" value ...

  9. running programmer——spring-01(初谈spring)

    今天主要是通过一个简单的登录程序学习一些spring做基础的配置和功能. I.spring的核心配置applicationContext.xml 关于bean的配置官方给出的最基础的配置文件如下: & ...

  10. jquery为什么提倡使用.on绑定,.off移除组合代替.live和.die组合呢?

    .live绑定的是固定的Document的节点,在树形节点中,如果节点较多,层级查询影响效率: .on绑定的是$(selector),可自由改变嵌套层级问题,效率高: 列举两种on可以绑定多个事件的方 ...