SVN+Git

Git

学习Git之前,我们需要明白一个概念,版本控制!

版本控制

什么是版本控制 版本迭代,新的版本!版本管理器

版本控制:是一种在开发的过程中用于管理我们对文件,目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前版本的软件工程技术。

  • 实现跨区多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

简单来说就是多人协同开发项目的技术。

image-20210508152022392

常见的版本控制工具:

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

版本控制产品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),现在影响力最大且使用最广泛的是Git与SVN

SVN:版本集中控制

所有的版本数据都保存在服务器上,协同开发者从服务器上更新或者上传自己的修改

(所有的版本都存在服务器上面,用户的本地都只有自己以前所同步的版本,如果不联网的话,用户就看不到历史版本,风险就是服务器崩了。)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EfnGa2v0-1620702955654)(C:%5CUsers%5C%E7%8E%8B%E9%A1%BA%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20210508153248625.png)]

Git:分布式版本控制

(每个人都有全部的代码,风险就是安全隐患。)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CrcwveEk-1620702955657)(C:%5CUsers%5C%E7%8E%8B%E9%A1%BA%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20210508153227616.png)]

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。Git可以直接看到更新了哪些代码和文件!

GIt历史

同生活中的许多伟大事物一样,Git 诞生于一个极富纷争大举创新的年代。

Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

Linux社区中存在很多的大佬!破解研究 BitKeeper !

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。(2周左右!) 也就是后来的 Git!

SVN

常用操作:

image-20210508154523746

第一次来公司就用:checkout

每日上班就用:update

每日下班就用:commit

image-20210511110809189

每日上班就用:update

每日下班就用:commit

[外链图片转存中…(img-zjsXdY6R-1620702955663)]

### 关于 `ERROR: ./sd-scripts is not a valid editable requirement` 的解决方案 当使用 `pip` 安装本地项目时,如果遇到错误提示 `ERROR: ./sd-scripts is not a valid editable requirement`,通常是因为指定的路径或配置不符合 `pip` 的要求。以下是可能的原因及解决方法: #### 1. 路径格式问题 确保提供的路径是绝对路径或相对路径,并且符合操作系统的要求。例如,在 Unix 系统中,路径应以 `/` 开头;而在 Windows 系统中,路径可以以盘符开头(如 `C:\path\to\project`)。此外,确保路径指向一个有效的 Python 包目录[^1]。 #### 2. 缺少必要的文件 对于可编辑安装(editable installation),目标目录必须包含以下内容之一: - `setup.py` 文件:这是传统的 setuptools 配置文件。 - `pyproject.toml` 文件:这是现代的 PEP 517/PEP 518 配置文件。 如果目标目录缺少这些文件,`pip` 将无法识别其为一个有效的 Python 包。请确认目标目录中存在上述文件之一[^1]。 #### 3. 使用正确的命令格式 正确的命令格式如下: ```bash pip install -e /path/to/project ``` 或在 Windows 系统中: ```cmd pip install -e C:\path\to\project ``` 如果路径中包含空格,请用引号括起来,例如: ```bash pip install -e "/path/to project" ``` #### 4. 检查项目的结构 确保目标目录是一个合法的 Python 包。例如,目录中应该有一个顶层包(即包含 `__init__.py` 文件的子目录),并且包的元数据(如名称、版本等)已正确配置在 `setup.py` 或 `pyproject.toml` 中。 #### 5. 使用 VCS URL 进行安装 如果需要从版本控制系统(VCS,如 Git)安装项目,可以使用类似以下的命令: ```bash pip install -e git+https://github.com/user/repo.git#egg=package_name ``` 此命令会克隆仓库并在本地进行可编辑安装。确保 URL 是有效的,并且仓库中包含必要的构建文件(如 `setup.py` 或 `pyproject.toml`)[^1]。 #### 6. 处理网络超时问题 如果在安装过程中遇到网络超时错误(如 `ReadTimeoutError`),可以通过增加超时时间来解决。例如: ```bash pip install --default-timeout=100 package_name ``` 或者,切换到国内镜像源以提高下载速度。例如: ```bash pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name ``` #### 示例代码 以下是一个完整的示例,展示如何正确安装本地项目: ```bash # 假设项目位于 /home/user/my_project cd /home/user/my_project pip install -e . ``` 如果项目是从 Git 仓库克隆的,则可以执行以下命令: ```bash git clone https://github.com/user/repo.git cd repo pip install -e . ``` ### 注意事项 - 如果仍然遇到问题,请检查 `pip` 和 Python 的版本是否兼容。例如,较新的 `pip` 可能不支持旧版 Python。 - 确保目标项目符合 PEP 517/PEP 518 标准,或者至少包含 `setup.py` 文件[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值