百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Git管理工具SOURCETREE使用与团队协作方案

bigegpt 2024-08-19 12:00 2 浏览

整理了一下Git管理工具SOURCETREE基础使用与团队协作方案,如果觉得有点用,点赞、关注、收藏、转发。

如果不是类似eclipse或者ide开发工具集成git使用方式,本地开发项目可采用git客户端管理工具sourcetree来对项目进行版本控制管理,sourcetree支持windows、mac os系统。

下载地址:https://www.sourcetreeapp.com/

当前版本:

当前电脑系统:windows10

Sourcetree版本:SourceTreeSetup-3.4.4

git版本: version 2.31.1.windows.1

Git安装

下载安装地址:https://git-scm.com/

当前版本:git version 2.31.1.windows.1

默认安装就行,安装后配置全局的提交者身份,以辨别协同开发者身份,如果有gitee或github账号,尽可能与其账号信息一致(无太大要求)。

git config --global user.name "用户名<英文>"
git config --global user.email "邮箱地址<英文>"

安装完成后,就可以使用命令进行添加暂存区、提交本地仓库以及推送到仓库等操作了,为了方便,我们使用sourcetree客户端工具来替代git命令操作。

Git一些概念:

  1. 工作区(working directory):即本地项目目录下新建、修改、写代码的区域
  2. 暂存区(stage index):临时存储
  3. 本地库(history):历史版本(对应sourcetree的history)
  4. 远程仓库(remote directory):代码托管、开源代码

Git基本操作流程:

工作区开发--(提交)-->暂存区--(提交)-->本地库--(提交)-->远程仓库(代码托管、开源代码)


Sourcetree

2.1 . 安装

安装sourceTree前先把git安装上。

(1).可以注册Bitbucket账号或跳过,这里选择"跳过"

(2).选择安装git版本控制,但这里勾选,自动帮我们安装会请求外网速度比较慢,建议自己单独安装git,这里已单独安装git,点击下一步

(3).填写提交身份信息,以后git提交内容,会标注谁提交过来的

(4).配置SSH秘钥用以获取ssh方式获取项目,并进行免密提交项目等操作,这里选择否先安装完之后在添加,然后下一步

(5).安装完成

2.2 . 配置与使用

2.2.1.设置

启动git支持:工具->选项->如果没有启用git支持,点一下"启用Git支持"

说明:如果不启用是没法使用的版本控制管理的

(这是启用Git支持的效果)

2.2.2. 工具使用与团队协作方案

如果只是为了练习软件操作,还没有创建项目仓库,可以到gitee、github创建一个仓库使用,如果已有项目仓库,正在参与团队协作开发(拉取非自己创建的仓库源码到本地开发加入团队协作开发,需先申请加入该团队或项目管理员邀请加入),按照团队约定开始使用仓库就好。

以下演示是在已有项目仓库、团队协作的情况进行,且都是基于gitee代码托管平台的操作流程,github操作几乎一样。

(1). 项目管理员在gitee平台为新项目新建了仓库(默认是master分支),并以master为分支基础新建开发分支(dev-*命名),这里命名dev,然后推送基础代码到"开发分支",项目管理员将开发任务分配到各个团队成员,各个团队成员在dev开发分支上进行开发,建议master分支保护登记设置为"保护分支",只允许管理员进行提交发布以避免不必要的错误提交,当然,什么协作策略这个由团队商议决定



分支命名:

分支

命名

说明

主分支

master

主分支,创建仓库时自动默认,这是发布项目正式版的分支

开发分支

dev-*

日常开发分支,代码最全的分支

功能分支

feature-*

某个功能点增加开发,从开发分支中分出来的分支,开发完后,合并到“开发分支”中

预发布分支

release-*

从“开发分支”中分出来的分支,开发完成未合并到master主分支前的分支,即测试阶段的分支,用于项目测试,测试完成合并到“开发分支”和“master主分支”上

Bug分支

bug-* 或 hotfix-*

项目发布后运行中出现bug,修不完再合并到“开发分支”和“master主分支”上

(2). 团队成员注册自己的gitee账号,项目管理员发送邀请加入链接给团队成员,团队成员同意加入

(3). 用免密登录(代码拉取、推送等免密操作)操作,需按照官方引导,在本地生成公钥,并在gitee平台上配置自己的公钥,以此建立本地与仓库平台之间的通信

如果采用gitee、github作为项目仓库,ssh公钥配置如下:

gitee配置ssh公钥的步骤:https://gitee.com/help/articles/4181

Github配置ssh公钥的步骤:https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent


以下是gitee公钥生成与配置步骤:

① 本地生成公钥命令:ssh-keygen -t rsa -C "提交者邮箱"

② 按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub 文件内容,获取到你的 public key ,查看公钥执行命令: cat ~/.ssh/id_rsa.pub

③ 将公钥赋值到设置->ssh->SSH公钥位置

④ 添加后,在终端(Terminal)中输入 ssh -T (自己设置的邮箱)

说明:首次使用需要确认并添加主机到本机SSH可信列表。若返回 Hi XXX! You've successfully authenticated, but Gitee.com does not provide shell access. 内容,则证明添加成功。

完成公钥配置后,在sourcetree软件中配置SSH客户端公钥信息,步骤:工具->一般->SSH客户端配置,如下:

(4). 获取仓库地址,访问仓库项目地址,复制dev开发分支的ssh地址备用,这里采用ssh克隆方式拉取项目到本地

(5). 拉取项目到本地仓库,点击clone,填写复制的ssh项目地址选择本地项目开发目录,项目名称与仓库地址的项目名一致,点"克隆"就可以把项目拉取下来了

说明:如果本地已存在git初始化的项目,那么点击"add"进行添加就行了

说明:这里的dev分支是本地仓库的分支,删除整个项目目录不会影响远程仓库,但是如果删除分支里的某个文件提交并推送到远程仓库,这就是删除远程文件的操作


(6). 进入开发阶段,各个团队成员在dev分支下开发,为了避免开发错误影响dev开发分支主线,也可在dev开分支拉取到本地后,以dev开发分支为基础新建自己的功能分支,功能分支以future-*命名,比如留言板:future-message,待功能开发完成并测试后(或按照周期比如每日提交一次的工作量),将future-message分支合并到本地的dev开发分支上并推送到远程仓库。

说明:如果小项目,就在dev分支下进行开发就好。

(7). 开发完成后,项目管理员将项目部署到服务器进行测试,最终部署到正式服务器


案例:分配到开发留言板功能任务

假设新建"guestbook.txt"文件完成提交、推送就是留言板的开发任务

工作流程:

  • (每日或周期性)拉取dev分支代码,以确保远程仓库与本地同步
  • 基本工作流程:工作区开发(写代码)->添加变化的内容到暂存区->把暂存区内容提交本地仓库,这个步骤是必要的且频繁的,以产生自己的本地库存版本库,以便可以吃后悔药,可以回退等操作。
  • (每日或周期性)推送代码,以展示开发成果,推送前先拉取代码确保与远程仓库代码同步,有冲突先解决冲突,再提交并推送

操作步骤:

① . dev开发分支状态下,新建guestbook.txt文件

② . sourcetree上查看文件状态,查看是否文件未添加到暂存区或者未提交到本地仓库



③ . 推送新内容到远程仓库的dev分支上,推送前先拉取一下,确保远程仓库与本地文件同步



④ . 完成开发任务,可在远程仓库查看提交内容


2.2.3. 删除、撤销删除、冲突场景

2.2.3.1 . 删除场景

案例:删除guestbook.txt文件

操作步骤:

①. 根目录下删除guestbook.txt文件

②. 添加暂存区

③. 提交本地仓库

④. 推送到远程仓库




(文件已被删除)

2.2.3.2 . 撤销删除场景

案例:撤销已删除的guestbook.txt文件

操作步骤:

①. History历史版本中,选择要恢复到的版本

②. 右击->重置当前分支到此次提交

③. 选择使用模式"强行合并"模式,将根目录下内容恢复到这个版本的内容

④. 完成删除撤销

⑤. 推送到远程仓库

注意:撤销后,本地版本与远程仓库不一致了,软件提示我们需要拉取新内容,但是拉取操作将会把我们本地仓库恢复到删除状态,这不是我们需要的,所以在确保其他团队成员已无代码推送的情况下,我们采用"强行推送"到远程仓库,并告知其他成员拉取新版






使用模式知识点:

--soft(软合并):仅仅在本地仓库中移动一下指针,不会影响工作区(working)和暂存区(index),就是说当前根目录下以及暂存区的文件不会改变,只是历史版本回退到当前选择的版本,可以重新把暂存区内容提交到本地仓库

--mixed(混合合并):会在本地仓库移动指针,同时重置暂存区(index),但是不会影响本地工作区(working),就是说当前根目录下项目文件不会改变,历史版本、暂存区文件会会回退到当前选择的版本,工作区的代码可以重新进行添加暂存区、提交本地仓库操作

--hard(强行合并):在本地仓库移动HEAD指针,重置暂存区、工作区,就是说当前根目录下、暂存区、历史版本的所有文件都会回退到当前选择的版本,当前版本之后的新版本都被重置掉,这个操作风险有点高,需慎重操作

说明:很显然,我们的文件已经被删除并提交了,根目录下已经没有了,我们需要采用"强行合并"模式恢复回来

2.2.3.3 . 冲突场景

本地新建新项目目录,使用同一个dev分支,测试冲突场景。

操作步骤:

①. 新建新项目目录teamtest_dev1,使用同一个dev分支


②. 修改teamtest_dev目录的guestbook.txt,第一行加点内容,修改后提交到本地仓库并推送到远程地址

③. 修改teamtest_dev1目录的guestbook.txt,也是第一行加点内容,修改后提交到本地仓库并推送到远程地址,提交时将提示我们不允许我们提交,我们进行拉取操作将提示我们内容冲突,此时,我们需要解决冲突

(出现冲突场景)

④. 打开teamtest_dev1目录下的guestbook.txt文件修改到合适的内容

⑤. 修改内容后,提交teamtest_dev1目录的guestbook.txt到本地仓库并推送到远程仓库

⑥. 冲突解决完成,远程仓库guestbook.txt文件内容已发生改变

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...