当前位置: 首页 > news >正文

Git 命令大全:从基础到高级操作

Git 是一个分布式版本控制系统,广泛用于代码管理、协作开发和版本控制。以下是 Git 的所有核心命令及其详细说明,涵盖 基础操作、分支管理、远程操作、撤销修改、高级操作 等场景。


一、基础操作

1. 初始化仓库

  • 用途:创建一个新的 Git 仓库。
  • 命令
git init
  • 案例
# 在项目目录下初始化 Git 仓库
cd my-project
git init

2. 查看仓库状态

  • 用途:查看当前工作区、暂存区和提交历史的状态。
  • 命令
git status
  • 案例
# 查看哪些文件被修改但未提交
git status

3. 添加文件到暂存区

  • 用途:将工作区的文件添加到暂存区(Staging Area)。
  • 命令
git add <文件名># 添加单个文件
git add .# 添加所有文件
  • 案例
# 添加 README.md 到暂存区
git add README.md

4. 提交更改

  • 用途:将暂存区的更改提交到本地仓库。
  • 命令
git commit -m "提交信息"
  • 案例
# 提交 README.md 的修改
git commit -m "Update README with project description"

5. 查看提交历史

  • 用途:查看提交记录。
  • 命令
git log
  • 案例
# 查看最近 3 条提交记录
git log -3

二、分支管理

1. 查看分支

  • 用途:列出当前仓库的所有分支。
  • 命令
git branch
  • 案例
# 查看本地分支
git branch

2. 创建分支

  • 用途:创建一个新分支。
  • 命令
git branch <分支名>
  • 案例
# 创建名为 feature-login 的分支
git branch feature-login

3. 切换分支

  • 用途:切换到指定分支。
  • 命令
git checkout <分支名>
  • 案例
# 切换到 feature-login 分支
git checkout feature-login

4. 合并分支

  • 用途:将指定分支的更改合并到当前分支。
  • 命令
git merge <分支名>
  • 案例
# 切换到 main 分支并合并 feature-login 的更改
git checkout main
git merge feature-login

5. 删除分支

  • 用途:删除本地或远程分支。
  • 命令
git branch -d <分支名># 删除本地分支
git push origin --delete <分支名># 删除远程分支
  • 案例
# 删除本地的 feature-login 分支
git branch -d feature-login# 删除远程的 feature-login 分支
git push origin --delete feature-login

三、远程操作

1. 关联远程仓库

  • 用途:将本地仓库与远程仓库(如 GitHub)关联。
  • 命令
git remote add origin <远程仓库URL>
  • 案例
# 关联 GitHub 仓库
git remote add origin https://github.com/username/repo.git

2. 推送代码到远程仓库

  • 用途:将本地提交推送到远程仓库。
  • 命令
git push -u origin <分支名>
  • 案例
# 首次推送 main 分支
git push -u origin main

3. 拉取远程仓库代码

  • 用途:从远程仓库拉取最新代码。
  • 命令
git pull origin <分支名>
  • 案例
# 拉取 main 分支的最新代码
git pull origin main

4. 查看远程仓库信息

  • 用途:查看当前关联的远程仓库。
  • 命令
git remote -v
  • 案例
# 查看远程仓库地址
git remote -v

四、撤销修改

1. 撤销工作区修改

  • 用途:丢弃工作区的修改。
  • 命令
git restore <文件名>
  • 案例
# 撤销 README.md 的修改
git restore README.md

2. 撤销暂存区修改

  • 用途:将文件从暂存区移回工作区。
  • 命令
git restore --staged <文件名>
  • 案例
# 撤销 README.md 的暂存
git restore --staged README.md

3. 撤销提交

  • 用途:撤销最近的一次提交(保留更改)。
  • 命令
git reset --soft HEAD~1
  • 案例
# 撤销最近一次提交,但保留更改
git reset --soft HEAD~1

4. 撤销提交并删除更改

  • 用途:撤销提交并丢弃更改。
  • 命令
git reset --hard HEAD~1

五、高级操作

1. 重写历史(rebase)

  • 用途:将当前分支的提交历史合并到另一个分支上。
  • 命令
git rebase <分支名>
  • 案例
# 将 feature-login 的提交合并到 main 分支上
git checkout feature-login
git rebase main

2. 应用特定提交(cherry-pick)

  • 用途:将某个提交应用到当前分支。
  • 命令
git cherry-pick <提交哈希>
  • 案例
# 应用提交 abc1234
git cherry-pick abc1234

3. 暂存修改(stash)

  • 用途:临时保存未提交的修改。
  • 命令
git stash
git stash apply
  • 案例
# 暂存修改
git stash# 切换分支后恢复修改
git stash apply

4. 标签管理

  • 用途:为特定提交打标签(如版本号)。
  • 命令
git tag <标签名># 创建标签
git push origin <标签名># 推送标签到远程
  • 案例
# 为最新提交打标签 v1.0
git tag v1.0# 推送标签到远程仓库
git push origin v1.0

5. 子模块管理

  • 用途:将外部仓库作为子模块嵌入当前项目。
  • 命令
git submodule add <仓库URL># 添加子模块
git submodule update --init# 初始化子模块

六、配置与用户管理

1. 配置用户名和邮箱

  • 用途:设置提交者身份信息。
  • 命令
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

2. 查看配置

  • 用途:查看当前 Git 配置。
  • 命令
git config --list

3. 设置默认编辑器

  • 用途:修改 Git 使用的编辑器(如 Vim、Nano)。
  • 命令
git config --global core.editor "code --wait"# 使用 VS Code

七、常见问题与解决方案

1. 解决冲突

  • 场景:多人协作时,同一文件的修改发生冲突。
  • 解决步骤
  1. 手动编辑冲突文件,保留需要的代码。
  2. 添加文件到暂存区并提交:
git add <冲突文件>
git commit -m "Resolve conflict"

2. 强制推送

  • 用途:覆盖远程仓库的历史(慎用!)。
  • 命令
git push -f origin <分支名>

八、附录:常用命令速查表

命令用途
git init初始化仓库
git status查看状态
git add添加文件到暂存区
git commit提交更改
git branch查看分支
git checkout切换分支
git merge合并分支
git push推送代码
git pull拉取代码
git log查看提交历史
git stash暂存修改
git tag管理标签
git rebase重写历史
git cherry-pick应用特定提交

通过以上命令和案例,可以全面掌握 Git 的使用,适用于日常开发、团队协作和版本管理。对于更复杂的场景(如子模块、标签管理等),可进一步参考 Git 官方文档或高级教程。

http://www.dtcms.com/a/588940.html

相关文章:

  • Git_Rebase
  • 【深度学习|学习笔记】异常检测概论 — 从经典算法到深度学习(含实用 Python 示例)
  • 如何建立一个视频网站html5 手机网站页面实例
  • FlutterPlugin接口实现与插件架构设计
  • 图漾GM461-E1相机专栏
  • Flutter与鸿蒙原生MethodChannel通信机制深度解析
  • Navigation2 行为树架构源码级分析与设计原理
  • 基于时频域霍夫变换的汽车雷达互干扰抑制——论文阅读
  • 贵阳网站建设建站系统怎么找网站是由什么建的
  • 一本通网站1128题:图像模糊处理
  • DrissionPage遇到iframe
  • 基于信号分解的FMCW雷达相互干扰抑制——论文阅读
  • 未来的一些想法和规划
  • 线代强化NO3|线性方程组|特征值和特征向量|矩阵的相似性|实对称矩阵|二次型
  • K8S RD: Docker与Kubernetes运维核心技术整合指南
  • PERL Docker 容器化部署指南
  • root@lll:/data# sudo docker compose up -d 输入这个命令 控制台一直没有任何的反应 我需要如何排查呢?
  • 佛山白坭网站建设wordpress加密修改密码
  • 网站主体必须要与域名注册人相同医院做网站的意义
  • tcprewrite使用方法
  • Rust 练习册 :探索三角形的几何世界
  • SPT:选择性提示调优——让模型自动学习最佳提示插入策略
  • 【Linux篇】信号从哪来?到哪去?—— Linux信号的产生方式与保存机制
  • linux服务-firewalld原理及示例详解
  • 数学基础---四元数
  • 《jQuery Prettydate》深入解析与应用
  • 开发公司自己买自己的商品房西安seo外包机构
  • 【数据结构】单调栈(模板 + 练习)
  • 整体设计 全面梳理复盘 之26 九宫格框架与一体化开发 编程 之5
  • LeetCode算法学习之有效的字母异位词