Git客户端安装使用与服务端搭建

直接上干货

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命令或者右键可视化界面下载
  • 小明新建文件,commitpush
  • 小红先 pull,后新建或者修改已有文件,commitpush

功能分支工作流

  • 小明在右键乌龟git工具中创建并切换到子分支

  • 小明在子分支中工作,commitpush

  • 小明在中央仓库请求合并 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界面操作,仍然需要输入密码

你可能感兴趣的:(Git客户端安装使用与服务端搭建)