IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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)

目录

前言

一、在github上创建一个属于自己的仓库

二、Pycharm设置github账号:

三、使用pycharm导入自己创建的github仓库

四、单人开发场景下的git使用

五、多人合作开发场景下的git使用

六、补充知识

后记


前言

????????对于计算机专业的同学来说,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)在创建仓库页面中需要填写或选择的项有:

  • 仓库名称(Repository name):创建的仓库的名称,在这里我填写的是test。
  • 仓库描述(Description):可选。对仓库的简要描述。
  • 仓库的类型:分为Public和Private。Public为公开仓库,所有人均可见,Private为私有仓库,仅自己和自己邀请的人可见。在这里我选择了Private。
  • 是否添加README文件:README文件是一个markdown文件,该文件是对仓库的详细介绍,这里我选择添加README file。
  • 是否添加.gitignore:在一个项目中,并不是所有文件都要上传到git仓库中的。 .gitignore文件中可以填写一组忽略规则,根据规则匹配到的文件将被git排除跟踪。

????????如下为几种忽略规则的示例:

bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 忽略根目录下的bin文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件
*.log: 忽略所有 .log 文件
config.php: 忽略当前路径的 config.php 文件

??????? 事实上,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状态:

  • 红色:文件还未被添加到git中
  • 绿色:新添加到git中的文件
  • 蓝色:已被commit的文件,并且文件内容较上次commit发生了改动
  • 黄色:.gitignore中指定的,不受git控制的文件
  • 白色:未发生改变的文件

创建一个新的开发分支:

????????点击Pycharm最下方的Git按钮,右键点击Local下的main,选择+New Branch

?????????在弹出的对话框中输入我们要创建的分支名,一般是自己的名字,创建成功后可以发现多了一个分支,并且该分支前有一个书签图标,代表当前分支为rosinante分支。

?

commit操作:

????????我们在rosinante分支下,修改use_git.py文件,加入一行代码:

print("111")

????????点击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策略:

  • Soft:文件不变,但是有区别的地方会被暂存,等待提交。
  • Mixed:此为默认方式 回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响)。
  • Hard: 回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换。所有区别内容,全部丢弃。慎用该回滚方式。
  • Keep:会彻底回退到你选择的提交的版本内容,所有修改内容不加入暂存区。

????????我这里选择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分支了:

梳理一下步骤:

  1. 前提:开发者A在A分支上进行开发,开发者B在B分支上进行开发。
  2. A提交了一个新功能,并将A分支merge到dev分支,然后push了dev分支。
  3. B切换到dev分支,使用pull拉取最新代码,然后将dev分支merge到B分支,完成自己分支的代码同步。

(3)解决冲突

冲突情况举例:

  • 不同分支下的merge

????????比如在不同分支下进行分支合并时,我们在本地修改了a文件并把a文件的修改push到了test分支下,接着我们切换到master分支下将test分支上的修改合并到当前master分支下时,如果master分支下的a文件也有修改的话,这时在进行merge也会产生冲突。(因为这个两个分支是不同步的,两个分支下的同一个文件都有修改)

  • 同一个分支下的pull或push

????????比如在同一个分支下,对本地的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解决冲突,注意 这只会保留其中一个版本:

六、补充知识

1.git的暂存区、工作区、版本库

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,会很好的维护自己的开发版本,便于多人协作开发。

?

?

?

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:40:32  更:2022-05-05 11:42:24 
 
开发: 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年12日历 -2024/12/30 1:49:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码