网站开发模板专家数据库,wordpress修改省略图,wordpress 多厂商插件,长沙电商网站建设Git 是一个免费、开源的分布式版本控制系统#xff0c;最初由 Linus Torvalds 于2005年创建。它旨在管理项目的源代码#xff0c;并提供了跟踪更改、协作开发、版本控制、分支管理等功能。
一、版本控制概念
版本控制系统#xff08;Version Control System#xff0c;VC…Git 是一个免费、开源的分布式版本控制系统最初由 Linus Torvalds 于2005年创建。它旨在管理项目的源代码并提供了跟踪更改、协作开发、版本控制、分支管理等功能。
一、版本控制概念
版本控制系统Version Control SystemVCS是一种用于管理项目文件和源代码版本的软件工具。它记录了文件的历史更改并允许开发者查看、比较和恢复不同版本的文件。
1、版本追踪版本控制系统跟踪文件的所有更改并记录每个版本的详细信息如修改人、时间、提交注释等。这使得开发者可以了解每个文件的历史更改记录。 2、并行开发多个开发者可以同时在同一个项目上进行工作每个人都可以在独立的分支上进行修改然后将更改合并到主分支中。这样可以提高团队的协作效率。 3、版本回滚版本控制系统允许开发者轻松地回滚到之前的任何版本即使在文件被意外修改或删除后也可以恢复到之前的状态。 4、分支管理版本控制系统支持创建和管理分支开发者可以在不影响主线开发的情况下进行特性开发、bug 修复等工作。这使得开发过程更加灵活和可控。 5、协作开发版本控制系统提供了一种方便的方式来协作开发项目。开发者可以共享代码库并通过提交和合并请求来协作开发、审查代码方便多人合作开发项目。 6、备份和恢复版本控制系统充当了项目的备份工具可以确保项目的所有历史版本都得到了保存。即使出现了数据丢失或损坏的情况也可以通过版本控制系统来恢复数据。个人开发时也可以存多个版本log用于备份恢复。 7、跟踪变更版本控制系统可以记录每个文件的详细更改包括新增、修改和删除操作。这使得开发者可以了解每个文件的修改历史方便进行代码审查和错误排查。
二、git的工作原理
Git 的工作原理涉及到几个重要的概念和组件包括仓库Repository、对象数据库Object Database、索引Index和分支Branch。下面是 Git 的工作原理的简要介绍
2.1 仓库Repository
Git 将项目的所有文件和历史版本存储在一个称为仓库的目录中。每个仓库包含项目的完整历史记录和所有文件的当前状态。
Git 仓库通常分为本地仓库Local Repository和远程仓库Remote Repository两种类型。
本地仓库 本地仓库是存储在本地计算机上的 Git 仓库副本。它包含了完整的项目历史记录、分支、提交等信息。本地仓库通常用于开发人员在本地进行代码的修改、提交、版本控制等操作。您可以在本地仓库中创建分支、合并分支、提交更改等操作所有这些操作都不需要网络连接而是在本地进行的。
远程仓库远程仓库是存储在远程服务器上的 Git 仓库副本。它用于多个开发人员之间共享和协作代码并作为代码的中央存储库。远程仓库通常托管在代码托管平台如 GitHub、GitLab、Gitee 等或者公司内部的 Git 服务器上。开发人员可以将本地仓库中的更改推送push到远程仓库或者从远程仓库拉取pull最新的代码更改。
2.2 对象数据库Object Database
在 Git 中对象数据库Object Database是一个存储 Git 版本库中所有数据对象的重要组成部分。它通常位于 .git/objects 目录下。
Git 中的对象是指存储在版本库中的数据实体主要包括以下几种类型的对象
1、Blob 对象文件内容对象 Blob 对象存储的是文件的内容。在 Git 中每个文件的内容都被存储为一个 Blob 对象。Blob 对象通过 SHA-1 校验和来标识并且它们是不可修改的即一旦创建就不能修改。
2、Tree 对象目录对象 Tree 对象存储的是文件和子目录的列表以及它们的权限和文件名等信息。每个提交对象都包含一个指向根 Tree 对象的引用通过 Tree 对象可以构建整个目录结构。
3、Commit 对象提交对象 Commit 对象包含了一次提交的元数据信息包括作者、提交者、提交时间、提交信息等。每个提交对象都包含一个指向对应的 Tree 对象的引用以及可能存在的一个或多个父提交对象的引用如果是合并提交的话。 $ git log# commit 8c99d09c27215262526763862d44626ccd7c5875 (HEAD - master)# 上面这串数字是提交对象的哈希值4、Tag 对象标签对象 Tag 对象用于给某个特定的提交打标签标识出一个重要的里程碑或版本号。Tag 对象通常包含了标签名称、标签信息、标签创建者等信息以及指向被标记的提交对象的引用。
这些对象被存储在 Git 的对象数据库中每个对象都有一个唯一的 SHA-1 校验和作为其标识符。Git 使用对象数据库来管理和存储所有的项目数据包括文件内容、目录结构、提交历史等。
对象数据库是 Git 版本控制系统的核心组件它提供了高效的数据存储和检索功能确保了版本库的完整性和可靠性。
2.3 索引Index
索引是一个暂存区域用于存储当前工作目录中的更改记录了当前工作目录中文件的状态和更改但尚未提交到仓库中。索引是一个中间状态介于工作目录和仓库之间。
当对文件进行修改并使用 git add 命令将这些更改添加到索引中时Git 会根据文件的路径和内容生成一个校验和checksum来标识这些更改用于确定文件内容是否发生了变化。
当执行 git commit 命令时Git 会使用当前索引中的文件状态创建一个新的提交对象并为该提交对象分配一个唯一的 SHA-1 校验和作为其标识符。因此每个提交对象都有一个唯一的 ID。
索引与当前工作目录和提交历史相关联用于暂存和准备提交更改。提交对象具有唯一的标识符用于标识每次提交的内容。
2.4 分支Branch
在 Git 中分支Branch是指向 Git 仓库中的一个提交对象的可变指针。它实际上是一个轻量级的指针指向了项目提交历史中的某一个提交对象。分支可以看作是一系列提交的引用它们按照提交顺序形成了一个分支的历史记录。
每个分支都有一个名称可以通过这个名称来引用分支。在 Git 中默认的主分支通常被称为 master 分支但也可以根据项目需求自定义其他名称的分支。分支名称通常用来表示项目的不同功能特性、开发版本或者修复补丁等。
本地会有一个HEAD标签代表处于工作区的分支。
分支在 Git 中扮演了重要的角色它们提供了一种轻松管理和组织项目开发的方式。通过分支可以实现以下功能
1. 并行开发多个开发人员可以在不同的分支上同时进行工作而不会相互干扰。
2. 功能开发每个功能特性可以在独立的分支上进行开发便于管理和跟踪功能的开发进度。
3. 版本控制每个版本或发布可以在单独的分支上进行管理使得可以方便地回溯历史版本或发布新版本。
4. 修复补丁可以在分支上快速创建和提交修复程序然后合并到主分支中。
5.实验性开发可以在单独的分支上进行实验性的开发不影响主分支或其他稳定分支。
分支的创建、切换、合并和删除等操作都可以通过 Git 提供的命令轻松完成。分支是 Git 版本控制系统中一个非常强大和灵活的特性它使得团队能够更加高效地进行协作开发并且更好地管理和组织项目的开发流程。
三、git的基本操作
Git 的基本操作涉及到对仓库的创建、配置、文件的添加、提交、查看状态、查看历史记录等操作。下面是一些常见的 Git 基本操作及其用法
1. 初始化仓库 git init在当前目录创建一个新的 Git 仓库。 git clone remote-url从远程仓库克隆一个新的仓库到本地并将远程仓库的地址保存为origin。也就是说这个origin是指向远程仓库的引用名。
2. 配置用户信息 git config --global user.name Your Name配置全局用户名。 git config --global user.email your.emailexample.com配置全局用户邮箱。
3. 文件 git add file将指定文件添加到索引中。 git add .将当前目录下所有文件添加到索引中。 git reset HEAD file_name将文件从暂存区回退到工作区 **4.提交更改**git commit -m “Commit message”将索引中的更改提交到本地仓库并附上提交信息。 git commit --amend : 将索引中的修改合并到最新的提交上。
5. 查看状态 git status查看工作区和索引的状态了解文件的修改状态。
6. 查看历史记录 git log查看提交历史记录。
7.撤销回退 git checkout -- file撤销对文件的修改将文件恢复到最近一次提交的状态。 git reset HEAD file将文件从索引中移除取消添加到暂存区的更改。 git reset [commitId]:回退到commitId改动全部返还给工作区 git reset [commitId] --hard 回退到commitId但是会删除全部的改动
8. 分支操作 git branch branchname本地仓库创建一个新的分支。 git checkout branchname本地仓库切换到指定分支。 git merge branchname将指定分支合并到当前HEAD分支。 git checkout -b [local_branch_name] origin/[remote_branch_name] : 本地创建一个新的分支更新到远程的一个分支然后切换到这个新分支。 git branch --set-upstream-toorigin/master master 将本地的master分支和远程的master分支绑定
9. 远程操作 git remote add origin remote-url添加远程仓库。 git push -u origin master将本地仓库的更改推送到远程仓库。-u 会将本地分支与远程仓库同名分支关联起来后续就只用git push了。 git pull origin master从远程仓库拉取最新更改到本地仓库。如果分支关联起来了也只用git pull git pull -- rebase拉取远程分支使用rebase方式 git push --set-upstream origin [name1]:[name2] 将本地name1分支推送到远程的name2分支并关联起来 git ls-remote --tags origin 显示远程仓库的分支的标签
10.文件比较 git diff [commit1]查看暂存区和commit1(提交对象的哈希值)提交之间的差异 git diff [commit1][commit2]查看commit2相对commit1提交而言的差异。
四、git实战
# test1 : 初始化git仓并链接到远程分支
git config --global user.email ***.***.com # 配置全局邮箱
git config --global user.name *** # 配置全局用户名
git init # 将当前文件夹变成git文件夹
echo 123 1.txt # 生成一个txt文件写入123
git add . # 将修改全部添加到暂存区索引
git commit -m *** # 将暂存区中的修改添加到本地仓库 PS:必须commit一次
git remote add origin https://gitee.com/***/git-demo.git # 链接远程仓库
git push -u origin master # 推入远程分支并于同名分支相关联# test2 推入另一个分支假设远程有test分支现在本地只有master
git branch test # 本地创建test分支
git checkout test # 本地切换分支到test分支
echo 123 2.txt # 生成一个txt文件写入123
git add .
git commit -m 2
git push -u origin test # 将本地test分支推入远程同名分支并关联# test3 : 多人合作假如远程有你没有的文件需要先拉取远程pull同步
echo 123 3.txt
git add .
git commit -m 3
git push # error:提示远程有你没有的文件
git pull --rebase origin master # 拉取远程提交历史到本地再合并即本地的修改最新
git status # 解冲突建议用vscode。
# 如果没有冲突直接 git push
git add . # 补充解冲突而修改的文件
git commit --amend # 将本次修改合并到上个提交对象
git push # 推入远端# test4绑定远程分支pull并推送
git init # 新建一个git仓库分支自动取名为master
echo 1 1.txt # 工作区模拟一次更改
git add . # 保存到暂存区
git commit -m 1 # 本地提交一笔log到本地仓库
git remote add origin gitgitee.com:****/git-demo.git # 将本地的仓库和远程的仓库关联起来
git branch --set-upstream-toorigin/master master # 将本地master分支和远程的master分支关联起来
git pull --rebase # 拉取远程分支在远程分支的log基础上加上当前的这笔修改
git push # 推送到远程分支test 5: 切换分支
git clone gitgitee.com:****/git-demo.git #下载远程仓库到本地并关联master和远程的默认分支
git branch test # 新建一个test分支
git checkout test #切换到test分支
git echo 1 1.txt # 模拟一次更改
git add . # 保存到暂存区
git commit -m 1 # 提交一笔更改log到本地仓库
git push # 推入远程仓库默认分支