1. git init
把电脑上的"普通文件夹(目录)"变成
git能识别、能管理的git仓库
命令拆解
git : 调用git工具
init : initailize 在本地初始化一个git 仓库
执行后发生了什么
你的项目文件夹/
├─ 📁 .git/ ← 【核心!Git 的灵魂】
└─ 你的代码文件...
git 会在你执行命令的文件夹里悄悄创建一个.git 文件夹
.git文件夹:
- 所有文件的版本历史
- 分支信息
- 提交记录
- 配置文件
- 暂存区数据
三个特性
- 不需要联网
和
GitHubGitLab没关系只是在本地电脑操作
- 每个项目(文件)只需初始化一次
一劳永逸
- 作用域
只对当前文件夹和其子文件夹有效
避坑
不要嵌套执行git init
- 如果已经在某个文件夹初始化了一个
git仓库就不要在其子文件夹下在次初始化
不要随意修改.git文件夹的内容
git的核心,改了可能直接报废
2. git clone
git clone [url]
底层实现了四件事
- 自动创建项目文件夹 : 和远程仓库同名
- 自动初始化git仓库 : 偷偷执行了
git init, 生成了.git文件夹 - 复制远程仓库数据 : 代码文件、版本历史、分支、提交历史
- 自动关联远程仓库 : 本地仓库知道我从哪里来,后续可以直接提交代码
特性
- 必须要联网
是从GitHub、GitLab、公司git服务器上克隆,必须联网 - 克隆的是完整的
git仓库
记录了从第一天到现在的所有修改信息、随时回退版本历史 - 一个项目只克隆一次
可以通过git pull更新代码,只用克隆一次
避坑
- 克隆前不要手动执行
git init - 不要再已有的
git仓库再次克隆 - 直接在空文件夹执行克隆命令即可,不用新建项目文件夹
3. git pull
拉取并合并
唯一作用:从已经关联的远程仓库,下载最新的代码更新,并自动合并到你本地的当前分支
git clone是第一次完整复制整个仓库,git pull是后续拉取并合并,同步远程更新
git pull不是一个命令,而是两个命令的组合
git pull = git fetch + git merge origin/当前分支
Git 在执行 git pull时会静默、自动地完成两步操作:
1. 第一步git fetch(安全下载)
- 把远程仓库的所有最新提交、分支、标签,完整下载到本地
- 只存在于本地的【远程跟踪分支】(如:origin/main)
- 绝对不会修改你的本地工作区和代码,非常安全
2. 第二步 git merge(自动合并)
- 把你刚刚下载到本地的
origin/当前分支的内容,自动合并到你本地的当前分支 - 如果没有冲突,直接完成;如果有冲突,会暂停提示你手动解决
git pull 最常用的三种命令格式
bash
# 1. 标准用法(推荐):拉取指定远程的指定分支
git pull 远程仓库名 分支名
# 示例:拉取 origin 远程的 main 分支(最常用)
git pull origin main
# 2. 简化用法(已关联分支时可用)
# 如果本地分支已经和远程分支绑定(clone 会自动绑定),可以直接写
git pull
# 3. 高级用法:用 rebase 代替 merge(保持提交历史线性)
git pull --rebase origin main
git pull 在git工作流中的标准位置
永远先
pull,再写代码,最后push如果直接
push跳过pull,大概率会遇到【远程有更新,本地提交落后】的错误,导致push失败
bash
# 每天打开电脑写代码的第一步:先同步最新代码
git pull origin main
# 然后才是:
写代码 → git add → git commit → git push origin main
避坑
error1 git pull 前有未提交的修改
如果本地有未
commit的代码,执行git pull会直接报错,甚至导致代码混乱
git pull前,先执行git status,如果有未commit的代码,先执行git commit或git stash
error2 在错误的分支上执行git pull
比如你在
dev分支上执行git pull origin main会把main分支的内容错误合并到dev分支先
git check out 目标分支,再执行git pull
error3 盲目接受自动合并
自动合并的结果并不一定正确。特别是多个人修改统一个文件时
一定要打开冲突文件检查后再提交
error4 git pull失败就删除本地仓库,执行git clone
99%的问题都可以通过
git statusgit resetgit log解决掉
error5 只执行git pull不执行git push
写完代码后一定要及时
git push到远程,否则容易丢失