git 使用介绍

32
Git 使使使使 Medcl

Upload: medcl

Post on 20-Aug-2015

1.434 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Git 使用介绍

Git 使用介绍

Medcl

Page 2: Git 使用介绍

有时候• Svn连接不上• Svn服务器挂了

–代码没法提交,那边编译不过!–没法恢复到之前版本!–分支切换成本太高!–在家网速不行签出代码老半天

Svn已死,提高效率,改用 GIT

Page 3: Git 使用介绍

Git下的开发场景• 1.连不上公司网络怎么办?

– 吭哧吭哧,– 完成各种功能,– feature代码照样提交– 回到公司或者网络恢复,提交

• 2.产品已经上线了,需要开发一个新的功能,花费时间较长,又不能影响其他人– 新起一个分支– 吭哧吭哧– 完成各种功能– 调试通过– 提交合并到master主干版本

• 3.重构– 小范围代码分支签出– 重构完毕– 合并到主干

Page 4: Git 使用介绍

什么是 Git?• 最早由 linus torwalds用来管理 linux 内核开发

• SCM• 开源( GNU GPL V2)• 速度快• 分布式–离线也能继续开发

• 非线性开发

Page 5: Git 使用介绍

集中式开发

Page 6: Git 使用介绍

分布式开发

Page 7: Git 使用介绍

与 SVN相比Git Svn

分布式管理 集中式管理

速度快 速度慢

控制命令多 有成熟的管理工具

擅长分支管理 不擅长分支管理

处理文件冲突很好 处理文件冲突很差

Page 8: Git 使用介绍

Git安装• Windows

– Msysgit• http://msysgit.github.com/

– cygwin+git+openssh– Tortoisegit

• Centos– yum install git

• Ubuntu– apt-get install git

• Mac– Tower

Page 9: Git 使用介绍

Git command

Page 10: Git 使用介绍

TortoiseGit 

• http://code.google.com/p/tortoisegit/wiki/Screenshots

Page 11: Git 使用介绍

LET’S GIT

Page 12: Git 使用介绍

使用流程• 【客户端】• 生成pub文件,提供给管理员

• 【服务端】• 管理员添加相关权限信息(新建 repo)

• 【客户端】• 2.配置git的基本信息

– Name – E-mail

• 3.本地git clone• 4.开发• 5.提交• 6. PUSH

Page 13: Git 使用介绍

生成密钥对• $ ssh-keygen• Generating public/private rsa key pair.• Enter file in which to save the key

(/c/Users/Medcl/.ssh/id_rsa):

• $ ls• id_rsa id_rsa.pub known_hosts

Git服务器通过这些信息来识别你的身份

Page 14: Git 使用介绍

基本设置

• git config --global user.name “medcl” • git config --global user.email

[email protected]

你的信息,方便识别代码所有者

Page 15: Git 使用介绍

创建一个 Repository

• Repository(代码仓库)

• 1.本地新建一个代码仓库– cd project– git init .– git add .– git commit –m “initial commit”

• 2.知道远程 repo地址,复制一份 repo副本到本地– git clone git://github.com/medcl/medcl.github.com.git

在本地新建仓库,就可以开始使用 git的所有功能

协同开发同一个项目的时候

Page 16: Git 使用介绍

文件管理• git会管理空文件,但不会理会空目录• git commit –a – 自动添加未更新索引的文件– 未添加到 git的文件不会自动处理

• 改名– git mv

• 删档– git rm

Page 17: Git 使用介绍

添加文件• 自动添加目录及子目录下文件– git add .

• 添加指定文件到 git仓库中– git add <文件名 >

• 其它(查看帮助: git help add)– git add git-*.sh– git add Documentation/\*.txt

Page 18: Git 使用介绍

添加文件

Page 19: Git 使用介绍

文件状态生命周期

Page 20: Git 使用介绍

Git Status

• 查看本地 git仓库的状态信息git statusgit status c.txt

Page 21: Git 使用介绍

.gitignore

• 告诉 git那些文件不需要管–即使 git add 也不会添加这些文件

• .gitignore文件内容例子:/data/work/logs/.idea/target/out.DS_Store*.iml

确保只提交给源代码到 repo!

各种编译输出,中间文件,一定不要提交上去

Page 22: Git 使用介绍

提交变更

Page 23: Git 使用介绍

历史记录• git log

Page 24: Git 使用介绍

历史记录• git show HEAD• git help show• gitk –all• git log --graph

Page 25: Git 使用介绍

谁动了我的文件?• 查看文件里面每一行的作者和版本信息• git blame <文件名 >

Page 26: Git 使用介绍

撤销回退• git checkout [HEAD] 档名• git checkout master• git reset HEAD 档名– git reset SHA1:回退到指定版本– git reset HEAD~1:回退到上一个版本–变回 unstaged 或者 untracked ;不变更内容

Page 27: Git 使用介绍

分支• 为什么要使用分支?–重构( refactor)–开发新功能– 修复 bug

• git 鼓励多分支操作• 每次修改都应该在分支上进行• 只有调试通过了,才应该 merge回主分支

Page 28: Git 使用介绍
Page 29: Git 使用介绍

分支操作• git branch

• master:默认的分支名称

• git checkout –b newidea :建立分支并且切换

• git branch

• git checkout newidea 签出分支(切换到分支下)

• git branch 查看当前分支

• git merge newidea 合并分支

• git branch –D newidea 删除分支– 只能删除非工作分支

• git format-patch origin/master 可在当前目录下生成补丁• git checkout master• git aply xxx.patch

Page 30: Git 使用介绍

分支操作• touch newfile• git commit –a –m “new feature:xxx”• git checkout master• git merge newidea– 如果没有冲突,会自动合并

• git branch

• 合并分支: git merge <source branch>• 目标分支为当前分支

Page 31: Git 使用介绍

web 界面

• git instaweb --httpd=webrick • http://localhost:1234/

Ruby Required!

Page 32: Git 使用介绍

参考资源• http://github.com• http://progit.org• http://git-scm.com• https://

git.wiki.kernel.org/index.php/Gitweb• http://www.gitalist.com/install/• http://gitstack.com• http://sitaramc.github.com/gitolite/sts.html#ssh-ha