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 loggit log --pretty=oneline

四、版本回退与前进

1、相关概念

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

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 rmgit add,效果相同。

2、误删文件恢复

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

八、小结

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

相关推荐
Rosanci3 小时前
谷歌浏览器插件开发实战指南:从 Hello World 到上架发布
大数据·人工智能·chrome·程序人生
m0_466525294 小时前
云从科技上线云起ModelHub:AI团队时代的模型算力基础设施
大数据·人工智能·科技
蓝速科技5 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
郑州光合科技余经理7 小时前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123457 小时前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
SelectDB8 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
SelectDB8 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析
vx-程序开发8 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
当下新鲜事9 小时前
脱硫脱硝塔动力系统科普:四方DL500变频器工作原理解析
大数据·运维·物联网·业界资讯
珠海西格电力9 小时前
零碳园区管理系统“智慧大脑”功能对园区运营成本的影响有哪些?
大数据·人工智能·安全·系统架构·能源