git-usage

Git 学习教程

什么是 Git?

  • 开源的分布式版本控制系统
  • 版本管理(记录文件内容变化,便于查看回滚各个不同版本)
  • 协作开发(多人同时开发同一个项目,并实时同步代码)

为什么要使用 Git?

  • 为了版本管理与协作开发
  • 你是不是会遇到以下问题
    1. 多人开发一个项目,如何同步代码?
    2. 备份数据,这个版本很好,要存着
    3. 回滚到某个版本(写错了删错了),怎么办?
    4. 几个人改了一个文件,冲突如何解决
    5. 想要多个版本,尽管不同版本有不同特性

工作机制

  • 工作区:存放文件的地方
  • 暂存区:临时保存
  • 本地仓库(本地存储项目)
  • 远程仓库(服务器存储项目)
  • 提交(将本地仓库提交到远程仓库)
  • 拉取(将远程仓库拉取到本地仓库)

代码托管平台(远程仓库)

局域网(私有化部署)

  • Gitlab
  • Gogs等

广域网(外部平台)

  • GitHub
  • Gitee等

Git 基本操作

初始化本地仓库

  • git init
  • 让 Git 管理当前目录下的所有文件。

查看当前本地库状态

  • git status
  • 查看分支、未提交更改(是否被Git追踪)等

添加文件到暂存区

  • git add 文件名
  • 将文件添加到暂存区,准备提交。
  • 文件可以是单个文件,也可以是多个文件。
  • 可以使用 git add . 来添加所有未提交的文件。
  • 文件一旦被添加到暂存区,就会被Git追踪。

提交更改(到本地库)

  • git commit -m "提交信息"
  • 将暂存区中的更改提交到本地库。
  • 提交信息可以是任何文字,用来描述这次提交。
  • 提交后,本地库中的文件状态就会被更新。
  • 为什么这里说本地库呢,本地库才跟你的工作区唯一绑定。

查看提交历史

  • git loggit reflog
  • 查看本地库中的提交信息。
  • 可以查看提交信息、提交时间、提交者等信息。

版本切换

  • git reset
  • 切换到不同的版本。
  • 软切换: 保留更改文件 --soft
  • 硬切换: 丢弃更改文件 --hard

Git 分支操作

分支是什么

  • 分支是 Git 中一个重要的概念,它允许你创建多个独立的开发线。
  • 分支可以用于并行开发,避免冲突。
  • 分支可以用于合并代码,并创建新的版本。
  • 分支其实就是一个副本,你可以自由修改

为什么用分支

  • 分支可以帮助你更好地组织你的代码。
  • 分支可以帮助你更好地协作。
  • 分支可以帮助你更好地管理你的代码版本。
  • 多个分支炸了也没关系,不会影响到其他分支

查看分支

  • git branch
  • 查看所有分支

创建分支

  • git branch <branch_name>
  • 创建一个名为 <branch_name> 的分支
  • 但不会切换到该分支

切换分支

  • git checkout <branch_name>
  • 切换到名为 <branch_name> 的分支
  • 没有创建分支,则会创建一个新的分支

合并分支

  • git merge <branch_name>
  • <branch_name> 合并到当前分支
  • 合并冲突时,需要手动解决
  • 这一步一般会在PR、MR中进行,在远程仓库上合并,后本地库拉取最新代码
  • 为什么不直接在本地合并后提交呢?远程其他人才能看到你的代码更改,并且远程的代码库才是唯一的版本控制中心。

变基分支

  • git rebase <branch_name>
  • 变基到 <branch_name> 分支
  • 将当前分支的所有更改合并到 <branch_name> 分支
  • 可以解决合并冲突,但需要手动解决
  • git rebase --continue
  • 继续执行 rebase 操作
  • git rebase --abort
  • 尽量不要使用,因为会导致历史记录被修改

Git 协作操作

  • 主要涉及到一些跟远程仓库交互的操作

获取最新版本文件

  • git fetch <remote>
  • 从远程仓库拉取最新代码
  • 不会自动合并代码,要手动合并

拉取代码

  • git pull <remote> <branch_name>
  • 实际上是 git fetch + git merge
  • 从远程仓库拉取最新代码并合并到当前分支
  • 如果本地分支与远程分支冲突,会报错

推送代码

  • git push <remote> <branch_name>
  • 将本地分支代码推送到远程仓库

克隆一个远程仓库

  • git clone <remote_url>
  • 创建一个本地仓库,并从远程仓库拉取代码

GitHub

  • 一个基于 Git 的代码托管平台
  • 可以方便地创建、管理和协作代码仓库
  • 提供各种功能,例如代码审查、Pull Request、issue 等

参考

作者

Norton-Lin

发布于

2024-09-01

更新于

2024-09-01

许可协议

评论