Axiu Blog
、小团队处在同个局域网,内部共同进行开发; 2、多台设备,每台都有不同时间创作、不同量的代码,希望合并到一起,并最终push到服务器。 目前所进行项目,由于多人负责不同模块,所以代码最终合并运行是必须的。使用了几天压缩包传来传去以及共享目录分权限、本地编辑再上传的方式,感觉又耗时又费力,对于程序员这种偷懒至上的生物而言,这些工作是必须要省掉的。所以一拍
希望协作进行短期开发,又觉得ssh授权麻烦,那么可以尝试在局域网通过windows的文件共享机制来建立简单的Git版本管理机制。以下内容在windows平台上,以eclipse为例进行介绍。本文讲述的内容适用于以下两种或者类似情况: 1、小团队处在同个局域网,内部共同进行开发; 2、多台设备,每台都有不同时间创作、不同量的代码,希望合并到一起,并最终push到服务器。 目前所进行项目,由
希望协作进行短期开发,又觉得ssh授权麻烦,那么可以尝试在局域网通过windows的文件共享机制来建立简单的Git版本管理机制。以下内容在windows平台上,以eclipse为例进行介绍。本文讲述的内容适用于以下两种或者类似情况: 1、小团队处在同个局域网,内部共同进行开发; 2、多台设备,每台都有不同时间创作、不同量的代码,希望合并到一起,并最终push到服务器。 目前所进行项目,由
局域网Git建立共享仓库
Max

希望协作进行短期开发,又觉得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