git-usage
Git 学习教程
什么是 Git?
- 开源的分布式版本控制系统
- 版本管理(记录文件内容变化,便于查看回滚各个不同版本)
- 协作开发(多人同时开发同一个项目,并实时同步代码)
为什么要使用 Git?
- 为了版本管理与协作开发
- 你是不是会遇到以下问题
- 多人开发一个项目,如何同步代码?
- 备份数据,这个版本很好,要存着
- 回滚到某个版本(写错了删错了),怎么办?
- 几个人改了一个文件,冲突如何解决
- 想要多个版本,尽管不同版本有不同特性
工作机制
- 工作区:存放文件的地方
- 暂存区:临时保存
- 本地仓库(本地存储项目)
- 远程仓库(服务器存储项目)
- 提交(将本地仓库提交到远程仓库)
- 拉取(将远程仓库拉取到本地仓库)
代码托管平台(远程仓库)
局域网(私有化部署)
- Gitlab
- Gogs等
广域网(外部平台)
- GitHub
- Gitee等
Git 基本操作
初始化本地仓库
git init
- 让 Git 管理当前目录下的所有文件。
查看当前本地库状态
git status
- 查看分支、未提交更改(是否被Git追踪)等
添加文件到暂存区
git add 文件名
- 将文件添加到暂存区,准备提交。
- 文件可以是单个文件,也可以是多个文件。
- 可以使用
git add .
来添加所有未提交的文件。 - 文件一旦被添加到暂存区,就会被Git追踪。
提交更改(到本地库)
git commit -m "提交信息"
- 将暂存区中的更改提交到本地库。
- 提交信息可以是任何文字,用来描述这次提交。
- 提交后,本地库中的文件状态就会被更新。
- 为什么这里说本地库呢,本地库才跟你的工作区唯一绑定。
查看提交历史
git log
、git 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 等