git版本管理
linux开发者为了维护git版本而开发的,后来就产生了windows版本了。
Git是分布式版本控制器系统,它没有中央服务器,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了。因为版本都是在自己的电脑上。既然每个人电脑都是一个完整的版本库,那么多个人如何协作呢?比如说自己电脑上改了文件A 其他人电脑上改了文件A ,这时,你们两之间只需把各自的修改推送给对方,就可以相互看对方的修改了。
git工作流程
一般工作流程如下:
1.从远程仓库中克隆Git资源作为本地仓库
2.从本地仓库中checkout代码然后进行代码修改
3.在提交前先将代码提交到暂存区
4.提交修改。提交到本地仓库。本地仓库中保存修改的各个历史版本
5.在修改完成后,需要和团队成员共享代码时,可以将代码push到远程仓库
软件下载
https://git-scm.com/download
软件下载安装完毕以后,要先创建一个本地版本库
新建一个空文件夹,然后进入该文件夹 右键
结果如下所示:
这时候,在该文件夹下面新建一个hello.txt文件夹
对其进行添加
结果如下:
这时候把文本文件加到暂存区。
这时候进行提交
这时候需要写一个日志:
下面那个箭头代表已经添加到暂存区了,上面那里写日志消息
这时候,代表hello.txt已经提交完毕了。
修改文件并提交
先进行查看本地仓库内容
这时候就可以看到本地仓库内容了
对文件进行修改
这时候代表文件有修改,这时候需要进行修改
这时候,就会有一个历史了
这样就可以看历史了。
看到对文件有两次修改
一次是添加一次是修改。
如果要看差异
就选中两次,然后看差异:
这就可以看到差异了
文件删除
先新建一个文件hello2.txt添加到本地文件
先进行添加一个文件 结果如下;
假设我一不小心把hello2.txt给删除了
我们可以选择还原
这时候就回来了
如果是真的想删除
先进行删除文件,然后进行提交
这样就好了
这时候,本地仓库中是真的没有它了
如果是在本地版本库进行删除,在本地进行保存。
先创建一个test3.txt在本地版本库
然后,进行删除并保留本地副本
结果如下:这时候,本地管理库中其实还是有的,在进行提交就没有了
在idea中使用git
由于idea本身是使用cmd的。所以,首先要进行设置
这样就把项目交给了git进行管理。
下面进行提交项目
这样就提交好了
各个版本进行切换
比如说有下面这些版本,注意要在提交完毕的情况下进行;
我想返回之前那个版本,右键checkout即可
这个时候就回去了,
当我想回之前的那个版本是,用同样的方法即可
可以看到回到了原来的那个版本。这就是git的神奇之处
git 指令的话,在码云上会有说:
下面这个链接如果别人,有改变的解决方法
参考别人的博客
将数据上传到码云
VCS -> Git -> PUSH 这样就可以把项目推送上去了。
如果是还没有仓库的那么就VCS -> Import into Version Control -> ShareProject on Gitee
这里面写仓库名已经其他的一些信息。
把idea中项目更新到gitee上,教程如下:
上面这个git的方法会有一个问题,就是强制提交,强制提交是不允许的;会把别人的数据清理掉;
那么,为什么会有推送不上去这个问题呢?
- 因为,gitee中,我们建立了readme.md,我们在推送新的项目的时候,就会出现冲突;
- 我们把仓库里的文件先拉到我的项目里面,然后,把我的项目+原文件一起推上去;
- 这时候,会报错refusing to merge unrelated histories ,拒绝合并不相关的历史,因为本地的内容确实是没和远程的文件接触过;
- 这个时候,就可以使用 git pull origin master --allow-unrelated-histories;告诉系统允许合并不相关历史的内容:
相关内容可以参考博客
合并相关测试
本地创建分支并推送到远程
新建分支 dev
结果如下:
使用push 将本地dev分支推送到远程:
- 确认推送内容
这个时候,我们的远程仓库发现了已经创建了的dev分支:
分支切换
- 从dev分支切换回master分支:
Git 文件冲突问题解决 - 选择一个云端项目
然后,在远程仓库上添加一些东西,修改内容如下:
进行提交 - 修改本地仓库代码
- 提交本地代码
直接push 发现失败:
那么,先pull 下来,然后,再把项目+原文件一起推上去
这时候,发现如下情况:我们需要进行合并
合并如下,点击一下代表保存
然后,提交代码并推送到远程即可;
在远程中,可以看到整改成功:
从dev分支合并代码到master - 先在dev上输入一些内容
然后,切换到master 分支时,就会让我们进行合并:
然后,合并即可;这是master中的read.me;
然后,再查看dev下的readme 这个时候,因为master中readme已经发生了修改,所以,我们还是需要重新合并的;下面是我合并的结果;
一般来说:我们都是在dev下面进行开发,从dev合并到master应该是没有权限的;
如果,我们在master下修改成功了,那么我们在push 应该就可以在master进行修改了;
所以,文章解决了 远程仓库发生了更改后,本地仓库进行修改数据后,当发生冲突时,先pull 再push来解决冲突;还有就是新建一写分支等相关问题;