局域网Git建立共享仓库

By
技术文档

希望协作进行短期开发,又觉得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即可。之后就可以使用commitpushpull等方式进行代码同步了。

通过以上两步,就建立了一个存放代码仓库的中心服务器,可以接受所有开发者提交的代码。所有的开发者都是普通的节点,平时的工作就是和中心仓库同步数据。如下图所示:

集中式工作流

但如果提交代码时有冲突, 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版本管理机制,所以要学习的东西还很多。

Comments: 21

  1. 自沙自沙

    @venmax 2014年04月27日
  2. 板凳。。好高端的樣子~ :lol:

    2014年04月27日
  3. 果断最近也要搭一个,版本更新频繁,自己写的也不记得

    2014年04月27日
  4. 最近我忙的都需要git来协作了,因为不是free项目,用了付费git托管。git真是太方便了

    2014年04月28日
    • @zwwooooo

      这个和Visual Studio 中的Team Foundation 有什么区别?

      2014年04月28日
    • @zwwooooo

      Dropbox + git 私有项目,具体见 http://weizhifeng.net/git-with-dropbox.html

      2014年10月31日
  5. 正好要搭建这个环境。。。mark.

    2014年04月28日
  6. 只有工作涉及到的这些才会去研究,不然,头有点大,呵呵。

    2014年04月28日
  7. 还是喜欢你以前那个主页样式。现在这个空隙时大时小。

    2014年05月01日
    • @郑永 因为我改了一下啊

      @venmax 2014年05月01日
    • @axiu 那个logo换了,哈哈,满好看。

      2014年05月20日
  8. 看起来好高端…
    幸好我还不用Team Work…

    2014年05月02日
  9. 果然是高端大气上档次嘛

    2014年05月03日
  10. 我们是同事在服务器上搭的gitlab

    2014年05月07日
  11. 又是搞技术的文章。

    2014年05月10日
  12. 不错,放笔记本里面了,以后肯定会用到!

    2014年05月16日
  13. 我最近在用source tree这东西, 小型的git :!:

    2014年06月12日
  14. 我们学校现在用的是svn。。 :?:

    2014年06月15日
  15. 这个和svn差不多了吧,也是集中管理了,如果主机暂时有事,别的人也不能进行开发了

    2014年10月28日

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

:razz: