PyChram使用git进行版本控制

文章目录

  • git原理
  • 项目上传至github
  • commit & push
  • 版本回退
  • 克隆github上的项目

你需要做好如下准备工作:

  • 安装git
  • 注册一个github账户
  • 安装PyChram(我安装的是专业版,社区版界面略有不同,但区别不大)

git原理

  • 在进行大文件传输或修改的时候总会遇到存储或传输压力大的问题,而Git在版本迭代方面非常出色。Git存储时会把文件拆成若干个部分,并计算各个部分的哈希值,利用这些构建起与文件对应的有向无环图(DAG),DAG的根节点也就是该文件的哈希值。这样的好处十分明显:如果需要修改文件,那么只需要修改少数图中节点即可;需要分享文件,等价于分享这个图;需要传输全部的文件,按照图中的哈希值下载合并即可。

  • Git和其他版本控制系统的主要差别在于Git保存数据的方法。从概念上来区分,其他大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion、Perforce、Bazaar等)将它们保存的信息看作一组随时间逐步累积的文件差异关系。Git不按照这种方式保存数据。反之,Git更像把数据看作对小型文件系统的一组快照。每次提交更新或在Git中保存项目状态时,它将为全部文件生成一个快照并保存这个快照的索引。为了效率,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git保存数据的方式更像是一个快照流。Git存储的是数据随时间改变的快照。这是Git与其他版本控制系统的重要区别。因此Git综合考虑了以前每一代版本控制系统延续下来的问题。Git更像一个小型的文件系统,提供了许多以此为基础构建的优秀工具,而不只是一个简单的版本控制系统。

项目上传至github

git—GitHub—Share Project on GitHub
PyChram使用git进行版本控制_第1张图片
如果是第一次使用这个功能,会弹出来一个链接,让你把github账户与PyCharm进行绑定。

此时继续上传项目可能会出现如下错误:

Successfully created project 'text' on GitHub, but initial commit failed:

打开git bash,设置邮箱和用户名即可解决这个问题

git config --global user.email 你的邮箱账号@example.com
git config --global user.name 你的名字

此时上传项目有可能出现OpenSSL SSL_read: Connection was reset, errno 10054错误
注意:OpenSSL SSL_read: Connection was reset, errno 10054错误也可能会出现在你push、pull、clone项目时

在当前项目目录打开git bash并输入下面的命令即可解决上述报错

git config --global --unset http.proxy
git config --global --unset https.proxy

此时应该不会出现任何问题了

commit & push

PyChram使用git进行版本控制_第2张图片

commit操作可以将当前项目提交至本地仓库

push操作可以将本地仓库的最新记录push至远程仓库(即github仓库),push之前必须有新的commit,否则无法push

版本回退

git—Show Git Log
PyChram使用git进行版本控制_第3张图片
PyChram使用git进行版本控制_第4张图片
local—master 是指本地仓库的记录,对应于commit操作
remote—master 是指远程仓库的记录,对应于push操作

你提交的所有历史版本都会显示在这里。

右键你要回退的版本,选择下图中蓝条选项
PyChram使用git进行版本控制_第5张图片
选择hard,然后reset。对于soft、mixed、keep这三个选项,根据自己的实际需求选择即可。
PyChram使用git进行版本控制_第6张图片

克隆github上的项目

  • 在github上复制URL
    PyChram使用git进行版本控制_第7张图片
  • 在PyCharm中依次点击git—clone,出现如下界面,将上面复制的URL填入下列对应栏即可。
    PyChram使用git进行版本控制_第8张图片
  • 如果是自己曾经的项目,则无需复制URL,直接点击对应项目即可Clone
    PyChram使用git进行版本控制_第9张图片

注意,由于国内对外网管控比较严格,clone时可能会很慢(如果不使用VPN的话),但不至于出现连接失败的情况。

你可能感兴趣的:(Python,Git,git)