我们都知道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 [email protected]”检测公钥、密钥以及刚才的设置是否正确。不正确会输出信息“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”