首页 > 其他分享 >PyCharm解决Git冲突

PyCharm解决Git冲突

时间:2023-04-06 11:23:53浏览次数:51  
标签:27 修改 Git mindsponge 冲突 https PyCharm

技术背景

在前面的一篇博客中,我们介绍了Fork到自己名下的本地仓库如何与远程原始仓库创建链接的方法。在这篇文章中,我们将要讲解如何应对在这种异步开发的过程中经常有可能会遇到的Git冲突问题,在Pycharm这个专业的Python开发工具中集成了一些处理Git冲突的工具,让我们一起来看看如何使用这个工具。

什么时候会出现冲突

当我们从远程的仓库pull下来的时候,如果远程仓库跟本地仓库修改了同一个文件,在pull的过程中就会提示合并冲突:

$ git pull remote develop
remote: Enumerating objects: 27, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 27 (delta 10), reused 0 (delta 0), pack-reused 0
展开对象中: 100% (27/27), 18.44 KiB | 248.00 KiB/s, 完成.
来自 https://gitee.com/helloyesterday/mindsponge
 * branch            develop    -> FETCH_HEAD
删除 mindsponge/system/dimension.py
自动合并 mindsponge/system/__init__.py
冲突(内容):合并冲突于 mindsponge/system/__init__.py
自动合并 mindsponge/__init__.py
冲突(内容):合并冲突于 mindsponge/__init__.py
自动合并失败,修正冲突然后提交修正的结果。

这种类型的冲突一般需要我们去手动解决,我们可以先打开这些提示合并冲突的文件,看看合并冲突具体长什么样子:

# __init__.py
"""Molecular system"""

from .molecule import Molecule, Protein, RigidBody, GetAminoDihedrals
from .residue import Residue, AminoAcid

<<<<<<< HEAD
__all__ = ['Molecule', 'Protein', 'RigidBody', 'Residue', 'AminoAcid', 'DIMENSION', 'set_dimension', 'GetAminoDihedrals']
=======
__all__ = ['Molecule', 'Protein', 'Residue', 'AminoAcid']
>>>>>>> 0ab7841a7671881acf2a2e912bfabcea7e8096e4

可以看到这里面多了三行非Python语法的标记,HEAD标记的是本地仓库的修改,下面那个一串数字的对应的是远程仓库的修改内容。我们所要做的,就是把这三行非Python语法的代码去掉,然后把相应的代码做一个正确的修改。常见的修改策略有:直接采纳远程仓库的修改,或者直接采纳本地的修改,或者手动整合两处的修改。

如何解决冲突

接下来看看具体如何解决当前的冲突。其实如果需要修改的地方并不多、代码也不是很复杂的情况,我们可以直接在编辑器里面把相应的修改手动操作下,然后直接add-commit-push三步曲就推上去了,那接下来的方案也没必要看了。但是如果是对于代码比较复杂的情况,建议采取如下方案,使用PyCharm自带的冲突处理工具来解决Git冲突。首先点击Git -> Resolve Conflicts,然后会弹出如下的窗口:

这个窗口的内容是包含了所有含有待解决冲突的文件信息,我们可以在这个列表中逐一的进行修改。比如我们选中一个文件,点击Merge,就会弹出来如下所示的对比窗口:

在这个对比窗口中,左边的是本地修改后的内容,中间的是未发生该冲突的最后一个分支,右边的是远程修改后的内容。那么此时操作上会容易很多,如果想要保留本地的修改,那就直接把本地的全选复制到中间的窗口中,选择Apply即可。如果要保留远程的修改,一样的把右边窗口的内容全选复制到中间result内容中即可。如果两边的修改内容都要保留,那就可以分别手动的去调整冲突,把相应的修改内容逐一复制到中间的result窗口中的相应位置,最后选择Apply即可。

等到所有的冲突都处理完成之后,就可以add-commit-push三步曲了,如需rebase等操作,可以参考下此前的这一篇关于Git的博客

总结概要

使用Git工具进行异步开发的优点是非常显而易见的,在开发效率和版本管理上得到非常大的进步。当然异步开发过程中也难免会遇到一些开发冲突,比如两个人同时修改了同一个文件,那最终仓库上的版本肯定只能保留一个版本,因此在pull下来的过程中就会提示合并冲突。此时可以使用PyCharm中的专业合并冲突解决工具来进行处理,该工具首先可以在界面上列举出来所有包含冲突的文件,其次是支持diff的界面,并且可以直接在界面上进行代码修改。通过三个界面上的代码可以清晰的看到异步开发过程中的不同修改,以及冲突发生前的最后一个版本,使用起来逻辑清晰操作简单,十分推荐。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/pycharm-git.html

作者ID:DechinPhy

更多原著文章请参考:https://www.cnblogs.com/dechinphy/

打赏专用链接:https://www.cnblogs.com/dechinphy/gallery/image/379634.html

腾讯云专栏同步:https://cloud.tencent.com/developer/column/91958

CSDN同步链接:https://blog.csdn.net/baidu_37157624?spm=1008.2028.3001.5343

51CTO同步链接:https://blog.51cto.com/u_15561675

标签:27,修改,Git,mindsponge,冲突,https,PyCharm
From: https://www.cnblogs.com/dechinphy/p/pycharm-git.html

相关文章

  • nodejs新版本引起的:digital envelope routines::unsupported
    一、起因#由于电脑重装系统,重新下载nodejs,自然更新到最新版本18,之前的版本才16。更新到最新nodejs版本后,运行vue文件,报错:this[kHandle]=new_Hash(algorithm,xofLen);^Error:error:0308010C:digitalenveloperoutines::unsupported  二、探索#常规操作,上网查原因:......
  • pycharm创建文件时自动生成注释
    参考:https://blog.csdn.net/weixin_52696285/article/details/128498933 File----Settings-----FileandCodeTemplates-----PythonScript写入如下模板:'''@Project:${PROJECT_NAME}@File:${NAME}.py@IDE:${PRODUCT_NAME}@Author:雨薇@Date:${D......
  • Github美化日记 - 又菜又爱玩
    Github美化日记-又菜又爱玩一.咱就说无论是技术大牛,或者是技术小菜,都希望有一个好看的Github首页吧!(快说你想要!![iShot_2023-04-05_18.58.32.min](https://pic.imgdb.cn/files/60499/202304051859337.png)  二.那就开始吧!1.所有的神秘皆来自一个特殊的仓库上......
  • VSCode中使用Git/git 代码管理
    1.在一个目录下clone项目:[email protected]:hemoumou-debug/libjpeg-turbo.git问题1:解决:需要从known_hosts文件中删除旧的github.comRSA密钥,然后将新的RSA密钥添加到文件中。您可以按照以下步骤操作:在文本编辑器中打开您的known_hosts文件。在Windows......
  • git bash报错fatal: detected dubious ownership in repository at的解决方法
    情况在gitbash中输入"gitadd."命令时报错"fatal:detecteddubiousownershipinrepositoryat" 原因文件夹的所有者和现在的用户不一致例如:文件夹的所有者是Administrator,而当前用户是myAccount 方法1右键文件夹->属性->所有者->更改->勾选应用到所有子目......
  • Git命令列表--git-restore
    GitRestore名称git-Restore-恢复工作树文件这个命令是试验性的。其行为可能会改变。语法gitrestore[<options>][--source=<tree>][--staged][--worktree][--]<pathspec>…​gitrestore[<options>][--source=<tree>][--staged][--worktree]--pathspec-fr......
  • Git命令列表--git-reset
    GitReset名称git-Reset-重置当前HEAD到指定的状态或者复制条目到索引语法gitreset[-q][<tree-ish>][--]<pathspec>gitreset[-q][--pathspec-from-file=<file>[--pathspec-file-nul]][<tree-ish>]gitreset(--patch|-p)[<tree-ish>][--][<p......
  • git操作全流程
     一:上传____________________________________________________________________________________________________________________________________________________________1.在总文件夹下删除所有.git的文件(git就是放要上传的东西)2.设置.gitignore文件从github上下载pyt......
  • 《渗透测试》信息打点-公众号服务&Github监控&供应链&网盘泄漏&证书图标邮箱资产 2023
     #微信公众号-获取&三方服务1、获取微信公众号途径https://weixin.sogou.com/2、微信公众号有无第三方服务 #Github监控-开发&配置&源码目标中开发人员或者托管公司上传的项目存在源码泄漏或配置信息(密码密匙等),人员数据库等敏感信息,找到多个脆弱点。1、人员&域名&邮箱......
  • 有关IOS内存读写冲突
    有关IOS内存读写冲突在写内存相关代码时,获取已使用内存代码中报错lethostPort:mach_port_t=mach_host_self()varhost_size=mach_msg_type_number_t(MemoryLayout<vm_statistics_data_t>.stride/MemoryLayout<integer_t>.stride)varpagesize:vm_siz......