Bitbucket-团队开发私有库使用指南

使用Git维护代码比较好的是GitHub,但是GitHub的私有库是收费的。那么对于一个小团队前期开发时可以考虑使用Bitbucket免费私有库,默认是5个人,据说邀请好友可以赠送3个人,则是8个人。

Bitbucket 和 Github 一样都是 代码维护管理仓库,可以较好的进行代码管理和协同合作。除众所周知的代码维护外,采用 Bitbucket/Github 进行团队开发的另外两大好处分别是
1:WIKI页面管理,方便大家的讨论知识进行梳理;
2:问题追踪,方便团队开发时进行 问题记录,责任下发,自由讨论,邮件关注,团队投票表决等;

代码的维护统一采用Git工具,其他包括Wiki, 问题追踪等 文本排版建议采用Markdown语法。

【第一步】:开通帐户
Bitbucket(http://bitbucket.org/)支持使用Google帐号授权登录。

【第二步】:添加团队
从页面右上角进入 管理帐号,选择使用的Team,进入ACCESS MANAGEMENT -> User groups 添加用户组,如果是添加多个管理员的话则添加 Administrators,如果是 添加开发者用户的话,则添加Developers,添入他们的邮箱/用户名进行邀请(如果对方已通过邮箱注册了帐户则直接添加进来,如果尚未开通则发送邀请邮件)。
此时进入团队首页就可以看到新添加的成员了。

【第三步】:创建仓库
在团队首页-概览-一栏 创建一个新的仓库:Create your first repo,添入一些基本信息后则创建成功。(其中有一个HipChat整合,由于内地使用不是很多,我们暂且不进行整合)

【第四步】:安装Git
Unix系统下可直接使用Git,而Win用户则需要安装可支持插件,Git的安装比较简单,直接参考【Git 安装指南

【第五步】:初始化本地仓库
写在前面的话:如果是从服务器上拉仓库里的文件下来则使用pull,如果是要从服务器上直接把整个仓库Down下来则使用clone。

安装好Git之后,我们选用命令行操作,打开Git Bash,创建一个文件夹,或者cd转到目标文件夹下。
此处注意,Window下目录使用反斜杠\表示层级,但是Unix下使用斜杠/,而反斜杠在Unix下是转义符。

%注意,以下以%表示注释
$ mkdir /jacoxu/2015SemanticCode %转到目标路径下
%注意,接下来有两种方式,1种是使用下面两行代码初始化本地仓库,1种是直接克隆clone服务器端的仓库
%方式1
$ git init %进行Git仓库初始化,如果目录下什么都没有的话,则提示初始化了一个空仓库
%把服务器目标仓库地址添加到本地
$ git remote add [别名] git@bitbucket.org:[团队名]/[仓库名].git , [别名]一般惯用origin
%方式2
$ git clone git@bitbucket.org:[团队名]/[仓库名].git
#注,有HTTPS和SSH两种模式,上面采用的是SSH的URL,如果是HTTPS的URL则是:https://[用户名]@bitbucket.org/[团队名]/[仓库名].git

此时则初始化一个本地仓库完毕,插曲一下。当我们维护了好几个远程库进行代码更新时,可能会经常替换远程库地址。
那么使用 $ git remote -v 查看当前已有的服务器别名,使用 $ git remote rm [别名] 删除指定别名。
另外其他的一些操作指令参考 参考博文1 2 3。

【第六步】:提交代码
先创建一个新文件README.md

$ git add README.md %表示在当前版本中添加README.md文件,如果要添加所有更新后的文件的话,则直接使用 git add .
$ git commit -m ‘Initial commit with contributors’ %添加一条注释,注意所有的版本工具是不能忽略注释的
$ git push -u [别名] master %push提交到服务器上,注,pull则是从服务器上拉下代码
%如果没有创建公钥的话,则需要输入密码个人Bitbucket的密码。

(这里插曲一下,README.md)采用的是markdown语言通过句尾两个空格或一个空行来换行,很多PHP页面中都采用此格式进行排版。

【其他指令】:
$ git checkout jacoxu %从master切换到jacoxu分支
$ git status %查看当前状态
$ git branck %查看有那些分支,并且当前在哪个分支上

【一些问题】:

问题1:大家关注比较多的可能是多人同时编辑同一个文件的问题。Git提供了自动Merge操作,但是如果有删除和添加同时操作的情况下,自动Merge一般都是失效的。但是自动Merge会标注出两个版本的异同,此时,再手动进行Merge,所以应尽量避免两个人同时编辑同一个文件的情况,如果真的必要。那么在自己修改的地方添加一些备注,方便必须进行人工Merge时的参考。

一般从一个分支提交代码时,为了避免冲突则先Pull一下代码,Git会进行自动Merge,然后在进行Push代码。

问题2:删除文件后如何提交,参考如下,使用git add –all .
$ git add .
warning: You ran ‘git add’ with neither ‘-A (–all)’ or ‘–ignore-removal’,
whose behaviour will change in Git 2.0 with respect to paths you removed.
Paths like ‘data/jacoxu/all_Seg.txt’ that are
removed from your working tree are ignored with this version of Git.

* ‘git add –ignore-removal ‘, which is the current default,
ignores paths you removed from your working tree.

* ‘git add –all’ will let you also record the removals.

Run ‘git status’ to check the paths you removed from your working tree.

jacoxu@YSY2322 /jacoxu/2015Semantic/(master)
$ git add –all .

$ git commit -m ‘change some code –jiaming’
[master af0ee74] change some code –jiaming
2 files changed, 34 insertions(+), 22618 deletions(-)
delete mode 100644 data/jacoxu/all_Seg.txt
会发现,有delete操作(默认是忽略delete操作的)

问题3:如果系统出现如下错误:warning: LF will be replaced by CRLF,则在仓库创建前输入如下指令:

$ git config –global core.autocrlf false

【参考博文】:
1. Git 常用命令详解(一)
2. Git 常用命令详解(二)
3. Git 常用命令详解(三)

Bitbucket-团队开发私有库使用指南》上有 1 条评论

  1. Pingback 引用通告: 基于Theano的DNN框架Blocks使用简要总结 | 刻骨铭心

发表评论

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

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>