局域网Git建立共享仓库
希望协作进行短期开发,又觉得ssh授权麻烦,那么可以尝试在局域网通过windows的文件共享机制来建立简单的Git版本管理机制。以下内容在windows平台上,以eclipse为例进行介绍。本文讲述的内容适用于以下两种或者类似情况:
1、小团队处在同个局域网,内部共同进行开发;
2、多台设备,每台都有不同时间创作、不同量的代码,希望合并到一起,并最终push到服务器。
目前所进行项目,由于多人负责不同模块,所以代码最终合并运行是必须的。使用了几天压缩包传来传去以及共享目录分权限、本地编辑再上传的方式,感觉又耗时又费力,对于程序员这种偷懒至上的生物而言,这些工作是必须要省掉的。所以一拍脑袋,咱们在内部搞个Git吧~由于代码是不能公开的,所以Github首先被放弃,然后看了一些资料,决定搭建这么个局域网的共享仓库。任何被授权的人分配读写权限,然后可以pull到这个文件夹,本地修改之后,再push回仓库,用这种更新代码。
建立过程
1、首先,在本地新建一个文件夹,命名为remote或者之类可以识别的名称,主要作为仓库使用。通过Git命令行git init
新建一个仓库(推荐加参数–bare建立裸仓库)。或者在Eclipse中(需要有EGit或之类的插件支持)用同样的方式新建一个仓库(新建项目的时候选择Git就可以,裸仓库的话记得勾选bare选项)。
之后把这个文件夹共享,给同伴添加读写权限。最终确定对方在网上邻居可以看到新建的remote文件夹。
2、在本地项目中,用git remote add
,把文件提交到仓库中。其他人可以在eclipse里,导入(import)一个Git项目,中间输入远程仓库的地址(目录共享地址),协议那里选择files即可。之后就可以使用commit
、push
、pull
等方式进行代码同步了。
通过以上两步,就建立了一个存放代码仓库的中心服务器,可以接受所有开发者提交的代码。所有的开发者都是普通的节点,平时的工作就是和中心仓库同步数据。如下图所示:
但如果提交代码时有冲突, Git 根本就不会让用户覆盖他人代码,它直接驳回第二个人的提交操作,此时他必须先拉取最新数据下来,手工解决冲突合并后,才能继续推送新的提交。
如果希望像Github那样操作,那么可以建立集成管理员工作流,具体请查看 Git文档介绍 。下一步准备采用这种方式,集中管理太混乱了……
几个问题
1、裸仓库(git init --bare
)和一般版本库(git init
)的区别?
裸仓库仅仅保存代码历史,代码并不保存在裸仓库中。所以本地操作时,可以看到它只包含一个.git文件夹,并且你push文件进去,他还是一个文件夹……
一般版本库,除了.git的配置文件夹,也包含了所有代码,作为master(例)分支存在。
2、该提交什么?
在项目文件夹下,新建(或者已经存在)一个.gitignore文件,其中包含了需要忽略的文件(夹),如果写过.htaccess(突然想到这个),就知道类似:
# 此为注释 – 将被 Git 忽略
*.a # 忽略所有 .a 结尾的文件
!lib.a # 对 lib.a无效(严格模式)
/TODO # 忽略项目根目录下的 TODO 文件(夹)
build/ # 忽略 build/ 目录下的所有文件
具体请参考 gitignore的编写。基本上,在java程序编写中,忽略bin文件夹就可以了。
由于刚开始学习自己建立Git版本管理机制,所以要学习的东西还很多。
自沙自沙
板凳。。好高端的樣子~
果断最近也要搭一个,版本更新频繁,自己写的也不记得
最近我忙的都需要git来协作了,因为不是free项目,用了付费git托管。git真是太方便了
@zwwooooo
这个和Visual Studio 中的Team Foundation 有什么区别?
@zwwooooo
Dropbox + git 私有项目,具体见 http://weizhifeng.net/git-with-dropbox.html
正好要搭建这个环境。。。mark.
只有工作涉及到的这些才会去研究,不然,头有点大,呵呵。
还是喜欢你以前那个主页样式。现在这个空隙时大时小。
@郑永 因为我改了一下啊
@axiu 那个logo换了,哈哈,满好看。
看起来好高端…
幸好我还不用Team Work…
果然是高端大气上档次嘛
我们是同事在服务器上搭的gitlab
又是搞技术的文章。
不错,放笔记本里面了,以后肯定会用到!
我最近在用source tree这东西, 小型的git
@ilikecss 开源里面最好的跨平台git客户端了, 怎么会是小型
@牧风
是吗,我没了解过呢,用起来很方便
我们学校现在用的是svn。。
这个和svn差不多了吧,也是集中管理了,如果主机暂时有事,别的人也不能进行开发了