环境: 本机 mac , Git服务器 :虚拟机centOS
1.确认Git服务器和本机都已安装Git
git --version
2.到Git服务器放置项目的地方执行git初始化指令
我这里的Git服务器的项目路径为/website/git
本地mac的项目路径为/website/www
项目名称为test
cd /website/git
mkdir test
cd test
#这里可以重命名,默认为.git
git init
这里建议使用 git init --bare ,git init和git init --bare的区别
3.确保ssh无密连接正常
https://www.jianshu.com/p/b80029475157
3.打开Sourcetree -> 从URL克隆
这里的源URL为
root@192.168.123.229:/website/git/test/.git
或者mac直接使用git clone指令克隆
cd /website/www
git clone root@192.168.123.229:/website/git/test/.git
需要注意的是如果上面使用的是git init --bare ,那么源URL应改为root@192.168.123.229:/website/git/test
– 可能的错误
1.报错bash: git-upload-pack: 未找到命令
4.推送(push)
点击推送按钮推送到默认的master分支
可能出现的问题
可以在Git服务器的相应位置执行如下指令解决
cd cd /website/git/test
git config receive.denyCurrentBranch ignore
5.在Sourcetree里面使用Git flow
先创建一个名为 develop 的分支,
然后 在菜单栏 仓库-》git-flow 或 hg-flow -》下个操作
这样在项目的开发过程中,就可以规范地管理项目分支了
各分支的作用和使用规范
以后所有的开发都是在develop这个分支上进行;当开发完成一些模块时,就可以合并到 master分支上
6.git-flow 添加新功能
在菜单栏 仓库-》git-flow 或 hg-flow -》建立新的功能
7.完成新功能
新功能 开发完成之后,再次点击 git flow 按钮,会出现 完成功能 按钮
点击 确认 按钮,会把当前新功能分支 合并到 develop分支,并删除新功能分支
8.建立新的发布版本
在菜单栏 仓库-》git-flow 或 hg-flow -》建立新的发布版本
9.完成版本发布
在菜单栏 仓库-》git-flow 或 hg-flow -》完成版本发布
确认之后,会发现 发布版本的分支,会合并到 develop分支 和 master 分支,表示项目发布了一个版本
10.建立新的修复补丁
在菜单栏 仓库-》git-flow 或 hg-flow -》建立新的修复补丁
这项就是用来记录和处理bug跟踪的
bug修复分支 是基于 master的
11.完成修复补丁
在菜单栏 仓库-》git-flow 或 hg-flow -》完成修复补丁
确定之后,会发现,新修复的bug分支,会合并到 master分支和develop分支
至此整个git-flow 流程已跑完
– git hooks
hooks实现代码自动部署到测试环境
项目的测试环境为demo.test.cn, 指定测试目录为/website/demo/test
#切换到钩子目录
cd /website/git/test/.git/hooks
#编辑post-receive文件
vi post-receive
文件内容如下
#!/bin/sh
export LANG=zh_CN.UTF-8
unset GIT_DIR
# 指定代码检出目录
DIR=/website/demo/test
#git --work-tree=${DIR} clean -fd
# 不指定默认是master分支
git --work-tree=${DIR} checkout --f
也可指定其他分支,如指定develop分支
git --work-tree=${DIR} checkout develop --f
授权该文件可执行
chmod +x post-receive
变更项目某个文件测试提交推送,可以看到/website/demo/test目录下会检出master分支的所有文件
– 更新代码到正式环境
正式环境指定目录为/website/realse/test
cd /website/git/test
git --work-tree="/website/realse/test" checkout master --f