git快速上手

git

git更像是运用型技术,这些知识只是帮助你能更好的理解其工作机制,更重要的是去使用

安装git

  • git下载地址
    • https://git-scm.com/downloads/win
  • git-GUI下载地址
    • https://desktop.github.com/download/

git核心概念

仓库(Repository)

定义:Git仓库Git用来存储项目的地方,包含项目的所有文件和历史记录

仓库的核心是一个隐藏的.git目录,其中存储了Git的所有元数据和对象。

在Git中,相同文件的不同版本会共享存储空间,只有变化的部分会被存储,文件内容存储在Git的对象数据库中(blob对象),而提交(commit)则记录了这些文件的快照

  • .get目录的结构
    • objects/:存储所有的Git对象(Blob、Tree、Commit、Tag)。
    • refs/:存储所有的引用(分支、标签等)
    • HEAD:指向当前分支的最新提交
    • config:仓库的配置文件
    • index:暂存区的索引文件

工作区(Working Directory)

定义:工作区是项目的当前状态,包含你正在编辑的文件和目录。

  • 工作区中文件可能存在的状态
    • 未跟踪(Untracked):新创建的文件,尚未被Git管理
    • 已跟踪(Tracked):已经被Git管理的文件
      • 未修改(Unmodified):文件内容与最近一次提交一致
      • 已修改(Modified):文件内容被更改,但尚未添加到暂存区
      • 已暂存(Staged):文件已被添加到暂存区,准备提交

暂存区(Staging Area)

定义:暂存区是一个临时区域,用于保存提交的更改

  • 暂存区的本质是一个索引文件(位于.git/index),记录了那些文件将被包含在下一次提交中。
  • 使用git add <file>将文件添加到暂存区
  • 使用git status可以查看暂存区和工作区的状态

提交(Commit)

定义:提交是Git中的一个快照,记录了工作区和暂存区的当前状态

  • 每次提交都会生成一个唯一的SHA-1哈希值,用于标识该提交
  • 提交包含信息
    • 提交的快照(即文件的当前状态)
    • 提交的作者和提交者信息
    • 提交的时间戳
    • 提交的父提交(前一个提交的哈希值)
    • 提交信息(通过git commit -m "message" 添加)
    • 提交是不可变的,一旦创建就无法直接修改(但可以通过git rebasegit commit --amend 间接修改)

分支(Branch)

定义:分支是项目开发的不同线路,允许并行开发

  • 分支的本质是一个指向某个提交的指针
  • 默认分支通常称为mainmaster
  • 创建新分支时,Git只是创建一个新的指针,指向当前提交
  • 使用git branch <branch-name>创建新分支
  • 使用git checkout <branch-name>git switch <branch-name>切换分支
  • 使用git branch -d <branch-name>删除分支

合并(Merge)

定义:合并是将两个分支的历史记录合并在一起

  • 快进合并(Fast-Forward Merge)
    • 当目标发呢之是当前分支的直接祖先时,Git只需要将当前分支的指针移动到目标分支的最新提交
  • 三方合并(Three-Way Merge)
    • 当分支有分叉时,Git会创建一个新的合并提交,包含两个分支的更改。
    • 如果两个分支修改了同一文件的一部分可能会产生冲突,需要手动解决
  • 使用git merge --no-ff强制创建合并提交,即使可以快进合并

克隆(Clone)

定义:克隆是从远程仓库赋值一个完整的本地仓库

  • 克隆会下载远程仓库的所有文件、提交历史和分支
  • 克隆命令git clone <repository-url>
  • 克隆后,本地仓库会自动关联远程仓库(通常命名未origin)

拉取(Pull)

定义:拉取是从远程仓库获取更改并合并到当前分支

  • 拉取实际上是两个操作的组合
    • git fetch:从远程仓库下载最新的提交和分支
    • git merge:将远程分支的更改合并到当前分支
  • 拉取命令
    • git pull
  • 如果远程分支和本地分支有冲突需要手动解决

推送(Push)

定义:推送是将本地仓库的更改上传到远程仓库

  • 推送命令git push <remote> <branch>
  • 如果远程仓库有本地没有的更改,需要先拉取(git pull)再推送
  • 推送时可能会遇到权限问题,需要确保你有权限写入远程仓库

git基本命令

实际上在日常运用中大多是在可视化界面,如idea中进行git的相关操作

初始化与克隆

git init:在当前目录初始化一个新的 Git 仓库。

git clone <repository-url>:克隆远程仓库到本地。

查看状态与历史

git status:查看工作区和暂存区的状态。

git log:查看提交历史。

git log --oneline:以简洁的方式查看提交历史。

添加与提交

git add <file>:将文件添加到暂存区。

git add .:将所有更改添加到暂存区。

git commit -m "commit message":提交暂存区的更改,并附上提交信息。

分支操作

git branch:查看所有分支,当前分支前会有一个 * 号。

git branch <branch-name>:创建一个新分支。

git checkout <branch-name>:切换到指定分支。

git checkout -b <branch-name>:创建并切换到新分支。

git merge <branch-name>:将指定分支合并到当前分支。

git branch -d <branch-name>:删除分支。

远程仓库操作

git remote -v:查看远程仓库信息。

git remote add origin <repository-url>:添加远程仓库。

git push origin <branch-name>:将本地分支推送到远程仓库。

git pull origin <branch-name>:从远程仓库拉取最新更改并合并到本地分支。

撤销与回退

git reset <file>:将文件从暂存区移除,但保留工作区的更改。

git reset --hard HEAD:撤销工作区和暂存区的所有更改,回到最近一次提交的状态。

git revert <commit-hash>:撤销指定提交,并生成一个新的提交。

标签(Tag)

git tag:查看所有标签。

git tag <tag-name>:在当前提交上创建一个轻量标签。

git tag -a <tag-name> -m "tag message":创建一个带注释的标签。

git push origin <tag-name>:将标签推送到远程仓库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值