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界面操作,仍然需要输入密码
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容

  • 多种多样的工作流使得在项目中实施Git时变得难以选择。这份教程提供了一个出发点,调查企业团队最常见的Git工作流。...
    JSErik阅读 4,395评论 2 8
  • 前言 大家好!在下游回来了!不啰嗦快进正题!本篇文章是面对刚开始接触Git的新手,所讲命令并不全,在文章结束会放入...
    老匡话Android阅读 3,917评论 -2 18
  • 第1章 Shell和vi 1.1什么是shell 在计算机科学中,Shell俗称壳,用来区别于Kernel(核),...
    福尔摩鸡阅读 894评论 0 1
  • Shell和vi shell 在计算机科学中,Shell俗称壳,用来区别于Kernel(核),是指“提供使用者使用...
    Yuann阅读 524评论 0 0
  • 廖雪峰的Git教程 一、Git仓库 仓库分为本地仓库和远程仓库,它们通过秘钥和远程仓库地址来建立连接。 A. 创建...
    前端菜篮子阅读 289评论 0 0