git 使用介绍

Post on 20-Aug-2015

1.434 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Git 使用介绍

Medcl

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

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

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

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

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

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

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

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

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

• 非线性开发

集中式开发

分布式开发

与 SVN相比Git Svn

分布式管理 集中式管理

速度快 速度慢

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

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

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

Git安装• Windows

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

– cygwin+git+openssh– Tortoisegit

• Centos– yum install git

• Ubuntu– apt-get install git

• Mac– Tower

Git command

TortoiseGit 

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

LET’S GIT

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

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

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

– Name – E-mail

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

生成密钥对• $ 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服务器通过这些信息来识别你的身份

基本设置

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

“m@medcl.net”

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

创建一个 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的所有功能

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

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

• 改名– git mv

• 删档– git rm

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

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

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

添加文件

文件状态生命周期

Git Status

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

.gitignore

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

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

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

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

提交变更

历史记录• git log

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

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

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

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

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

分支操作• 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

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

• git branch

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

web 界面

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

Ruby Required!

参考资源• 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

top related