跳过正文
  1. Posts/

Git基本

·166 字·1 分钟· loading · loading · ·
软件工程 Git
Ethan Bao
作者
Ethan Bao
A little bit about me

Git 是什么?

Git 是一个分布式版本控制系统(Version Control System),它的核心作用是追踪和管理文件和代码的变化,帮助个人或团队高效协作开发。简单来说,Git 就像一个“时间机器”,能记录你项目中每一次修改的历史,并能随时回退到任意版本。

  flowchart LR
    %% 定义统一样式
    classDef defaultStyle fill:#fefefe,stroke:#4B83A1,stroke-width:2px,rx:6,ry:6,color:#333;
    %% 节点
    A[工作区]           -->|git add| B[暂存区]
    B                   -->|git commit| C[本地仓库]
    C                   -->|git push| D[远程仓库]
    %% 应用样式
    class A,B,C,D defaultStyle;
  

基础
#

Git Commit

  • -m (message) 提交当前 HEAD 分支的更改

Git Branch (name) 创建一个分支

  • -f (name) 创建分支并切换到该分支

Git Merge (branch_name)

  • 基于当前 HEAD 分支,将 branch_name 分支合并到目前分支,创建一个新的提交记录(本质是合并两个 parent 结点)

Git Rebase(变基) (branch_name)

  • 类似于 merge,但是区别是不创建新的提交记录,而是将非公共部分的所有部分转移到 branch_name 下方

高级
#

分离 HEAD
#

  • Git Checkout [name] 将 HEAD 指针移动到对应提交记录

相对引用
#

  • ^ (name)^ 可以选择当前提交的 parent 结点,即上一次提交

  • ~ (name)~(数字) 可以选择当前提交的第 n 个 parent 结点

撤销变更
#

  • Git Reset (name) 可以把分支回退对应的提交记录,相当于“改写历史“,只适用于本地仓库
  • Git Revert (name) 新建一个提交记录,等同于原始的上一次提交记录的拷贝,适用于远程仓库

远程
#

远程仓库本质是本地仓库在远程计算机上的拷贝/备份

  • 强大备份
  • 社交化 Git Clone本地创建一个远程仓库的拷贝
在本地仓库多了名为 origin/main 的分支,也叫远程分支 远程分支反映了远程仓库的状态 在切换到远程分支时,自动进入分离 HEAD 状态 >

远程分支命名规范 <remote_name>/<branch_name>

origin/main:远程分支 main,仓库名 origin

Git Fetch向远程仓库传输数据以及从远程仓库获取数据

  • 从远程仓库下载本地仓库缺失的提交记录
  • 更新远程分支指针

通过http://或者git://与远程仓库通信 不会改变本地仓库
Git Pull 先抓取更新,再合并到本地分支(git fetch+git merge)

实用指令 git pull --rebase 确保本地仓库与远程同步,才可以 Push

Git Push 将变更上传到指定的远程仓库,并在远程仓库上合并你的新提交记录(发布成果) (这时候 main 分支和 origin/main 分支应该指向同一个记录)

git 区域
#

工作区
#

除了.git 隐藏目录以外,都属于工作区范畴

版本库(repository)
#

.git 隐藏目录是 Git 的版本库,版本库中有很多东西,最重要的是stage(index),也就是暂存区,还有 Git 自动创建的第一个分支 master,以及指向 master 的HEAD 指针

Git 仓库结构示意图