Git快速入门.doc

上传人:PIYPING 文档编号:11368916 上传时间:2021-07-30 格式:DOC 页数:7 大小:97KB
返回 下载 相关 举报
Git快速入门.doc_第1页
第1页 / 共7页
Git快速入门.doc_第2页
第2页 / 共7页
Git快速入门.doc_第3页
第3页 / 共7页
Git快速入门.doc_第4页
第4页 / 共7页
Git快速入门.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《Git快速入门.doc》由会员分享,可在线阅读,更多相关《Git快速入门.doc(7页珍藏版)》请在三一文库上搜索。

1、step 0. SSH 公钥认证 SSH为Secure Shell的缩写(参考Secure Shell),SSH作为一种网络协议,用来实现两台机器间的安全交流,比如实现远程登录和文件传输等。当然也可用于为 Git 提供远程读写操作,常用的ssh软件实现有openssh。 公钥认证(参考Public-key cryptography),是使用一对加密字符串,一个称为公钥(public key), 任何人都可以看到其内容,用于加密;另一个称为密钥(private key),只有拥有者才能看到,用于解密。 通过公钥加密过的密文使用密钥可以轻松解密,但根据公钥来猜测密钥却十分困难。1.生成SSH 公钥

2、/私钥对:linux用户,一般的Linux发行版都默认安装了openssh: $ssh-keygen 即可生成一对唯一的公钥/私钥(ssh-keygen会提示输入保存路径和私钥密码,都可直接回车)Windows用户: a.请先安装git,参考step 2先安装git,默认会安装git bash,openssh. b.运行git bash c.$ssh-keygen 即可生成一对唯一的公钥/私钥(ssh-keygen会提示输入保存路径和私钥密码,都可直接回车)生成的公钥/私钥对默认存放在 $HOME/.ssh/目录下,id_rsa为私钥(妥善保管,不要泄漏),id_rsa.pub为公钥。将你的公

3、钥id_rsa.pub上传到服务器或发送给服务器管理员进行上传(最好重命名为yourname.pub方便区分)。2.ssh主机别名在实际应用中,有时需要使用多套公钥/私钥对,使用$ ssh-keygen -f /.ssh/可以创建指定名字的公钥/私钥对。当执行$ssh userserver 时缺省会使用/.ssh/id_rsa 进行认证,如果要指定其他私钥进行认证,可使用ssh的客户端,配置文件 /.ssh/config 可以通过创建主机别名,在连接主机时,使用特定的公钥。例如 /.ssh/config 文件中的下列配置:host gitserver user git hostname 192

4、.168.100.140 port 22 identityfile /.ssh/yourkeyname其中 host 字段为自定义的主机别名,user指定服务器上的用户名,hostname指定服务器地址,port为连接服务器的端口,identityfile 指定私钥路径。3.ssh测试 至此可以执行(需先安装git):$git clone gitserver:testing.git 克隆服务器gitserver上的名为testing.git的仓库了。以上git克隆命令所经历的过程大致如下: a.ssh程序读取.ssh/config文件,找到别名为gitserver的主机的信息,并与服务器主机建

5、立连接; b.服务器提供自己的公钥(记作ser_pub),客户端判断ser_pub是否在/.ssh/known_hosts中。(如果是第一次连接服务器,会提示用户确认公钥是不是来自想要连接的服务器); c.确信ser_pub是我们信任的服务器公钥后,客户端向服务器提供自己的公钥user_pub(私钥是可以计算出公钥的); d.服务器判断user_pub是否在自己的信任公钥列表中,如果不存在,则断开连接; e.如果user_pub在服务器的存在(我们之前已经上传自己的公钥给服务器了。),则进行公钥认证; f.认证成功后,服务器与客户端之间的通信就会进行加密了,客户端发送的内容使用ser_pub加

6、密,服务器使用自己的私钥解密,服务器发送的内容使用usr_pub加密,客户端使用自己的私钥解密; g.通过公钥认证机制建立安全通信后,客户端就可以使用git存取服务器上的仓库了; h.通信结束后断开连接。step 1.版本管理背景 许多人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单,不过坏处却不少:有时候会混淆所在的工作目录,弄错了文件丢了数据就没了后退的路。 为了解决以上存在的问题,版本管理工具应运而生,版本管理工具大致有三类:本地版本控制系统(如rcs)、集中化版本控制系统(如CVS,Subversion,Perforce)、分布

7、式版本控制系统(如Git ,Mercurial,Bazaar,Darcs)。 Git是一个开源的分布式版本控制系统,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。分布式版本控制系统的特点是:客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。 学习git,Pro Git官方推荐的参考书,有英文版,A上也有纸介版,当然也有中文版。step 2.安装gitLinux下:根据所

8、使用的Linux发行版不同使用 $sudo yum install git-core 或者 $sudo apt-get install git-core 安装git。windows下:从git官网下载最新的git windows版本,以Git-1.8.1.2-preview20130201.exe为例,安装过程一路next使用默认安装即可。windows下图形工具TortoiseGit,从这里下载,以TortoiseGit-1.8.3.0-32bit.msi为例,安装过程一路next使用默认安装即可。step 3.第一次git配置 第一次使用git时需要配置自己的用户信息,为你贡献的代码留下你

9、的大名(以下是全局配置):$git config -global user.name your name$git config -global user.email 在以后的使用中,当然,也可以针对不同的仓库单独配置用户信息(在对应的仓库目录下执行以上命令,去掉 -global 选项)step 4.克隆仓库建立仓库的方法主要有2种:1.克隆服务器上的仓库$git clone git192.168.100.140:testing.git 或者$git clone gitserver:testing.git成功后会在当前目录下新建一个目录,名为testing,这就是克隆下来的代码仓库$cd te

10、sting;ls -a 就可以看到testing工程的所有文件,其中有个特别的名为.git的隐藏文件夹,里面记录了仓库的一些配置信息以及仓库的所有历史版本信息(这是分布式版本控制系统的特点)等,不要删除它,也不要手动去修改里面的内容(除非你清楚你在做什么)。2.初始化本地仓库$mkdir mytestproject; cd mytestproject$git init就可创建一个空的本地仓库。更多创建仓库方式参考git文档。step 5.git基础知识1.git文件状态及转换在git仓库目录下,文件有4种状态,untracked,unmodified,modified,staged,其变换状态

11、如下:上图来自Pro git ,个人觉得“add the file”和“remove the file”动作后应该变为staged状态,而非unmodified/untracked状态,只有在commit后才变为unmodified/untracked。各状态切换所使用的命令:add the file /stage the file:$git add filename 也可使用通配符如:$git add *.c remove the file : $git rm filename 不要直接rm filenameedit the file : 就是编辑修改了文件内容commit: $git co

12、mmit -m “comment of this commit” 提交当前已staged的文件提交(commit)时,一定要写比较详细的注释说明,当前提交做了哪些工作,比如,添加了xx模块(要具体介绍下该模块功能,框架等),修复了xxbug(要介绍bug产生原因,修复后对整体带来的改善是什么),优化了xx算法(要说明算法的改进思路)等,另外,不要在一次提交中提交太多内容,原则上是一次提交仅一处修改,比如:一次提交即添加了gps模块代码,又修改了串口驱动,还修改应用程序bug就是不合理的,而应该至少分三次提交。$git status 可以查看当前仓库文件变化状态(unmodified状态的不会显

13、示) 需要注意的是,编辑staged状态的文件会使该文件同时存在两个版本状态stage(之前的改变)和modified(staged之后改变)所以要想最新的修改能够提交到版本库中,需要再次$git add filename 将最新的修改staged,否则提交的内容是文件上次变为staged状态时的内容。 对于以上的文件状态变化的过程需要在使用git的过程中慢慢去体会。更多git 命令:git diff(显示文件差异) git log显示提交历史 git clean (清理仓库),git revert(撤销修改)等的使用参考pro git 和git文档;使用$git -help 可以查看命令的文

14、档,如git add -help可以查看git add的文档2.pull 和 push(远程仓库使用)git commit操作只是将更改提交到了本地版本仓库,通常我们需要从服务器上抓取最新的代码,或者将本地的修改推送到服务器。a. 添加远程仓库$git remote add origin git192.168.100.140:testing.git 添加一个别名为origin的仓库,后面为仓库的地址如果使用 git clone创建仓库,git会自动创建名为origin的仓库b.pull自动抓取远程仓库的内容然后合并到本地仓库的当前分支(pull前需要保证本地的修改已提交,即版本库中的文件要是u

15、nmodified状态)$git pull origin master 抓取远程仓库的master分支并合并到本地的当前分支(可以简单的理解为从服务器获取最新代码),如果仅想把服务器上最新的代码更新到本地版本库中而不合并到当前分支,可以使用$git fetch originc.push 推送本地提交到服务器$git push origin master:master 将本地master分支的commit推送到origin的到master分支3.git分支(branch) 几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作(上文提

16、到的master分支就是这里说的主线),一般不建议在master上直接进行开发工作,应该在任何时候保证主线上的内容为一个功能完整的已知状态,而使用分支进行各模块的开发和调试工作,调试测试完成了再合并到master分支,修改主线上的bug也应该新建一个分支,修改调试完成了再合并回主线。1.分支操作$git branch uart 新建一个分支uart,用来开发串口程序$git checkout uart 切换到uart 分支$git checkout master 切换回主分支$git checkout -b sdcard 新建并切换到sdcard 分支#开发,调试完成后git add 和 gi

17、t commit .$git checkout master; git pull origin 切换到主分支并拉取远程仓库origin上的最新代码$git merge sdcard 合并sdcard分支到当前(master)分支$git branch -d sdcard 删除sdcard分支(假设上一步已成功合并)$git push origin 将自己的修改推到服务器 如果合并时遇到冲突(冲突产生的原因是,被合并的两个分支中都修改了同一个文件的同一部分,更一般的情况是团队开发时,不同开发人员修改了同一部分内容),冲突并不可怕,但需要手工解决(因为git不知道该采纳谁的修改)。分支的合并以及冲

18、突解决请参考Pro Git-Git分支-基本分支与合并章节。4. .gitignore 忽略某些文件 一般我们总会有些文件无需纳入 Git 的管理,也不希望它们总出现在未跟踪(untracked)文件列表。通常都是些自动生成的文件,像是日志或者编译过程中创建的等等。我们可以创建一个名为.gitignore 的文件,列出要忽略的文件模式,比如:$cat .gitignore*.oa*!lib.a/build以上.gitignore文件可以忽略所有.a .o和以结尾(某些编辑器的备份文件)的文件,但lib.a除外,忽略build目录,详情参考Pro Git-Git基础-记录每次更新到仓库-忽略某些

19、文件章节。 使用任何版本控制工具都不应该将临时文件、编译器或其他工具可生成的文件(除非一些需要使用但不用经常编译的文件,如操作系统镜像文件Image,打包的库文件等)、开发人员自己使用的辅助开发的相关文件(如代码浏览工具生成的符号索引表)等与项目核心业务无关的东西提交到版本库中。5.git图形化工具Windows下:TortoiseGit等Linux下:smartgit等 图形工具的使用基本思路与命令行操作一致,只是因为图形化了,大部分命令都有相应的菜单代替,所以使用起来会非常直观方便,这里就不详细介绍了,可参考这里。6.Windows下使用TortoiseGit 公钥认证的问题 对于公钥认证

20、:git命令行模式与openssh搭配使用,使用TortoiseGit时需要与putty搭配使用。 TortoiseGit使用的私钥格式是puttygen产生的格式,因此使用openssh产生的私钥不能直接使用,需要使用puttygen进行格式转换: 运行puttygen,File -Load private key导入openssh生成的私钥,File-Save private key保存成putty支持的格式*.ppk。 同样的,TortoiseGit 也不会认openssh的主机别名配置文件/.ssh/config,而使用putty的设置,详情可参考这里。step 6.git使用流程和规

21、范在step 5.git基础知识-git分支一节已大概演示了git分支使用的规范,这里做一总结。1.安装git,配置环境 2.上传公钥 3.配置用户信息(用户名,email) 4.克隆远程仓库 git clone5.创建开发分支(如果已经存在直接切换到开发分支即可) git branch6.开发测试完成后切换回主分支 (git add,git commit)s,git checkout master7.拉取服务器上的最新代码 git pull8.合并开发分支到主分支(如果有冲突需要解决后再提交) git merge9.推送自己的提交到服务器 git push10.后续的开发1-4步就不用了Step 7.下一步做什么?深入学习git的知识请参考Pro Git和官方文档。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1