GIT代码冲突解决方案

本文介绍了两种处理Git冲突的方法。方法一涉及在冲突时先备份工作区文件,恢复后再pull,然后重新添加本地修改并commit。方法二则是先commit本地修改,再执行pull,利用MergeTool合并冲突,最后提交并push。这两种方法各有优劣,适用于不同的场景和需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:先pull 再进行commit

       此种方法当工作区文件和远程仓库文件有冲突时不能完成pull的,需要先备份工作区文件,恢复文件与远程服务器一致,才能完成pull,然后将本地修改添加进去,commit–push.这种操作修改文件较多时非常麻烦. 
1.1  远程仓库文件与工作区文件冲突无法完成pull ,远程仓库文件: 

è¿éåå¾çæè¿°

工作区文件: 

è¿éåå¾çæè¿°

1.2 此时工作区文件未进行commit操作 ,pull结果如图: 

è¿éåå¾çæè¿°

1.3  此时需要恢复工作区文件至未修改前版本 
 è¿éåå¾çæè¿°
1.4  然后进行pull 结果如图 

 è¿éåå¾çæè¿°

1.5  将修改部分重新加入 commit push 即可; 


方法二:commit—pull 


      此方法是将工作区文件先进行commit,再执行pull,此时当远程仓库文件与本地仓库文件冲突会进行自动合并,自己的修改也会保留,使用mergetool 进行操作处理,重新commit文件即可.这种方法不用在本地修改,重新恢复添加比较省时省力. 

2.1  保存(save)本地工作区修改的代码,根据业务需求来修改,然后保存相关代码
2.2  提交(commit)到本地服务器仓库,进行commit动作,切记是提交到本地服务器仓库
2.3  拉取(pull)远程服务器仓库的代码, 如图:pull成功,但是自动合并,文件显示冲突 

è¿éåå¾çæè¿°

2.4 合并(MerageTool)本地服务器仓库和远程服务器仓库代码Merge Toll工具处理 

2.4.1 选择冲突文件,右键"team",选择“merge tool”,打开的视图中可以查看到修改的对比。

è¿éåå¾çæè¿°
 

2.5 添加到暂存区(Add to Index),  将每个冲突文件修改为正确的,然后每个文件右键"team",选择“Add to Index”,可以看到该文件变成黑色的*号图标

2.6 提交(commit)到本地服务器仓库,千万不能提交到远程服务器仓库

2.7 删除(remove)不需要更新的文件,在同步窗口 (Synchronize),主要是调试的相关文档

2.8 推送(push)到远程服务器仓库 


解决代码冲突流程

1、工程->Team->同步:

 2、从远程pull至本地,就会出现如下内容:

 3、使用Merge Tool,执行第二项,使用HEAD合并后的效果,再手动修改

 4、修改后的文件需要添加到git index中去:

 5、冲突文件变为修改图标样式,再提交至本地,此时的提交便是merge合并:

 6、此时需要pull的向下箭头和数量没了,注意图标的变化:

 7、现在可以直接push到远程了:

 8   此时configure->save and push一步步执行冲突就搞定了。


 案例1:PyCharm解决本地冲突的方法

1.修改代码后,进行commit提交到本地仓库

2.选择版本管理器的master的图标,选择远程仓库(Remote)

3.选择:Remote>origin>master>Merge 'origin/master' into master

4 然后再保存>Commit到本地仓库>Push到远程仓库 


git忽略已加到仓库的文件或文件夹

1、全部版本地仓库和远程仓库都忽略,用如下两条命令都可以

 git rm --cached 文件地址/文件名
git rm -r --cached 文件地址/文件名


2、仅本地忽略文件

git update-index --assume-unchanged 文件地址/文件名

指定忽略文件后git status 这个文件就不会再显示了。
如果以后需要提交了就取消忽略 加一个no

git update-index --no-assume-unchanged 文件地址/文件名


3、本地忽略整个文件夹下的文件
1)cd 先进入当前要忽略的文件夹
2)执行命令批量忽略

git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')


3)git status 查看是否不再提示,恢复追踪文件改动 同样加 --no恢复

git update-index --no-assume-unchanged $(git ls-files | tr '\n' ' ')

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。

这里假设要忽略已被纳入版本管理中的 /home/www/phpernote/config.php 文件,则执行命令:

1git update-index --assume-unchanged /home/www/phpernote/config.php

然后在.gitignore文件里添加要忽略的文件或文件夹就行了。

注意:经实测以上方法只能临时将该文件加入忽略,如果执行了类似 git checkout -- . 的命令后,该文件的改动会恢复成之前在版本管理中的内容,因此彻底的处理方法如下:

例如我们现在要忽略已经加入到了版本控制库的目录 uploadfiles 或者文件 phpernote.jpg ,则操作如下:

1. 先清除缓存:

1$ git rm -r --cached uploadfiles
2#如果是文件则: git rm --cached phpernote.jpg

2. 然后将该目录或文件添加到 .gitignore 文件中去:

1echo '/uploadfiles' >> ./gitignore
2#如果是文件则: echo '/phpernote.jpg' >> ./gitignore

3. 然后提交更改:

1$ git add .
2$ git commit -m '添加忽略文件'
3$ git push


解决冲突参考方法-网址



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值