Git 是当今最流行的版本控制系统,全球几乎所有开发者都在用它管理代码:提交历史、分支协作、代码回滚、远程同步,全靠 Git。对服务器运维来说,Git 同样重要:网站源码管理、Jenkins 自动部署、克隆开源项目,样样离不开它。这篇文章从安装开始,把 Git 的核心概念和日常高频命令一次讲透,让你真正会用、敢用 Git。
一、Git 是什么
Git 是一个分布式的版本控制系统,由 Linux 之父 Linus Torvalds 开发。它记录文件的每一次改动,你可以随时查看历史、回退到任意版本、开分支做实验,还能多人协作互不干扰。
核心概念先记住四个:
- 仓库(Repository):存放代码和所有历史记录的地方
- 提交(Commit):一次改动的快照
- 分支(Branch):独立的开发线,默认主分支叫
master或main - 远程仓库(Remote):托管在 GitHub、Gitee 等平台上的仓库
二、安装 Git
Ubuntu / Debian:
apt update && apt install -y git
CentOS / Rocky:
yum install -y git
验证安装:
git --version
三、首次使用配置
安装后先设置用户名和邮箱,这些信息会记录在每次提交里:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
查看配置:
git config --list
四、本地仓库基本操作
1. 初始化仓库
mkdir myproject && cd myproject
git init
2. 添加文件并提交
# 添加所有文件到暂存区
git add .
# 提交到仓库
git commit -m "首次提交"
日常修改后的提交流程就是:git add → git commit。
3. 查看状态和历史
git status # 查看哪些文件被修改
git log --oneline # 查看提交历史(一行一条)
4. 回退版本
# 撤销工作区的修改(还没 git add)
git checkout -- 文件名
# 撤销已 add 但未 commit 的修改
git reset HEAD 文件名
# 回退到指定版本
git log --oneline # 找到要回退的 commit id
git reset --hard 提交id # 强制回退,慎用!
五、分支管理
分支是 Git 最强大的功能:你在一个分支上改代码,完全不影响主分支,测试好了再合并。
git branch # 查看所有分支
git branch dev # 新建 dev 分支
git checkout dev # 切换到 dev 分支
git checkout -b dev # 新建并切换(一步到位)
git merge dev # 把 dev 合并到当前分支
git branch -d dev # 删除分支
六、连接远程仓库(GitHub/Gitee)
1. 配置 SSH 密钥(免密推送)
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
cat ~/.ssh/id_rsa.pub
把输出的公钥复制到 GitHub 的 Settings → SSH and GPG keys 里。
2. 克隆远程仓库
git clone git@github.com:用户名/仓库名.git
国内网络慢的话,参考本站的 GitHub 加速教程,使用镜像代理加速克隆。
3. 推送和拉取
git push origin main # 推送到远程 main 分支
git pull origin main # 拉取远程最新代码
七、服务器上的实战场景
场景一:部署网站源码
cd /www/wwwroot/example.com
git clone https://github.com/用户名/网站仓库.git .
git pull # 以后每次更新,拉取最新代码即可
场景二:配合 Jenkins 自动部署
配置好 Git 仓库地址和分支,Jenkins 在每次 push 后自动拉取代码、执行构建、发布到服务器,全程无人值守(详见本站 Jenkins 教程)。
场景三:忽略不需要提交的文件
新建 .gitignore 文件:
# 忽略敏感和临时文件
.env
node_modules/
*.log
.DS_Store
八、常用技巧
1. 查看某个文件的历史
git log --oneline -- 文件名
2. 暂存当前改动(切分支前用)
git stash # 暂时保存当前未提交的改动
git stash pop # 恢复
3. 打标签(发布版本用)
git tag v1.0.0
git push origin v1.0.0
4. 查看本次改了什么
git diff
九、常见报错解决
Q1:fatal: not a git repository
当前目录不是 Git 仓库,先执行 git init 或在仓库目录下操作。
Q2:Permission denied (publickey)
SSH 密钥没配对。确认公钥已添加到 GitHub/Gitee,并检查密钥文件路径。
Q3:error: failed to push some refs
远程有本地没有的提交。先 git pull --rebase 拉取合并,再 push。
Q4:提交了不该提交的文件(如 .env)?
git rm --cached .env # 从版本控制移除但保留本地文件
echo ".env" >> .gitignore
git commit -m "移除敏感文件"
总结
Git 的核心就三件事:提交(记录改动)、分支(并行开发)、同步(远程协作)。把 add/commit/push/pull 和分支、回退这几个命令练熟,日常开发与服务器部署就完全够用了。剩下的命令,遇到具体场景再查再学,用着用着就熟练了。
