git分支合并问题讨论

关于git的分支合并会被覆盖的问题
首先在project1和project2中使用git init初始化仓库
然后直接使用git checkout -b test的方式创建分支,出现如图所示的情况

image.png

在test分支使用git branch命令发现没有分支情况,然后使用git branch master命令想要创建主分支,出现了如图的错误:fatal: Not a valid object name: 'master'.
网上查询了一下,发现是分支只是申明了,但是没有初始化,需要使用一次add 和commit去初始化分支。
参考链接:https://blog.csdn.net/jackie_tsai/article/details/51587994

接着我使用git remote add origin 地址 添加一个远程仓库地址,先将建立好的test分支上传到远程仓库,这样远程仓库也会自动创建好一个名为test的分支

为了测试的简易性,我在project1和project2中都创建了一个test.txt的文本,文本内容如下:
project1:


image.png

project2:
image.png

然后我将两个文本上传到远程仓库中:
首先是project1


image.png

然后上传project2的


image.png

出现这个错误的原因是,我之前在project1中上传了文本,更改了远程仓库中类似版本号的东西,然后project2再上传本文的时候,因为本地仓库不是远程仓库的版本号,所以报出这样的错误
有两种方法:
1、git push -f origin test:将本地仓库的数据强制上传到远程仓库,这样会造成project1上传的数据丢失
2、先使用git pull origin test将远程仓库的数据拉到本地进行合并,然后再上传到远程仓库,下面展示这种方法:


image.png

我们可以看到,远程仓库和本地相同文本进行了合并(merge),查看下文本内容变化:


image.png

因为发生了一个合并的操作,需要重新经历add - commit 的过程


image.png

这次我们上传成功了,然后从project1文件中下载下来看看远程仓库的内容
image.png

没问题,远程仓库的数据是预期的,接下来就是我遇到问题的地方了
我重新修改了project1文本的内容,然后上传到远程仓库


image.png
image.png

上传成功,然后我再从project2中将远程仓库的数据拿出来


image.png
image.png

问题来了,为什么第一次我们从远程仓库拉到本地能够实现相同数据的合并,而这一次不行呢,经过多番测试,我发现,merge合并的内容是commit内容的文本,也就是说,如果test.txt在本地有commit的操作,那么从远程仓库拉取数据的时候会合并这一部分数据,然后需要重新的add-commit,至于没有commit操作的其他文本,会被远程仓库直接覆盖掉。

总结:
分支合并合并的是commit的内容,也就是版本库的内容,并且分支合并基本都是在本地进行的,也就是无法在客户端去合并远程仓库里的分支。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 16,163评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 4,109评论 0 11
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,901评论 0 13
  • 古典老师说,在我看来,活得最坎坷的是——那些坐着拥挤的地铁在雾霾中穿行,然后进入一个不喜欢,也无可能性的工作,晚上...
    拆书家潘多拉阅读 638评论 0 4

友情链接更多精彩内容