转载文章请保留出处  http://blog.csdn.net/defeattroy/article/details/13775499 git仓库是多人协作使用的,可以基于很多种协议,例如http.git以及ssh等.ssh最为安全方便,配置起来也比较容易,但是权限控制是一个问题,比如下面的场景由两个用户st都给一个仓库贡献代码,那么如果通过ssh协议clone/push的话,会在git仓库的服务端新创建一些文件,主要是objects下面(refs下面文件也会做修改),这些文件的属主和属组就是你…
简介 Gitflow工作流程围绕项目发布定义了严格的分支模型. 为不同的分支分配了非常明确的角色,并且定义了使用场景和用法.除了用于功能开发的分支,它还使用独立的分支进行发布前的准备.记录以及后期维护. 工作原理 流程仍然使用一个中央代码仓库,它是所有开发者的信息交流中心.跟其他的工作流程一样,开发者在本地完成开发,然后再将分支代码推送到中央仓库.唯一不同的是项目中分支的结构. 用于记录历史的分支 Gitflow使用两个分支来记录项目开发的历史,而不是使用单一的master分支. 在Gitflo…
前言 首先说明一下,这还是本人第一次写这类文章,如有不妥,多多见谅. 基本情况 因为现在公司的人不是很多,但是还对代码有着严格的管控,所以采用了gitolite的管理方式 其实正常来讲,这种权限的把控在我看来没什么必要. 我在之前没有接触过这个插件的时候,对它可以说是一头雾水,现在搞懂了以后也想分享给大家 好了,废话不多说,咱们开始吧. 一.安装git 首先咱们要弄清楚,git是分本地以及远端的,这里以我使用的windows电脑为例(Mac不需要安装), 现在Git服务端安装好Git,大部分的是…
通过git-http-backend方法提供的http服务基本上可以做到认证用户才能使用,但只能控制到服务器路径访问,而且无法区分读写.经过不懈努力,找到了方法,相关脚本及配置见后. 基本思路就是利用apache的路径权限设置控制版本库的读权限:通过hooks/pre-receive钩子来控制版本库的写权限,具体钩子的原理和用户这里不写了.git提供了几个全局变量可以在pre-receive钩子里面使用,详情可以参看git-http-backend manual page. 通过REMOTE_U…
第一.Git作为分布式的版本控制系统,你是你本地仓库的主人,但是想要实现多人的协作开发,你就要将你本地的开发推送到远程共享仓库中供大家下载,本篇主要以github作为远程服务器来介绍有关远程仓库这块内容. 作为我们的服务器,并不能让任何人向我们的git服务器上推送代码,只能让有凭证的人向服务器推送.git本地和github服务器之间是通过ssh对称秘钥来完成两者的身份确认的,至于ssh是什么,不了解的同学可以自行学习下,简单来说,它就是一个通讯加密协议.下面我们先生成一对ssh秘钥,执行以下代码…
截至目前,对gitweb的掌握还没达到最终目标,仅仅实现了通过浏览器来浏览项目,通过git命令仍然未能clone项目.但仍然要记录下来,主要是因为打算暂时放弃这条路,而所收获的一些经验还是要记录下来.说不定哪天又捡起来了呢. 首先描述下目标:可以按照项目.人员来分别控制项目的读写权限.方法应该很多,之前通过git-http-backend的hook可以搞定,gitlab也应该可以搞定.根据已有的资料,gitweb也应该可以搞定.思路之一应该是scriptalias,把git命令的申请路由到git…
现在,大部分项目都是用 git 来管理代码的,但当项目变大.多人协作时,git 的使用就变得复杂了,这时就需要在 git 使用的流程上来思考如何更优的使用 git. 对于大部分 web 项目而言,并不像软件.APP 项目一样有版本的划分,而是不断的更新.迭代,这就使得 web 项目的 git 使用要复杂一些,需要管理好哪些是正在开发的代码.哪些是提交测试的代码.哪些是已经上线的代码.多人共同开发时如何避免代码冲突与线上新代码被旧代码覆盖等等. 1. 一个分支 如果项目比较小,不频繁更新时,可以只…
多人协作的工作模式通常是这样: 1.首先,可以试图用 git push origin branch-name 推送自己的修改: 2.如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并: 3.如果合并有冲突,则解决冲突,并在本地提交: 4.没有冲突或者解决掉冲突后,再用 git push origin branch-name 推送就能成功! 如果 git pull 提示"no tracking information",则说明本地分支和远程分支的链接关系没有…
当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了, 并且,远程仓库的默认名称是origin. 如果是本地仓库关联远程仓库 --- 要查看远程库的信息,用git remote $ git remote   或者,用git remote -v显示更详细的信息 上面显示了可以抓取和推送的origin的地址.如果没有推送权限,就看不到push的地址. ----- 推送分支 推送分支,就是把该分支上的所有本地提交推送到远程库. 推送时,要指定本地分支,这样,…
▓▓▓▓▓▓ 大致介绍 我们写好文件后添加到版本库,但是这样还没有做完,我们还需要将它同步到GitHub的远程仓库上,这里就以我们刚开始的drag项目为例,我们在Git学习之路(2)-安装GIt和创建版本库 中将drag项目克隆到了本地文件中,假设进过修改后,我们现在要将修改后的文件同步到远程仓库中 如果对前面的知识有疑问,请移步小白学Git ▓▓▓▓▓▓ 同步到远程仓库 我们要想将文件添加到远程首先要确定 Git Shell 和 有界面的客户端中登录的是不是自己的GitHub账号,应为同步到远…