git 的基本使用

文章目录

一、创建仓库并初始化

1、操作步骤

  1. 创建仓库 :使用 mkdir 命令创建目录,例如 mkdir /Users/xiao/pro。
  2. 初始化仓库 :进入创建的目录,使用 git init 命令初始化,使该目录可被 Git 管理,如 cd /Users/xiao/pro 后执行 git init。

2、注意事项

  1. 版本库概念:版本库(仓库,repository)可理解为一个目录,其中所有文件的修改、删除等操作都能被 Git 跟踪,方便追踪历史和还原。
  2. .git 目录 :在仓库目录下执行 git init 后会生成隐藏的 .git 目录,用于跟踪管理版本库,不要手动修改其中文件,否则会破坏 Git 仓库。
  3. Windows 系统:为避免问题,确保目录名(包括父目录)不包含中文。
  4. 命令执行位置 :后续的 git 命令需在仓库目录下执行。

二、工作区与版本库

1、Git 管理文件类型

Git 主要管理文本文件,对文本文件的改动跟踪效果好,能精确记录每行的修改。而对于图片、视频等二进制文件,虽能管理,但无法跟踪具体变化,只能记录文件大小的改变。Microsoft Word 是二进制格式,版本控制系统无法跟踪其改动,建议使用纯文本方式编写文件,并使用 UTF - 8 编码。Windows 用户不要使用自带记事本编辑文本文件,建议使用 Notepad++ 并将默认编码设置为 UTF - 8 without BOM。

2、Git 保存文件方式

Git 每次提交版本保存的是文件内容的完整快照。对于已变化的文件,保存完整内容;未变化的文件只保存上一个版本的指针。Git 适合保存文本文件,能进行很好的压缩和差异分析;对于二进制文件,压缩比率低,占用空间几乎随提交次数线性增长。

3、工作区与版本库概念及操作

  1. 工作区 :即仓库目录,是开发程序所在目录。提交版本后,Git 会自动检测自该版本之后仓库目录下文件的改动(增、删、改),可使用 git status 命令查看。例如:
bash 复制代码
cd /Users/xiao/pro
git status
echo "hello xiao" >> readme.txt
git status
  1. 版本库 :即仓库目录下的 .git 目录,不属于工作区。将修改内容提交为新版本的步骤如下:
    • 添加到暂存区 :使用 git add 命令,可添加单个文件(git add 文件 1)、多个文件(git add 文件 1 文件 2)或整个当前目录(git add .),也可多次执行 add 操作。
    • 提交到版本库分支 :使用 git commit -m '提交信息' 命令。执行该命令时,可能需配置用户和邮箱,使用 git config --local user.name '用户名' 和 git config --local user.email '邮箱' 进行配置。
    • 查看版本记录 :使用 git log 命令,若嫌输出信息多,可加上 --pretty=oneline 参数。

三、命令小结

  1. 创建并初始化仓库:
bash 复制代码
mkdir /Users/xiao/pro
cd /Users/xiao/pro
git init
  1. 设置用户与邮箱:
bash 复制代码
git config --local user.name 'xiao'
git config --local user.email 'xiao@example.com'
  1. 查看 Git 当前状态 :git status
  2. 将检测到修改的文件添加到暂存区 :git add 文件名
  3. 将暂存区的文件提交到版本库的分支 :git commit -m '提交信息'
  4. 查看提交记录 :git log 或 git log --pretty=oneline

四、版本回退与前进

1、相关概念

创建 Git 版本库时,Git 自动创建 master 分支,git commit 是往 master 分支提交更改。版本库中有暂存区(stage 或 index)、master 分支以及指向 master 的指针 HEAD,HEAD 指向当前在用版本。

2、版本回退

从当前版本回退到过去的版本,Git 仅将 HEAD 指向指定版本,并更新工作区文件。例如当前版本为版本 3,回退到版本 1 的操作如下:

  1. 查看版本信息 :git log --pretty=oneline
  2. 回滚到上一个版本 :
    • 方式 1 :使用 HEAD^ 表示上一个版本,HEAD^^ 表示上上个版本,HEAD~n 表示上上上...n 个版本,如 git reset --hard HEAD^ 或 git reset --hard HEAD~2。
    • 方式 2 :使用 git log 查询出的 commit id 号,如 git reset --hard 353b5afb8784f0e19c8dab83be1cb97a93b13bd4。

3、版本前进

从当前版本前进到未来的版本,当使用 git log 查看时,最新版本可能会不见。可使用 git reflog 查看命令历史,获取 commit id 后进行前进操作。例如当前版本为版本 1,前进到版本 3 的操作如下:

  1. 查看命令历史 :git reflog
  2. 前进到指定版本 :git reset --hard 87e199e

4、总结

  1. 使用 git reset --hard commit_id 可在版本历史之间穿梭。
  2. 回退版本前,用 git log 查看提交历史确定回退版本。
  3. 前进版本时,用 git reflog 查看命令历史确定前进版本。

五、撤销修改

1、场景 1

已提交不合适的修改到版本库,且未推送到远程库,可参考版本回退操作。

2、场景 2

文件内容已提交到版本库,之后修改并添加到暂存区,又再次修改。撤销操作如下:

  1. 执行 git reset HEAD 将文件从暂存区拿回工作区。
  2. 执行 git checkout -- 将工作区的修改还原到上一次 git commit 的状态。

3、场景 3

文件内容从未提交到版本库,修改并添加到暂存区,又再次修改。执行 git checkout -- 将工作区的修改还原到 git add 时文件的内容。

4、注意事项

git checkout -- file 命令中的 -- 很重要,没有 -- 就变成了"切换到另一个分支"的命令。

六、管理修改

Git 跟踪并管理的是修改,而非文件。每次修改都需先 add 到暂存区,才能提交到版本库。例如:

bash 复制代码
echo "hello" > a.txt
git add a.txt
echo "world" >> a.txt
git commit -m "版本 1"
git status
git diff HEAD -- a.txt

可选择将后续修改也 add 到暂存区后再 commit 一个新版本,或先将多次修改合并 add 后再提交一个版本。

七、删除文件

1、删除文件操作

  1. 添加并提交文件:
bash 复制代码
git add test.txt
git commit -m "v1"
  1. 删除文件 :可在文件管理器中删除或使用 rm 命令,此时工作区和版本库不一致,git status 会提示文件被删除。
  2. 从版本库中删除文件 :使用 git rm 命令删除文件并 git commit,如:
bash 复制代码
git rm test.txt
git commit -m "remove test.txt"

也可先手动删除文件,再使用 git rm 或 git add,效果相同。

2、误删文件恢复

若删错文件,可使用 git checkout -- test.txt 命令将误删的文件恢复到最新版本。但从来没有被添加到版本库就被删除的文件,无法恢复。

八、小结

git rm 用于删除文件。已提交到版本库的文件不用担心误删,但只能恢复到最新版本,会丢失最近一次提交后修改的内容。

相关推荐
nvd118 小时前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink
计算机编程指导师10 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
QYR_1112 小时前
机械制造用固体润滑涂层市场分析:2032年全球市场规模预计达8.78亿元,CAGR为6.2%
大数据·人工智能·物联网
数字化顾问12 小时前
(144页PPT)数字化转型汽车企业数智化战略规划(附下载方式)
大数据
zttbee12 小时前
git命令
git
智慧物业老杨13 小时前
数字底座,重构小区治理秩序
大数据
计算机编程指导师14 小时前
【计算机毕设选题推荐】基于Hadoop的宫颈癌变进程光谱数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·数据分析·spark·毕业设计·宫颈癌变
guhunyihan14 小时前
无代码系统搭建平台,探索恐象 AI 带来的开发新范式
大数据·人工智能
计算机编程指导师14 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的化妆品销售大数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·化妆品
benchmark_cc15 小时前
前复权数据每天可能变化,历史数据库应该覆盖还是保留原始价格?
大数据·python·pandas·量化交易·股票数据·quantdash