Git管理工具SOURCETREE使用与团队协作方案
整理了一下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
Sourcetree官网地址
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一些概念:
-
工作区(working directory):即本地项目目录下新建、修改、写代码的区域
-
暂存区(stage index):临时存储
-
本地库(history):历史版本(对应sourcetree的history)
-
远程仓库(remote directory):代码托管、开源代码
Git基本操作流程:
工作区开发--(添加)-->暂存区--(提交)-->本地库--(推送)-->远程仓库(代码托管、开源代码)
2. 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
分支命名规范:
(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分支是本地仓库的分支,删除整个项目目录不会影响远程仓库,但是如果删除分支里的某个文件提交并推送到远程仓库,这就是删除远程文件的操作
dev开发分支:文件状态、History说明
(6). 进入开发阶段,各个团队成员在dev分支下开发,为了避免开发错误影响dev开发分支主线,也可在dev开分支拉取到本地后,以dev开发分支为基础新建自己的功能分支,功能分支以future-*命名,比如留言板:future-message,待功能开发完成并测试后(或按照周期比如每日提交一次的工作量),将future-message分支合并到本地的dev开发分支上并推送到远程仓库。
说明:如果小项目,就在dev分支下进行开发就好。
(7). 开发完成后,项目管理员将项目部署到服务器进行测试,最终部署到正式服务器
案例:分配到开发留言板功能任务
假设新建"guestbook.txt"文件完成提交、推送就是留言板的开发任务
工作流程:
-
(每日或周期性)拉取dev分支代码,以确保远程仓库与本地同步
-
基本工作流程:工作区开发(写代码)->添加变化的内容到暂存区->把暂存区内容提交本地仓库,这个步骤是必要的且频繁的,以产生自己的本地库存版本库,以便可以吃后悔药,可以回退等操作。
-
(每日或周期性)推送代码,以展示开发成果,推送前先拉取代码确保与远程仓库代码同步,有冲突先解决冲突,再提交并推送
操作步骤:
① . dev开发分支状态下,新建guestbook.txt文件
② . sourcetree上查看文件状态,查看是否文件未添加到暂存区或者未提交到本地仓库
有未添加到暂存区的文件guestbook.txt,把它添加到暂存区
将暂存区的文件提交到本地仓库
③ . 推送新内容到远程仓库的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分支
新建新目录,采用同一dev分支
②. 修改teamtest_dev目录的guestbook.txt,第一行加点内容,修改后提交到本地仓库并推送到远程地址
③. 修改teamtest_dev1目录的guestbook.txt,也是第一行加点内容,修改后提交到本地仓库并推送到远程地址,提交时将提示我们不允许我们提交,我们进行拉取操作将提示我们内容冲突,此时,我们需要解决冲突
出现冲突场景
④. 打开teamtest_dev1目录下的guestbook.txt文件修改到合适的内容
⑤. 修改内容后,提交teamtest_dev1目录的guestbook.txt到本地仓库并推送到远程仓库
⑥. 冲突解决完成,远程仓库guestbook.txt文件内容已发生改变
本文转自 https://www.bilibili.com/read/cv11127739,如有侵权,请联系删除。