1. 命令简介
Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年为管理 Linux 内核开发而创建。它旨在高效处理从小型到超大型项目的版本管理,具有速度快、设计简单、完全分布式、对非线性开发模式(数千个并行分支)的强大支持等优点。
作为目前世界上最流行的版本控制系统,Git 允许开发者在本地完整克隆代码仓库,支持离线工作、分支创建与合并,并可通过远程仓库(如 GitHub、GitLab、Gitee)进行协作。
2. 语法格式
Git 的基本命令格式如下:
git [--version] [--help] [-C <path>] [-c <name>=<value>] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path] [-p | --paginate | --no-pager] [--no-replace-objects] [--bare] [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>] <command> [<args>]
在日常使用中,常采用简化格式:
git <子命令> [选项] [参数]
3. 常用选项及说明
全局选项
选项 | 说明 |
|---|---|
--version | 显示 Git 版本信息。 |
--help | 显示 Git 或特定子命令的帮助信息。 |
-C <path> | 在开始 Git 命令前,切换到指定的路径 <path>。 |
-c <name>=<value> | 为本次命令执行临时设置一个配置参数。 |
--git-dir=<path> | 指定 Git 仓库的路径(即 .git 目录)。 |
--work-tree=<path> | 指定工作区(工作树)的路径。 |
核心子命令
命令 | 说明 |
|---|---|
init | 在当前目录初始化一个新的 Git 仓库。 |
clone | 克隆(下载)一个远程仓库到本地。 |
add | 将工作区的文件更改添加到暂存区。 |
commit | 将暂存区的更改提交到本地仓库,创建一个新的版本记录。 |
status | 查看工作区和暂存区的当前状态。 |
push | 将本地提交推送到远程仓库。 |
pull | 从远程仓库拉取更新并合并到当前分支(相当于 fetch + merge)。 |
fetch | 从远程仓库下载最新的提交历史和文件,但不自动合并。 |
branch | 管理分支,包括创建、列出、重命名、删除等。 |
checkout | 切换分支,或恢复工作区的文件到某个版本。 |
merge | 将一个分支的更改合并到当前分支。 |
rebase | 变基,一种整合分支更改的替代方法,可以创造更线性的提交历史。 |
log | 查看提交历史记录。 |
diff | 显示工作区、暂存区或不同提交之间的差异。 |
stash | 临时保存工作区和暂存区的修改,以便清理状态进行其他操作。 |
tag | 管理标签,常用于标记发布版本。 |
remote | 管理远程仓库的连接。 |
config | 查看或设置 Git 的配置信息。 |
4. 示例用法
4.1 仓库初始化与克隆
初始化新仓库:
git init git init my-project
克隆远程仓库:
git clone https://github.com/user/repo.git git clone https://github.com/user/repo.git my-local-name git clone git@github.com:user/repo.git # SSH方式
4.2 基本工作流程
查看状态:
git status git status -s # 简洁模式
添加文件到暂存区:
git add file.txt git add . # 添加所有更改 git add *.js # 添加所有js文件
提交更改:
git commit -m "添加新功能" git commit -am "直接提交已跟踪文件" # 对已跟踪文件,跳过`git add`步骤
查看提交历史:
git log git log --oneline --graph --all # 图形化简洁显示 git log -p file.txt # 查看特定文件的历史及差异
4.3 分支管理
创建和切换分支:
git branch feature-x # 创建分支 git checkout feature-x # 切换分支 git checkout -b feature-x # 创建并切换到该分支
查看分支:
git branch # 本地分支 git branch -r # 远程分支 git branch -a # 所有分支(本地+远程)
合并分支:
git checkout main git merge feature-x
删除分支:
git branch -d feature-x # 安全删除(分支已合并) git branch -D feature-x # 强制删除(分支未合并)
4.4 远程操作
添加远程仓库:
git remote add origin https://github.com/user/repo.git
查看远程仓库:
git remote -v
推送代码:
git push origin main git push -u origin main # 设置上游分支,后续可简化命令
拉取更新:
git pull origin main git pull --rebase origin main # 使用变基方式拉取,保持历史线性
获取远程更新(不合并):
git fetch origin
4.5 撤销与恢复
撤销工作区修改:
git checkout -- file.txt
撤销暂存区文件(取消`git add`):
git reset HEAD file.txt
修改最后一次提交:
git commit --amend -m "新的提交信息"
回退到指定提交:
git reset --soft HEAD~1 # 回退提交,但保留工作区和暂存区的修改 git reset --hard HEAD~1 # 彻底回退,丢弃工作区和暂存区的修改(谨慎使用)
恢复已删除的分支:
git reflog # 查看所有操作记录,找到分支最后的提交哈希 git checkout -b recovered-branch <commit-hash>
4.6 标签管理
创建标签:
git tag v1.0.0 # 轻量标签 git tag -a v1.0.0 -m "版本1.0.0发布" # 附注标签
查看标签:
git tag git show v1.0.0
推送标签:
git push origin v1.0.0 git push origin --tags # 推送所有本地标签
删除标签:
git tag -d v1.0.0 # 删除本地标签 git push origin --delete v1.0.0 # 删除远程标签
4.7 配置设置
用户配置:
git config --global user.name "Your Name" git config --global user.email "your@email.com"
查看配置:
git config --list git config user.name
设置编辑器:
git config --global core.editor "vim"
设置别名:
git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status
5. 注意事项
强制推送风险:git push -f 或 git push --force 会覆盖远程仓库的历史记录,如果其他人基于旧历史进行了工作,可能导致严重的协作问题。仅在确定需要时(如修复私有分支历史)使用,并提前与团队沟通。
敏感信息保护:切勿将密码、API密钥、私钥等敏感信息提交到 Git 仓库。一旦提交,即使后续删除,也可能在历史记录中残留。建议使用 .gitignore 文件忽略敏感文件,或使用专门的密钥管理工具。
大文件处理:Git 主要设计用于管理文本文件(如源代码),对于二进制大文件(如图片、视频、编译产物)的版本控制效率较低,可能导致仓库体积暴增。建议使用 Git LFS(Large File Storage)扩展或将其存放在专门的制品库中。
提交信息规范:撰写清晰、有意义的提交信息,有助于团队协作和日后追溯。第一行作为简短摘要,空一行后补充详细描述。
分支命名约定:团队应建立统一的分支命名规范(如 feature/xxx, bugfix/xxx, release/xxx),以便清晰识别分支目的。
定期同步:在开始新工作前,使用 git pull 或 git fetch 同步远程最新更改,避免合并时产生过多冲突。
获取更多Linux学习资料请关注“阿成学长工具包”,对话框中输入2647获取