前些天在服务器上搭建好了gitlab,想在团队推行git,逐步替换svn的使用。这样大家再也不需要linux系统管理员来帮忙创建项目和开通权限,都能够自己搞定,而且gitlab强大功能也能让代码review更加能够实行(虽然已经搭建了websvn,但是功能带单一)。
对于大多新的团队成员,如何能像svn一样检出代码可能是开始使用git的第一步:
首先,让gitlab的管理员,帮你创建一个账号,你登陆到gitlab,一般都使用ssh public keys来push和pull代码。使用ssh-keygen 生成ssh密钥。
~# ssh-keygen
~# cat ~/.ssh/id_rsa.pub
拷贝自己的ssh密钥,添加到gitlab的public key。
然后,新建本地git目录检出目录。
~# mkdir project
~# cd project
~# git init // 初始化本地环境
~# git remote add origin git@githost:username/project.git // 添加远程git地址,其中origin是给远程版本库起的别名,随便起。
~# git pull origin master // 检出master分支代码到本地
这样本地开发环境的代码就检出到本地了。
==============================================================================
另git remote命令还有
~# git remote -v // 查看当前使用的git 版本库地址
~# git remote add [name] [url] // 添加远程版本库
~# git remote rm [name] // 删除远程版本库
~# git remote set-url [name] [url] //修改远程版本库
~# git pull [remoteName] [localBranchName] // 拉去远程版本库代码
~# git push [remoteName] [localBranchName] // 提交本地分支代码
==============================================================================
由于git的灵活性,本地的分支名可以与远程版本库不同。但为了团队协作不出问题,必须规定本地分支名与版本库分支名相同。还有远程版本库统一命名origin,分支目录结构
origin/release-[version] // 正式发布版本
origin/master // 开发主干(用于测试环境)
origin/bough-[son-project] // 系统子项目主分支(用于多人多子项目测试环境)
origin/branch-[develper]-[version] // 项目团队个人开发分支
==============================================================================
在添加远程版本库的前提下,如果想在本地添加远程版本库的其他分支,只需:
~# git pull origin branch-1.1 // 拉取版本库项目分支
~# git branch branch-1.1 // 创建本地分支
~# git checkout branch-1.1 // 本地切换分支开发环境
==============================================================================
分支合并,思想上和操作上跟svn的合并操作类似,但是确实比svn要简单的多!!
~# git branch // 查看你当前所在分支,比如在master分支下,要合并branch-1.1到master
~# git merge branch-1.1 // 直接在master分支下执行,当然这只是在你的本地执行操作,没有影响到git远程版本库上的分支,如果出现冲突,解决方式跟svn merge类似。建议多人协作开发merge操作都在本地执行,然后再push到远程版本库。
另外:
~# git branch -r // 查看远程版本库的所有分支
~# git branch -d [branchName] // 删除本地分支
~# git branch –help //查看分支的用法
==============================================================================
git也有tag标签功能,有需求可以通过~# git tag –help 查看使用。
git的submodule功能对于团队以后的开发一定有很大帮助。
~# git submodule add git@git-host/username/submodule.git include/core/**