一、Git 是什么
想象一下你正在写毕业论文:
论文_初稿.docx论文_修改1.docx论文_修改2_最终版.docx论文_修改2_最终版_真的最终.docx论文_打死也不改了.docx
是不是很熟悉?这就是没有版本控制的痛点。
Git 就是来解决这个问题的。它是一个版本控制系统,能帮你记录每次修改的历史,随时回到任何一个旧版本,多人协作时,不冲突并行开发多个功能(分支)
要注意,git和github不是一个东西。Git 是你电脑上的版本控制软件,GitHub 是存放 Git 仓库的云端平台。
二、安装 Git
Windows
访问 git-scm.com
下载
.exe文件并运行一路“下一步”即可
安装完成后,在开始菜单找到 Git Bash,打开它。
Linux (Ubuntu/Debian)
bash
sudo apt update
sudo apt install git安装完成后,验证是否成功:
bash
git --version
# 输出类似:git version 2.34.1三、第一次配置
告诉 Git 你是谁(这一步很重要,因为每次提交都会记录这些信息):
bash
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"查看配置是否成功:
bash
git config --list四、核心概念
工作流程:
在工作区修改文件 → 添加到暂存区 → 提交到仓库
五、创建仓库
5.1 初始化一个新仓库
bash
# 创建一个项目文件夹
mkdir my-project
cd my-project
# 初始化 Git 仓库
git init执行后,当前文件夹会多出一个 .git 隐藏文件夹(里面就是 Git 的“数据库”,别碰它)。
5.2 创建第一个文件
bash
echo "# 我的第一个项目" > README.md5.3 查看状态(最常用的命令)
bash
git status你会看到类似:
text
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
README.md意思:README.md 是一个新文件,Git 还没开始追踪它。
5.4 添加到暂存区
bash
git add README.md也可以一次性添加所有变化:
bash
git add .再次运行 git status,你会看到文件变成绿色,表示已经在暂存区了。
5.5 提交到仓库
bash
git commit -m "初始化项目:添加 README"-m 后面的字符串是提交说明,一定要写清楚这次改了什么(这是好习惯)。
成功后会显示:
text
[main (root-commit) a1b2c3d] 初始化项目:添加 README
1 file changed, 1 insertion(+)搞定!你已经完成了第一次提交。
六、核心操作流程图解
text
修改文件 → git add → 暂存区 → git commit → 仓库
↑ ↓
└────── git checkout <文件> ←────────┘七、查看历史与回退
查看提交历史
bash
git log输出示例:
text
commit a1b2c3d4e5f6... (HEAD -> main)
Author: 张三 <zhangsan@example.com>
Date: Sun Jan 15 15:30:00 2024 +0800
初始化项目:添加 README想看得更简洁:
bash
git log --oneline
# 输出:a1b2c3d 初始化项目:添加 README回退到某个版本
假设你又提交了两次,现在想回到第一次提交的状态:
bash
# 先查看历史,找到想要回去的 commit id(前几位即可)
git log --oneline
# 假设输出:
# c3d4e5f 第三次提交
# b2c3d4e 第二次提交
# a1b2c3d 初始化项目:添加 README
# 回退到第二次提交(但保留之后的修改记录)
git reset --soft b2c3d4e
# 或者彻底回退(丢弃所有后续修改)—— 谨慎使用
git reset --hard b2c3d4e⚠️
--hard会丢失所有未提交的修改,新手慎用。
八、分支
分支就像是平行宇宙。你可以在一个分支上开发新功能,另一个分支上修 bug,互不干扰。
8.1 查看分支
bash
git branch
# * 表示当前所在分支8.2 创建新分支
bash
git branch 新功能8.3 切换分支
bash
git checkout 新功能
# 或者用新版命令(推荐)
git switch 新功能8.4 创建并切换一步到位
bash
git checkout -b 另一个新功能
# 或
git switch -c 另一个新功能8.5 合并分支
假设你在 新功能 分支上完成了开发,想合并回 main 分支:
bash
# 先切换回 main
git checkout main
# 把 新功能 分支合并进来
git merge 新功能8.6 删除分支
bash
git branch -d 新功能 # 已合并的分支
git branch -D 新功能 # 强制删除(未合并的)九、与远程仓库协作(GitHub/Gitee)
本地仓库只能在你自己的电脑上,远程仓库(如 GitHub、GitLab、Gitee)能让别人也看到你的代码。
9.1 在 GitHub 上创建一个空仓库
登录 GitHub,点击右上角 “+” → “New repository”
输入仓库名,不要勾选 “Add a README file”
点击 “Create repository”
9.2 连接本地与远程
复制远程仓库的地址(HTTPS 或 SSH):
bash
# 添加远程仓库(origin 是默认名字)
git remote add origin https://github.com/你的用户名/仓库名.git9.3 推送代码到远程
bash
git push -u origin main-u 是第一次使用时设置上游分支,以后可以直接用 git push。
9.4 克隆别人的仓库
bash
git clone https://github.com/某用户/某仓库.git9.5 拉取远程更新
bash
git pull
# 等价于:git fetch + git merge十、最常用命令速查表
十一、常见QA
Q1: 提交时写错了说明怎么办?
bash
git commit --amend -m "正确的说明"Q2: 刚刚 git add 错了文件,想撤销?
bash
git reset HEAD <文件名>
# 或用新版命令
git restore --staged <文件名>Q3: 修改了文件但还没 add,想放弃修改?
bash
git checkout -- <文件名>
# 或用新版命令
git restore <文件名>Q4: 合并时出现冲突怎么办?
冲突时 Git 会在文件里标注:
text
<<<<<<< HEAD
你的修改
=======
别人的修改
>>>>>>> branch-name手动编辑文件,删除标记行,保留想要的内容,然后:
bash
git add <冲突文件>
git commit -m "解决冲突"Q5: 想撤销上一次 commit 但不丢掉修改?
bash
git reset --soft HEAD~1十二、实践习惯
小而频繁地提交,不要攒一堆修改一次性提交
提交说明要清晰:
修复登录页面验证码问题比修改好一万倍不要提交:密码、密钥、大的二进制文件、编译产物
使用
.gitignore文件忽略不需要追踪的文件:
gitignore
# .gitignore 示例
node_modules/
.env
*.log
.DS_Store
dist/push 前先 pull,避免远程冲突
使用分支开发新功能,
main分支保持稳定
结语
刚开始可能会觉得命令很多,但你只需要记住:
git status—git add—git commit—git push
这四步能覆盖 80% 的日常使用。其余不懂的,随时 git --help 或者上网搜
首发于 焰白小站 enento.com
本文采用 CC BY-NC 4.0 许可协议,转载请注明出处。
【教程】Git从安装到实践
https://enento.cloud/archives/Gitjiaocheng
评论