git的历史
Git 是一个分布式版本控制系统,它由Linus Torvalds 于2005年创建。下面是 Git 发展的主要历史里程碑:
创建中心化版本控制系统(CVS、Subversion等):
在 Git 出现之前,许多开发者使用中心化的版本控制系统(如 CVS、Subversion)来协同开发项目。这些系统将代码存储在中央服务器上,用户通过从服务器上检出代码并提交更改来工作。
Linus Torvalds 创建 Git:
2005 年,Linus Torvalds 创建了 Git。他最初的目标是用于 Linux 内核的开发,因为当时的版本控制系统对于内核这样的大型项目来说并不理想。
Git 的分布式特性:
与中心化的版本控制系统不同,Git 是分布式的。这意味着每个开发者都可以在本地拥有完整的代码仓库,并且可以在没有网络连接的情况下进行工作。开发者可以通过克隆远程仓库来获取完整的历史记录和代码版本。
Git 的速度和效率:
Git 被设计成非常快速和高效的版本控制系统。它使用了一种称为“快照”的技术,只存储文件的变化部分,而不是整个文件的副本。这使得 Git 在处理大型项目时非常高效。
Git 的分支和合并:
Git 提供了强大的分支和合并功能,使得开发者可以轻松地创建新的分支,并在不同的分支上进行独立的工作。开发者可以在合适的时候将分支合并到主线上,从而整合各种修改和功能。
Git 的开源和广泛应用:
Git 是一个开源项目,并逐渐成为开发者们的首选版本控制系统。众多的软件开发团队、开源社区以及个人开发者都在使用 Git 来管理他们的代码。
总结起来,Git 是由 Linus Torvalds 创建的分布式版本控制系统,它具有速度快、效率高、支持分支和合并等特点。通过提供强大的版本控制功能,Git 成为了广泛应用于各种软件开发项目的行业标准。
[译] Git 的历史: 软件版本控制的统治之路 - 知乎 (zhihu.com)
什么是版本控制,怎么理解?
我们说git是一个版本控制系统,那么该自己理解版本控制这个概念呢?
版本控制(Version Control)是一种记录和管理文件或项目的不同版本的系统。它可以追踪文件的变化,并允许开发者在不同的时间点回溯、比较和恢复文件的特定版本。
理解版本控制的重要性和好处有以下几个方面:
历史记录:
版本控制系统可以记录每个文件的修改历史,包括谁做了什么修改、何时进行的修改等。这样开发者可以轻松地查看项目的演变历程,了解每个版本的变化和改进。
回溯和恢复:
版本控制系统可以让开发者在需要时轻松回退到旧版本,恢复之前的状态。如果出现错误或问题,可以快速找到引入问题的版本,并还原到没有问题的版本。
并行开发:
使用版本控制系统,多个开发者可以并行地在同一个项目上工作,而不会互相干扰或覆盖对方的工作。每个开发者可以在自己的分支上独立工作,并在合适的时机将更改合并到主线上。
冲突解决:
当多个开发者同时修改同一文件时,版本控制系统可以自动检测并提醒冲突的存在。开发者可以通过合并(Merge)或解决冲突(Conflict Resolution)来处理这些问题。
团队协作:
版本控制系统促进团队内的协作,开发者可以共享和讨论代码修改,并进行审查和反馈。团队成员可以更好地了解彼此的工作,并确保项目的一致性和质量。
总之,版本控制是一种非常重要的工具,它提供了记录、管理和追踪文件或项目不同版本的能力。通过使用版本控制系统,开发者可以更好地组织和管理项目,提高团队的协作效率,并控制代码的质量和稳定性
git的主要功能
Git 是一个功能强大的版本控制系统,具有以下几种主要功能:
版本控制:
Git 可以跟踪文件和目录的更改,并记录每次提交的历史。它可以帮助您了解文件的修改情况,包括何时进行的修改、谁进行的修改等。
分支管理:
Git 支持创建和管理多个分支。分支是独立的开发路径,您可以在不影响主线(主分支)的同时,创建和切换到其他分支进行并行开发。这对于多人协作和同时开发多个功能非常有用。
合并与冲突解决:
在 Git 中,您可以将一个分支的更改合并到另一个分支中。当两个分支同时修改同一部分代码时,可能会发生冲突。Git 提供了冲突解决的功能,允许您手动解决冲突或使用合并工具来自动解决冲突。
回滚与恢复:
Git 允许您回滚到历史提交的版本,无论是回退到之前的版本还是撤销最新的提交。这对于恢复意外删除的文件或修复错误非常有用。
远程仓库与协作:
Git 可以与远程仓库进行交互,例如 GitHub、GitLab 或 Bitbucket。您可以将本地仓库推送到远程仓库,与其他开发者共享代码,并进行团队协作。
暂存区:
Git 提供了一个暂存区(Staging Area),用于暂时存储修改的文件,然后一次性提交这些修改。这样可以精确地选择要包含在提交中的文件,为提交的内容提供更好的控制。
查看历史与比较:
Git 允许您查看提交历史记录,比较不同版本之间的差异,并查看特定文件或目录的修改历史。
除了以上功能,Git 还提供了其他一些有用的功能,例如标签管理、忽略文件、子模块等。Git 的强大和灵活性使其成为广泛使用的版本控制系统,并被众多开发者和开源项目所采用。
git与Gitee/GitHub的关系与区别
大家平时比较常用的代码托管平台应该就是Gitee/GitHub,那么Gitee/GitHub与git之间是什么样的一个关系呢?
Git 是一个版本控制系统,而 Gitee 和 GitHub 都是基于 Git 的在线代码托管平台。
下面是 Git、Gitee和GitHub的关系和区别:
Git:
Git 是一个开源的分布式版本控制系统,用于管理项目的代码版本。它可以在本地计算机上创建和管理 Git 仓库,记录文件的修改历史,并提供分支管理、合并、回滚等功能。
Gitee:
Gitee 是一个类似于 GitHub 的在线代码托管平台,在中国很受欢迎。它提供了将 Git 仓库托管在云端的服务,可以方便地与他人共享代码,并进行团队协作。Gitee 提供了 Web 界面和其他工具,使用户能够更方便地管理和使用 Git 仓库。
GitHub:
GitHub 是全球最大的基于 Git 的在线代码托管平台,广泛应用于全球开源社区和企业。类似于 Gitee,GitHub 也提供了将 Git 仓库托管在云端的服务,并提供了强大的协作功能。
关系:
Gitee 和 GitHub 都是基于 Git 的在线代码托管平台,使用 Git 作为其底层的版本控制系统,因此它们完全兼容 Git,支持 Git 的所有功能。
用户可以在 Gitee 或 GitHub 上创建和管理自己的 Git 仓库,并与他人分享代码。
区别:
Gitee 和 GitHub 在地域上有一定的差异。Gitee 是为中国用户提供的服务,而 GitHub 是全球服务。
用户界面和功能方面略有不同。Gitee 在一些功能上有一些特色,如集成码云 Pages、Gitee CI/CD 等。GitHub 则更注重开源社区和全球开发者的协作。
总之,Git 是一个版本控制系统,而 Gitee 和 GitHub 是基于 Git 的在线代码托管平台。通过 Gitee 或 GitHub,您可以将 Git 仓库托管在云端,并使用其他提供的功能来实现更好的团队协作和代码管理。
git 的基本使用
git的安装
首先确认一下自己的Linux上有没有安装git:
如果出现了版本号,就表明安装了, 没安装就yum安装一下:
sudo yum install -y git
创建仓库
建议大家现在gitee/github上面创建远端的仓库,然后再克隆到本地
1.输入仓库名称路径会自动同步
2.创建仓库的是时候无法直接设置成开源,默认私有,不过创建好之后我们可以设置成开源
3.初始化仓库大家可以选一下,语言就按实际情况选择,许可证暂时随便选一个
4.模板一般选择Readme文件, 最后分支模型的话我们现在可以不选
开源设置
然后我们怎么把远端的仓库克隆到本地,使得我本地写的代码可以上传到github上进行托管呢?
把Https的链接复制一下:
然后我们后面在这个目录下面写的代码就可以通过一些指令上传到Gitee上进行托管了,那怎么操作呢?
比如我现在把之前写的那个进度条的代码,拷贝过来:
但是现在这些文件实际并不在真正的git仓库里面, 真正的仓库其实是.git:
如何上传到仓库并推送到远端
第一步:add
git add 文件名
将文件添加到暂存区(staging area)
当然直接git add .
,就可以把当前目录中所有没添加到暂存区里面的文件添加进去
第二步:commit
git commit -m "提交的内容信息或修改信息"
(不要随便写)
git commit 会将暂存区的文件更改提交到本地版本库。
我们第一次提交需要进行一个身份验证,执行git config两条命令就行了,只不过把双引号里面的内容分别替换成自己的邮箱和姓名, 执行之后再commit就可以
第三步:push
然后我要推送到远端呢?
git push
:将本地版本库中的提交推送到远程仓库
需要填入用户名密码(可以配置免密码,这里就不说了),同步成功后,刷新Gitee/Github
页面就能看到代码改动了
查看日志
指令:git log
我们每次提交的详细信息都会在这里展示。
删除文件
再补充一个命令
git status
是一个用于查看 Git 仓库当前状态的命令。通过执行 git status,您可以了解当前工作目录中的文件状态以及与上次提交之间的差异。
那如果我们想删除某个提交的文件,怎么做呢?
指令: git rm 文件名
:将指定的文件从工作目录和版本控制中删除。
比如我想删除一个创建错的空文件:
但是此时只是在本地删除了,我想要远端也发生变化,怎么做?
再次进行commit和push
日志里也可以看到:
git status后提示没有文件需要提交:
未完待续....