Git版本使用规范

固定分支:develop 开发分支(最新开发版本,原release分支)
固定分支:master 产品分支
产品稳定版本,除紧急更新以外定期更新。
属于保护分支(只有管理员能push)

临时分支:release-* 预发布分支
发布产品前的测试分支。
分两种情况:1 新加入的功能feature分支完成时,
合并最新master后建立此分支,
然后在release服务器上pull下来进行测试,
测试完成后合并master和develop。
2 修补bug的fixbug分支,如修复bug后需在线上测试,
则在test服务器上pull此fixbug分支进行测试。

临时分支:feature-* 功能分支
新功能需要在master分支上clone一份进行开发
功能完成经本地测试无问题后,不允许直接合并master或develop分支,
需经预发布分支测试没有问题后,合并至master和develop。

临时分支:fixbug-* 修补bug分支
修补bug分支是从master分支上面clone出来的。
修补结束经测试没有问题以后,再合并进master和develop分支。

Centos6.6搭建GitLab CE

安装软件包
$ yum -y install libicu-devel patch gcc-c++ readline-devel zlib-devel libffi-devel openssl-devel make autoconf automake libtool bison libxml2-devel libxslt-devel libyaml-devel zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker


安装Git
// 查看当前git版本
$ git –version
// 如果小于1.7.10则先卸载
$ yum remove git

// 下载最新的git并安装
$ wget -O git-src.zip https://github.com/git/git/archive/master.zip
$ unzip git-src.zip
$ cd git-src
$ make prefix=/usr/local all
$ make prefix=/usr/local install
$ ln -fs /usr/local/bin/git* /usr/bin/


安装Ruby
$ mkdir /tmp/ruby && cd /tmp/ruby
$ curl –progress ftp://ftp.ruby-lang.org/pub/ruby/ruby-2.1.5.tar.gz | tar xz
$ cd ruby-2.1.5
$ ./configure –disable-install-rdoc
$ make && make install

$ ln -s /usr/local/bin/ruby /usr/bin/ruby
$ ln -s /usr/local/bin/gem /usr/bin/gem
$ ln -s /usr/local/bin/bundle /usr/bin/bundle

$ gem source -r https://rubygems.org/
$ gem source -a https://gems.ruby-china.org/

$ gem install bundler –no-ri –no-rdoc


安装MySQL 初始化GitLab库
$ yum install mysql mysql-devel mysql-server -y
$ /etc/init.d/mysqld start
$ chkconfig mysqld on
// 登录mysql创建gitab的帐号和数据库
mysql> CREATE USER ‘gitlab’@’localhost’ IDENTIFIED BY ‘gitlab’;
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO ‘gitlab’@’localhost’;
//测试是否可以用git帐号登录数据库
$sudo -u git -H mysql -u gitlab -p -D gitlabhq_production


安装Redis
$ yum install -y wget gcc make tcl
$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz
$ tar zxvf redis-3.2.9.tar.gz
$ cd redis-3.2.9
$ make
$ make test
$ make install

$ cp redis.conf /etc/
$ touch /etc/init.d/redis
$ chmod 755 /etc/init.d/redis
$ vi /etc/init.d/redis

#!/bin/bash
#
# Init file for redis
#
# chkconfig: – 80 12
# description: redis daemon
#
# processname: redis
# config: /etc/redis.conf
# pidfile: /var/run/redis.pid
source /etc/init.d/functions
#BIN=”/usr/local/bin”
BIN=”/usr/local/bin”
CONFIG=”/etc/redis.conf”
PIDFILE=”/var/run/redis.pid”
### Read configuration
[ -r “$SYSCONFIG” ] && source “$SYSCONFIG”
RETVAL=0
prog=”redis-server”
desc=”Redis Server”
start() {
if [ -e $PIDFILE ];then
echo “$desc already running….”
exit 1
fi
echo -n $”Starting $desc: ”
daemon $BIN/$prog $CONFIG
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $”Stop $desc: ”
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog $PIDFILE
return $RETVAL
}
restart() {
stop
start
}
case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e /var/lock/subsys/$prog ] && restart
RETVAL=$?
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $”Usage: $0 {start|stop|restart|condrestart|status}”
RETVAL=1
esac
exit $RETVAL

#在redis.conf中修改 #mkdir /data
daemonize yes
logfile “/var/log/redis.log”
dir /data

$ /etc/init.d/redis start
$ chkconfig redis on


添加git帐号并允许sudo
$ useradd –comment ‘GitLab’ git
$ echo “git ALL=(ALL) NOPASSWD: ALL” >>/etc/sudoers


安装GitLab CE配置依赖项
如想使用Postfix来发送邮件,在安装期间请选择’Internet Site’. 您也可以用sendmai或者 配置SMTP服务 并 使用SMTP发送邮件.
在 Centos 6 和 7 系统上, 下面的命令将在系统防火墙里面开放HTTP和SSH端口.
$ sudo yum install curl openssh-server openssh-clients postfix cronie
$ sudo service postfix start
$ sudo chkconfig postfix on
$ sudo lokkit -s http -s ssh


添加GitLab仓库,并安装到服务器上
$ curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
$ sudo yum install gitlab-ce


启动GitLab
$ sudo gitlab-ctl reconfigure


使用浏览器访问GitLab
首次访问GitLab,系统会让你重新设置管理员的密码,设置成功后会返回登录界面.
默认的管理员账号是root,如果你想更改默认管理员账号,请输入上面设置的新密码登录系统后修改帐号名.

Git解决每次提交都要输入密码

cd 回车;进入当前用户目录下;

vim .git-credentials (如果没有安装vim 用其它编辑器也可以或 sudo apt-get install vim 安装一个)

按照以下格式输入内容:
https://{username}:{password}@github.com
其中username,password,github.com 都换成你自己的内容

保存退出后执行下面命令
git config –global credential.helper store

执行完后
/home/用户名/.gitconfig 会新增一项
helper = store
这是再执行git push/pull的时候就不会在要求你输入密码了。

Git pull强制覆盖本地文件

git fetch –all
git reset –hard origin/release
git pull

Git导出纯净代码

git archive –format zip –output “./output.zip” release -0

Git解决文件夹过长报错问题

git config –global core.longpaths true

学习Git命令

git add . //指的是把所有文件 添加到本地repository
git commit -m “#123 test” //这里是添加commit的message
git push origin master //origin指的是remote 远端地址, master 指的是你的分支。

本地分支
git branch远程分支
git branch -a

切换分支
git branch bug56

下载远程分支
git checkout bug56
git pull origin bug56

查看修改
git status

提交本次修改
git commit -am “#bug56”
git push origin bug56

合并分支
git branch
git checkout develop
git pull origin develop
git merge bug56
git commit -am “合并分支”
git push origin develop

从release合并单个文件到master
git checkout release 两个减号 /文件路径

恢复本地修改的文件
git checkout — plugin/poster/model.php

合并分支
git merge –no-ff -m “merged bug fix 101” issue-101

暂存缓冲区
git stash

恢复暂存
git stash pop

从远程分支创建本地分支
git checkout origin/master -b fixbug

# 删除 untracked files
git clean -f
# 连 untracked 的目录也一起删掉
git clean -fd

重命名分支,如果newbranch名字分支已经存在,
则需要使用-M强制重命名,否则,使用-m进行重命名。
git branch -m | -M oldbranch newbranch

删除branchname分支
git branch -d | -D branchname

删除远程branchname分支
git branch -d -r branchname

12