过早客
  • 首页
  • 节点
  • 成员
  • 广告投放
  • 登录
  • 注册

请教一个git问题

IT技术 • baishui21 • 发表于 6 年前 • 最后回复来自 tairan • 6 年前

比如A和B都克隆了同一个远程仓库,然后B修改了其中的一个文件内容并提交push到远程仓库,A也修改了同一个文件也提交并要push到远程仓库,此时A的push肯定会出错,普遍的解决方法就是A先将远程仓库的最新提交pull或fetch下来,在本地解决冲突再提交推送,但这可能会导致B之前已经推送到远程仓库所做的修改在A进行合并时被修改了甚至丢弃了,有没有办法不修改并保留远程仓库中B已经推送的修改,然后也能正确的推送A的修改?

加入收藏 新浪微博 分享到微信 ❤赞 1933 次点击 0 人赞 0 人收藏

打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

共收到11条回复
redq 6 年前 #1 赞 1

stash了解一下

plax 6 年前 #2 赞 1

A、B在各自的分支上干活,适当的时机merge到某个分支。 否则git怎么知道冲突的地方该用谁的代码。

bearhus 6 年前 #3 赞 0

stash跟这有毛关系?楼主是想自动合并冲突文件,目前是不行的,如果可以,何必要告诉你冲突了?

kellenhe 6 年前 #4 赞 0

@jjboomsky 这样推送的release也会冲突。
A和B同时修改一个文件,
1. A修改了B的bug,代码有部分需要覆盖
2. A和B改了不同的功能,2份代码需要同时存在。

至于是哪种情况,肯定需要A和B协商沟通,git自己是没办法解决的。

guanhongjie 6 年前 #5 赞 0

那很显然是不行的,肯定是需要merge一下的嘛~
题主是不是经常被同事覆盖代码?直接看提交记录开喷啊!

knightdf 6 年前 #6 赞 0

A,B更改的是同一块代码那怎么才叫不修改B的推送也保留A的推送呢?你自己的提问就有问题。
这种情况的正确做法就是A stash自己的修改,然后pull远程B的修改,然后合并解决冲突,然后提交,不存在什么同时保证A和B的修改都在。
谁改了哪里commit都会有记录的,包括A对B修改的修改。

guanhongjie 6 年前 #7 赞 0

@knightdf 其实这个也是可以实现的,叫做“保留双方的修改”,然而对于这种不能自动merge的代码段,很显然是需要手动merge的。如果要保留双方的修改(限于冲突的代码段),那大概率是要报错的。

pijianghao 6 年前 #8 赞 0

git push -f了解一下,不过有被砍的风险

benjw 6 年前 #9 赞 1

你这是基础问题
首先。解决此问题的办法很多。但是不要强推,或者强合
git 先拉后推,永远是对的

首先,你要理解 git 是如何工作的,不要以 svn 的思维去理解 git 根本原理是不同的。一个是中心化的,一个是去中心化的
通常情况下 git 会自动合并双方的修改,当然这个前提是你们改的是不同的位置
一般,对付这种冲突最简单的办法是 先 stash,然后 stash apply,这样可以解决90%的问题

当 A 和 B 修改相同之处的时候,问题就来了。git 会问你怎么处理
遇到了剩下的问题,必须使用 merge tool 进行合并
建议使用图形化工具+ BeyondCompare 解决冲突 不是你改的部分,叫上上一次提交的人确认,或者你团队的人确认
图形化工具可以使用例如 SourceTree, GitKraken

m2zyi 6 年前 #10 赞 0

code review!!!

tairan 6 年前 #11 赞 0

加上review的流程就行了,不然你就先git pull --rebase合一次,push之前再合一次。

请绑定手机号后,再发言,点击此处
Guozaoke.com—源自武汉的高端交流分享社区
相关主题
根据 GitHub 个人贡献图生成贪吃蛇游戏,有点意思
哪个ai可以结合新闻中的图片和视频帮忙生成指定尺寸的组合图片呀?
做了个世界有趣街景网站,一刷就上瘾
小程序备案要多久
你们现在写游戏,还用unity吗?
感觉chatgpt还是比deepseek和grok强很多
能纯手搓一个全流程神经网络程序,在本版什么水平?
AI还是欠火候
新上线的flux 站点
有没有大佬解下惑,现在大火的AI智能体到底是个啥?

过早客微信公众号:guozaoke • 过早客新浪微博:@过早客 • 广告投放合作微信:fullygroup50 鄂ICP备2021016276号-2 • 鄂公网安备42018502001446号