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下载、安装与环境配置
参考码云如何创建项目?
缺点:一次最多只能上传20个文件。
参考如下两个博客
1、在IDEA中直接导入项目到码云:参考IDEA上传本地项目到码云
2、从码云中clone项目到指定文件夹,然后通过本地的git来提交项目:参考将本地项目上传到码云,只需这几步,每个步骤都有图文
我就很纳闷了,尝试了上面两种方法。
第一种为什么Gitee提交后,日志报错,但是却正确提交了,那请问这个项目提交到哪了?在我的Gitee,Github中没有这个仓库第二种则手动clone、add、commit、push,也是在Gitee没有这个仓库。(问题原因请见四.4)
问题:如何将原来的项目导入Gitee?
解决方法:先通过Github Desktop将项目上传到Github,然后再通过Gitee去克隆Github的仓库
Github Desktop上传项目离不开commit,push,具体如何使用请自行百度。Gitee如何克隆Github的仓库请见Github资源下载慢怎么办
注意项目是公开项目,否则需要身份验证
还可以在项目导入界面采用Version Control的方式导入
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IrqrF2mG-1601885572665)(./img/GIF 2020-10-3 15-03-14.gif)]
注意commit只是将文件提交到master分支,不会推送给远程服务器。
注意:
是在整个项目上创建新的分支,作为一个新的版本为了修复不同版本的bug,可以通过checkout,来切换分支。如果在开发2.0版本时,用户反馈1.0版本出现bug,由于2.0版本是在1.0上的再次开发,虽1.0的bug已经修复,但在2.0中没修复bug。
1.0版本:
当前版本(Master):
分支冲突修复:
参考IDEA 使用插件与码云仓库同步工程
参考如何获取Gitee的token?
参考IDEA设置项目文件自动Add到Svn/Git
注意:
如果文件发生冲突时(标红),需要手动add如果文件标蓝,则说明文件add到本地仓库上,但没有提交到master节点对于IDEA推送原始项目到Gitee出现的问题,原因如下(见三.2.2)):
Gitee会自动为Github账户创建一个用户(只有用户名,没有密码),即使在gist create depository时输入了用户名和密码(你在注册Gitee时用的邮箱和密码),也不会登录这个账号,似乎Gitee有Github账户优先的特性。。。
如下你就会发现这个问题:我在同一台机器上上传项目,但却出现了2位贡献者。。
解决方法是对Github账户对应的Gitee账号进行邮箱绑定,这样账户就不存在歧义了,也不会出现导入项目成功,却找不到项目的问题。 由于我之前tomcat在编译时会出现中文乱码,参考了这篇博客解决tomcat启动时的中文乱码问题,在配置文件中将UTF-8修改成GBK之后,tomcat正常显示中文。
但是在和小伙伴A合作开发时(之前没碰到过),发现我的tomcat控制台中文输出全为’?’,参考了使用idea控制台System.out,输出中文后为???之后,发现还是解决不了问题。
这时我考虑A的tomcat是否是采用UTF-8进行编码的,而我的tomcat是用GBK编码的,我删除了项目中的一下配置文件(变成裸露的项目),重新运行tomcat,还是乱码,但是乱码和之前不一样。这时我将GBK修改成UTF-8,中文就正常显示了。
参考 IDEA中Git的更新、提交、还原方法 idea git项目回退到对应版本和还原到最新版本
参考git rebase 还是 merge的使用场景最通俗的解释
detached head是一种HEAD指针指向了某一个具体的 commit id,而不是分支的情况。在这个状态下进行的commit,会在你本地仓库上显示更新,但是不会对你的远程分支产生影响,其他开发人员开不到项目更新信息。
解决方法:
先checkout一下原来的master分支(切换分支操作见三.6)pull rebase项目再push项目就可以成功提交到远程仓库master分支上了参考Git detached head的解决方法
