直接上干货
windows本地安装Git
官网下载地址:https://git-scm.com/downloads
Git基本使用方式
- 在GitHub注册账号登录并新建一个仓库
New Repository
- 复制仓库地址链接
- 在本地某个目录
shift+鼠标右键
打开cmd - 输入
git clone 地址链接
下载仓库中的文件 - 修改文件
- 在cmd中输入
git add 文件名
- 在cmd中输入
git commit -m 描述文字
提交修改 - 在cmd中输入
git push 地址链接
上传修改到github - 还可安装第三方海龟工具,可视化操作git
Git工作流类型
- 实际工作中,集中式工作流和GitFlow工作流用得最多
集中式工作流
- 方便svn用户快速迁移到git
- 适合小型团队或者个人用户
如果你的开发团队成员已经很熟悉Subversion,集中式工作流让你无需去适应一个全新流程就可以体验 Git 带来的收益。这个工作流也可以作为向更 Git 风格工作流迁移的友好过渡。
功能分支工作流
- 适合小型工作团队
功能分支工作流以集中式工作流为基础,不同的是为各个新功能分配一个专门的分支来开发。这样可以在把新功能集成到正式项目前,用 Pull Requests 的方式讨论变更。
GitFlow工作流
- 适合全公司协同工作
GitFlow 工作流通过为功能开发、发布准备和维护分配独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。
Forking工作流
- 适合跨国公司大型协作
Forking 工作流是分布式工作流,充分利用了Git在分支和克隆上的优势。可以安全可靠地管理大团队的开发者(developer),并能接受不信任贡献者(contributor)的提交。
Pull Requests
- 分布式git交流
- 又称为merge requests 合并请求
Pull requests 让开发者更方便地进行协作的功能,提供了友好的Web界面可以在提议的修改合并到正式项目之前对修改进行讨论。
集中式工作流
- 在GitHub上新建一个Repository,复制地址链接
- 在本地新建小明文件夹和小红文件夹
- 小明文件夹使用
git clone
命令或者右键可视化界面下载 - 小红文件夹使用
git clone
命令或者右键可视化界面下载 - 小明新建文件,
commit
并push
- 小红先
pull
,后新建或者修改已有文件,commit
并push
功能分支工作流
-
小明在右键乌龟git工具中创建并切换到子分支
-
小明在子分支中工作,
commit
并push
-
小明在中央仓库请求合并
pull request
-
主分支管理员同意合并
Merge pull request
-
小明切换回master主分支,并
pull
重新拉取主分支 -
小明在右键乌龟git中,切换分支选项的...中,右键删除子分支
-
删除的子分支,包括本地子分支和远程子分支
-
在中央仓库中发现,子分支没有了
-
主干分支一定不要被污染
GitFlow工作流
- 下述流程图代码复制到有道云笔记中可以查看流程图
graph TB
Z((开始))-->A(主管创建中央仓库)
A-->A1(主管pull master分支到本地仓库)
A1-->A2(主管在本地仓库创建develop分支)
A2-->A3(主管将本地仓库push到中央仓库)
A3-->B(组员1将中央仓库clone到本地仓库)
A3-->C(组员2将中央仓库clone到本地仓库)
B-->B1(组员1在本地以develop为基准创建并切换Feature分支)
C-->C1(组员2在本地以develop为基准创建并切换Feature分支)
B1-->B2(组员1在本地仓库完成任务并commit-push)
C1-->C2(组员2在本地仓库完成任务并commit-push)
B2-->B3(组员1在中央仓库pull requests请求合并到develop分支)
C2-->C3(组员2在中央仓库pull requests请求合并到develop分支)
B3-->A4.1{主管审核}
C3-->A4.2{主管审核}
A4.1-->|审核通过|A5.1(主管merge pull requests到develop分支)
A4.1-->|不通过|A6(结束pull requests)
A4.2-->|审核通过|A5.2(主管merge pull requests到develop分支)
A4.2-->|不通过|A6(结束pull requests)
A5.1-->A7(主管在本地基于develop分支建立Release-1.0.0预发布分支)
A5.2-->A7(主管在本地基于develop分支建立Release-1.0.0预发布分支)
A7-->D(测试员pull Release-1.0.0分支到本地仓库并测试)
D-->D1(测试通过后push Release-1.0.0分支到中央仓库并pull requests请求合并到master分支)
D1-->A8(主管merge pull requests之后pull master到本地仓库)
A8-->A9(主管在本地仓库基于master分支创建标签1.0.0-RELEASE并包括标签push到中央仓库)
自己搭建git服务器作为中央仓库
- 操作系统版本:ubuntu 18.04 x64
安装git
apt-get install git
创建git用户组和git用户
- 用来运行git服务
groupadd git
useradd git -g git
passwd git
# 然后输入git用户的密码
初始化git仓库
cd /home/git/
mkdir repo
cd repo
# 设置git仓库名称为XXX
git init --bare XXX.git
# 修改git仓库所有者
# chown -R user:group XXX.git
chown -R git:git XXX.git
禁用shell登录
vi /etc/passwd
# 找到 git:x:1001:1001:,,,:/home/git:/bin/bash 修改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
# git用户可以使用git,但无法通过ssh登录git用户
创建证书登录
-
创建证书登录,是为了不用每次提交、推送等操作都需要输入密码
-
服务端
cd /home/git/
# 若没有.ssh目录,则执行下列命令
# mkdir .ssh && chown -R username:groupname .ssh && chmod 700 .ssh
mkdir .ssh && chown -R git:git .ssh && chmod 700 .ssh
# 若有.ssh目录,直接执行下列命令
cd .ssh
# 创建文件 并 设置文件所属 并 设置权限
# 命令:touch authorized_keys && chown -R username:usergroup authorized_keys && chmod 600 authorized_keys
touch authorized_keys && chown -R git:git authorized_keys && chmod 600 authorized_keys
- 打开服务端的RSA认证
# vim /etc/ssh/sshd_config
#(找到下面3行并放开,如果没有添加上)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
- 客户端
- 需要在windows本地生成一个公钥,打开cmd
ssh-keygen -t rsa
公钥生成在C:\Users\{USER_NAME}\.ssh\id_rsa.pub
使用notepad++打开该文件,复制公钥
- 服务端
- 在authorzed_keys中粘贴用户公钥,每个公钥一行
- 使用git命令行工具,可以免密操作,使用乌龟git界面操作,仍然需要输入密码
网友评论