Git & Gitee多人协作开发

    科技2022-08-16  131

    Git & Gitee多人协作开发

    文章目录

    Git & Gitee多人协作开发一、Git原理和常用命令二、安装Git三、Git在IDEA上的使用1、在Gitee上新建项目2、本地项目上传Gitee1)直接拖拽文件上传2)IDEA / 手动配置实现本地项目上传3)通过Github Desktop间接上传到Gitee 3、IDEA从Gitee下载项目(clone)4、IDEA将项目添加到本地仓库(add + commit)5、IDEA将项目推送到服务器(push)6、发布新版本 & 切换版本(branch)7、多分支合并 & 冲突处理(Merge change) 四、零碎问题1、在IDEA上安装Gitee插件2、IDEA获取Gitee的token3、IDEA设置项目文件自动Add到Git4、Gitee用户绑定问题5、Tomcat配置不一致问题6、IDEA中Git的更新、提交、还原方法7、git rebase & merge8、Git detached head的解决方法

    一、Git原理和常用命令

    Git原理图

    git add files 把当前文件放入暂存区域。

    git commit 给暂存区域生成快照并提交。

    提交时,git用暂存区域的文件创建一个新的提交,并把此时的节点设为父节点。然后把当前分支指向新的提交节点。上图中,当前分支是master。

    git checkout -- files 把文件从暂存区域复制到工作目录,用来丢弃本地修改。

    checkout命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支(不同分支代表不同版本)。

    个人浅薄理解:

    Git的版本控制其实是通过对树进行节点的添加和删除来实现的,项目主干是master节点(当前项目版本),项目的不同版本则有branch节点。Git的树模型感觉是采用并查集的方式,可以判断当前的节点A(文件A)和节点B(文件B)是否在同一个branch节点,即是否在同一个项目中,而项目的root节点为master节点

    参考图解git基本使用

    二、安装Git

    参考Git下载、安装与环境配置

    三、Git在IDEA上的使用

    1、在Gitee上新建项目

    参考码云如何创建项目?

    2、本地项目上传Gitee

    1)直接拖拽文件上传

    缺点:一次最多只能上传20个文件。

    2)IDEA / 手动配置实现本地项目上传

    参考如下两个博客

    1、在IDEA中直接导入项目到码云:参考IDEA上传本地项目到码云

    2、从码云中clone项目到指定文件夹,然后通过本地的git来提交项目:参考将本地项目上传到码云,只需这几步,每个步骤都有图文

    我就很纳闷了,尝试了上面两种方法。

    第一种为什么Gitee提交后,日志报错,但是却正确提交了,那请问这个项目提交到哪了?在我的Gitee,Github中没有这个仓库第二种则手动clone、add、commit、push,也是在Gitee没有这个仓库。(问题原因请见四.4)

    3)通过Github Desktop间接上传到Gitee

    问题:如何将原来的项目导入Gitee?

    解决方法:先通过Github Desktop将项目上传到Github,然后再通过Gitee去克隆Github的仓库

    Github Desktop上传项目离不开commit,push,具体如何使用请自行百度。Gitee如何克隆Github的仓库请见Github资源下载慢怎么办

    3、IDEA从Gitee下载项目(clone)

    注意项目是公开项目,否则需要身份验证

    还可以在项目导入界面采用Version Control的方式导入

    4、IDEA将项目添加到本地仓库(add + commit)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IrqrF2mG-1601885572665)(./img/GIF 2020-10-3 15-03-14.gif)]

    注意commit只是将文件提交到master分支,不会推送给远程服务器。

    5、IDEA将项目推送到服务器(push)

    6、发布新版本 & 切换版本(branch)

    注意:

    是在整个项目上创建新的分支,作为一个新的版本为了修复不同版本的bug,可以通过checkout,来切换分支。

    7、多分支合并 & 冲突处理(Merge change)

    如果在开发2.0版本时,用户反馈1.0版本出现bug,由于2.0版本是在1.0上的再次开发,虽1.0的bug已经修复,但在2.0中没修复bug。

    1.0版本:

    当前版本(Master):

    分支冲突修复:

    四、零碎问题

    1、在IDEA上安装Gitee插件

    参考IDEA 使用插件与码云仓库同步工程

    2、IDEA获取Gitee的token

    参考如何获取Gitee的token?

    3、IDEA设置项目文件自动Add到Git

    参考IDEA设置项目文件自动Add到Svn/Git

    注意:

    如果文件发生冲突时(标红),需要手动add如果文件标蓝,则说明文件add到本地仓库上,但没有提交到master节点

    4、Gitee用户绑定问题

    对于IDEA推送原始项目到Gitee出现的问题,原因如下(见三.2.2)):

    Gitee会自动为Github账户创建一个用户(只有用户名,没有密码),即使在gist create depository时输入了用户名和密码(你在注册Gitee时用的邮箱和密码),也不会登录这个账号,似乎Gitee有Github账户优先的特性。。。

    如下你就会发现这个问题:我在同一台机器上上传项目,但却出现了2位贡献者。。

    解决方法是对Github账户对应的Gitee账号进行邮箱绑定,这样账户就不存在歧义了,也不会出现导入项目成功,却找不到项目的问题。

    5、Tomcat配置不一致问题

    ​ 由于我之前tomcat在编译时会出现中文乱码,参考了这篇博客解决tomcat启动时的中文乱码问题,在配置文件中将UTF-8修改成GBK之后,tomcat正常显示中文。

    ​ 但是在和小伙伴A合作开发时(之前没碰到过),发现我的tomcat控制台中文输出全为’?’,参考了使用idea控制台System.out,输出中文后为???之后,发现还是解决不了问题。

    ​ 这时我考虑A的tomcat是否是采用UTF-8进行编码的,而我的tomcat是用GBK编码的,我删除了项目中的一下配置文件(变成裸露的项目),重新运行tomcat,还是乱码,但是乱码和之前不一样。这时我将GBK修改成UTF-8,中文就正常显示了。

    6、IDEA中Git的更新、提交、还原方法

    参考 IDEA中Git的更新、提交、还原方法 idea git项目回退到对应版本和还原到最新版本

    7、git rebase & merge

    参考git rebase 还是 merge的使用场景最通俗的解释

    8、Git detached head的解决方法

    detached head是一种HEAD指针指向了某一个具体的 commit id,而不是分支的情况。在这个状态下进行的commit,会在你本地仓库上显示更新,但是不会对你的远程分支产生影响,其他开发人员开不到项目更新信息。

    解决方法:

    先checkout一下原来的master分支(切换分支操作见三.6)pull rebase项目再push项目就可以成功提交到远程仓库master分支上了

    参考Git detached head的解决方法

    Processed: 0.012, SQL: 9