你需要做好如下准备工作:
- 安装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
如果是第一次使用这个功能,会弹出来一个链接,让你把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
commit
操作可以将当前项目提交至本地仓库
push
操作可以将本地仓库的最新记录push至远程仓库(即github仓库),push之前必须有新的commit,否则无法push
版本回退
git—Show Git Log
local—master 是指本地仓库的记录,对应于commit操作
remote—master 是指远程仓库的记录,对应于push操作
你提交的所有历史版本都会显示在这里。
右键你要回退的版本,选择下图中蓝条选项
选择hard,然后reset。对于soft、mixed、keep这三个选项,根据自己的实际需求选择即可。
克隆github上的项目
- 在github上复制URL
- 在PyCharm中依次点击git—clone,出现如下界面,将上面复制的URL填入下列对应栏即可。
- 如果是自己曾经的项目,则无需复制URL,直接点击对应项目即可Clone
注意,由于国内对外网管控比较严格,clone时可能会很慢(如果不使用VPN的话),但不至于出现连接失败的情况。