| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 常用科研工具介绍(一):Git和Github(使用pycharm) -> 正文阅读 |
|
[开发工具]常用科研工具介绍(一):Git和Github(使用pycharm) |
目录 前言????????对于计算机专业的同学来说,git并不陌生,作为一种常用的版本控制工具,它可以很方便的管理你的代码,尤其是在多人协作开发的场景下,git可以记录代码的修改历史,并且可以很方便的回滚到某一历史记录。 ????????那么git和github有什么关系?github是全球最大的同性交友社区,啊呸,github是全球最大的开源代码托管网站,它就是一个代码仓库,你可以利用git上传你的代码到github。当然也有别的代码仓库,比如gitte,Coding.Net,以及面向AI开发者的Agit.ai等平台,它们的使用大同小异。pychram作为一个IDE,以及集成了git等版本控制工具,免去了手动输入大量git命令的过程,只需要点击按钮便可完成git的绝大多数功能,尤其是对于计算机交叉邻域的科研人来说学习成本较低,使用方便,因此本文将介绍如何在pycharm上使用git和github进行代码版本管理。 一、在github上创建一个属于自己的仓库(1)首先登陆github,点击New按钮,进入创建仓库页面: (2)在创建仓库页面中需要填写或选择的项有:
????????如下为几种忽略规则的示例:
??????? 事实上,github以及提供了不同语言的.gitignore模板,我们这里直接选择python的.gitignore模板即可,后续根据实际需要,再向其中添加需要忽略的文件。 ????????最后,点击Create repository按钮,即可创建一个仓库。如下即为所创建的仓库主页: ? 二、Pycharm设置github账号:????????打开pycharm,点击工具栏的 File---Settings...: ? ? ????????在打开的选项卡中选择 Version Control---Github,然后点击右侧的加号“+”: ???????? 输入自己的github登录账号和密码: ???????? 点击Log In,便可以看到自己的github账号、头像显示在Version Control>Github选项卡中: 三、使用pycharm导入自己创建的github仓库??????? 点击Pycharm工具栏的VCS---Get from Version Control...: ???????? 在弹出的选项卡中,选择Github,在右侧搜索我们创建的仓库名test,然后选择下面出现的test仓库,在Directory选项中可以选择项目的存放路径,点击Clone即可将仓库下载到本地。 ???????? 克隆完成后即可在pycharm中看到test仓库: ? 四、单人开发场景下的git使用??????? 前面的步骤我们已经创建了一个github仓库,并将这个仓库克隆到本地,并导入到了pycharm中。这一节,我将介绍单人开发场景下的git使用。 Add操作: ??????? 如图,我们在test项目中创建一个python文件,名为use_git.py: ?????????Pycharm提示是否将该文件添加到git中,我们可以发现,在点击Add将文件添加到git之前,新创建的文件名称为红色,点击Add,将use_git.py文件添加至git中,可以发现其文件名变为了绿色。 ????????pycharm中不同文件名颜色代表了不同的git状态:
创建一个新的开发分支: ????????点击Pycharm最下方的Git按钮,右键点击Local下的main,选择+New Branch: ?????????在弹出的对话框中输入我们要创建的分支名,一般是自己的名字,创建成功后可以发现多了一个分支,并且该分支前有一个书签图标,代表当前分支为rosinante分支。 ? commit操作: ????????我们在rosinante分支下,修改use_git.py文件,加入一行代码:
????????点击VCS---Commit...,?将这次改动提交到本地仓库中, ? ?????????在弹出的面板中,输入commit信息,一般用于描述本次提交修改了什么部分,添加了什么样的功能,总之是描述本次commit的内容。 ?点击commit即可将改动提交到本地仓库,我们可以在pycharm下方的git面板中看到多了一条git记录: push操作: ????????push用于从将本地的分支版本上传到远程并合并。在pycharm中,我们直接点击VCS---Git---Push...即可完成push操作: ?????????在弹出的面板中可以看到commit的情况,以及被push的文件等,点击push便可将代码push到远程仓库,也就是github中: ? 我们可以打开github上的test仓库,然后点击main,选择自己的分支,例如我刚刚创建的rosinante分支: ?????????打开rosinante分支下的use_git.py文件,可以看到已经是我们提交的版本了: ? 切换分支与merge操作: ??????? 我们在自己的开发分支(如本文的rosinante分支)上进行了commit push操作,那么如何将这些操作同步到主分支?使用merge操作可以将A分支合并到B分支上。 ????????在pycharm中我们首先切换到main分支,点击左下方Git按钮,然后右键点击Local下的main分支,在弹出的列表中选择checkout,即可将分支切换为main分支: ???????? 然后选择工具栏中的VCS---Git---Merge Changes,在弹出的面板中,选择要合并的本地分支,然后点击merge按钮: ?????????可以看到在主分支(main)下已经多了rosinante分支中的改动内容: ? ????????然后还需将其push到远程main分支,操作和rosinante分支的push操作一样: ?????????push成功后可以看到github中main分支已经同步更新了: ?????????然后我们便可以在切回自己的开发分支进行开发了。 回滚操作: ????????在项目开发中,新提交的代码可能存在某些问,需要将代码回滚到某次提交。例如我再rosinante开发分支的use_git.py中新增了一行代码,同样进行了commit push操作,可以看到下方的git历史记录里已经多了一条commit记录: ?我想将代码回滚到“添加了打印111功能”这次提交,只需要右键点击要回滚到的commit记录,点击Reset Current Branch to Here: ?在弹出的对话框中可以选择四种reset策略:
????????我这里选择Mixed方式,点击Reset后可以看到文件use_git.py的内容并未发生改变,文件名变为了蓝色,相较于该次commit,所有改动的地方都被标识出来: ?????????点击标识,然后选择Show Diff,可以看到与回滚到的那个版本的对比: ???????? 把改动的地方删掉,use_git.py的文件名又恢复成了白色,这表示我们在此次commit后没有做任何改动: 五、多人合作开发场景下的git使用(1)邀请协作者加入私有仓库: ??????? 在github中,打开我们创建的test仓库,选择Settings---Collaborators---Add people,输入被邀请人的github账号或昵称,被邀请人的github注册邮箱回收到一封邀请协作邮件,被邀请人通过邮件中的链接确认加入,即可加入该项目中。 ?(2)合作开发模拟 比如test项目共有两名开发人员rosinante和phi,他们都有各自的开发分支,并且只能在自己分支上进行开发: ?????????phi开发了一个新的功能A.py,并commit push到远程phi分支: ???????? phi需要将commit merge到dev分支: ?????????然后将dev分支进行push,push到远程dev分支: ???????? 此时,对于开发者rosinante来说,需要将dev分支拉取到本地: ??????? 首先切换到dev分支,点击pycharm的工具栏中的VCS---Git---Pull..: ??????? 在弹出窗口选择orgin/dev,点击pull: 可以看到开发者phi提交的代码已经被拉取到开发者rosinante的本地仓库了: ?然后还需要将dev分支的改动合并到自己的开发分支rosinante中,首先将当前分支切换至rosinante,然后点击VCS--Git--Merge Changes...: ???????? 在弹出窗口选择dev分支,然后点击merge,可以看到dev分支已经被合并到rosinante分支了: 梳理一下步骤:
(3)解决冲突 冲突情况举例:
????????比如在不同分支下进行分支合并时,我们在本地修改了a文件并把a文件的修改push到了test分支下,接着我们切换到master分支下将test分支上的修改合并到当前master分支下时,如果master分支下的a文件也有修改的话,这时在进行merge也会产生冲突。(因为这个两个分支是不同步的,两个分支下的同一个文件都有修改)
????????比如在同一个分支下,对本地的a文件做出了修改,此时我们在进行pull或push时如果远程分支下下的a文件也有修改,那么代表本地和远程分支的代码是不同步的,此时也会引起冲突 ??????? 我们模拟一下冲突发生的场景,phi在A.py文件里加入了一行新代码,并commit,然后merge到dev分支,push到远程dev分支: ???????? 此时rosinante也对A.py文件进行了改动,不同的是其改动的代码为print("333"): ?????????然后将改动的rosinante分支合并到dev分支,将dev分支push到远程分支时,弹出警告: ??????? 点击Merge,弹出下面窗口,该窗口显示了发生冲突的文件: ?我们双击Name列表中的A.py: ????????可以看到这个窗口最左侧为我们的版本,右侧为远程仓库中的版本,如果我们想同时保留phi的更改和rosinante的更改,可以点击Your version 的 >>> 按钮,和Changes from server 的 <<< 按钮: ???????? 同时保留两个语句,解决冲突: ????????然后点击Apply,在进行push操作: ? ????????也可以选择Accept Left 或者 Accept Right解决冲突,注意 这只会保留其中一个版本: 六、补充知识2.如何使用pycharm把现有的项目提交到github上: ????????点击VCS---Import into Version Control---Share Project on GitHub即可: ?3:如何使用pycharm创建一个新的仓库 ????????点击VCS---Import into Version Control---Create Git Repository即可: 后记??????? 对于课题组的科研项目来说,只需要浅度使用git即可,配合pycharm强大的GUI,可以大大减少git的学习成本。合理使用git,会很好的维护自己的开发版本,便于多人协作开发。 ? ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:50:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |