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

Git 常用命令及其使用场景

Git 常用命令及其使用场景

Git 是分布式版本控制系统,以下是常用命令及其典型使用场景:


1. 基础操作命令

命令描述使用场景
git init初始化一个新的 Git 仓库新建项目并开始使用 Git 进行版本控制时。
git clone <repo_url>克隆远程仓库到本地获取已有的 Git 仓库到本地进行开发。
git status查看当前工作区状态检查是否有修改、添加或删除文件的操作未提交。
git log查看提交历史查看项目的历史变更记录或追踪特定的提交。
git diff查看文件更改比较工作区与暂存区之间的差异,检查修改内容。

2. 分支管理命令

命令描述使用场景
git branch列出分支或创建新分支创建新功能分支或查看当前分支状态。
git checkout <branch>切换到指定分支在不同功能分支之间切换开发环境。
git checkout -b <branch>创建并切换到新分支在新功能开发前快速创建分支并切换到该分支。
git merge <branch>合并指定分支到当前分支完成某一功能开发后将其合并到主分支或开发分支。
git rebase <branch>将当前分支的提交应用到指定分支的最新提交上清理历史提交记录,创建更整洁的提交历史。

3. 提交操作命令

命令描述使用场景
git add <file>将文件添加到暂存区准备提交修改的文件到仓库。
git commit -m <msg>提交暂存区的文件并添加提交说明将本次修改记录为一次提交,并添加描述。
git commit --amend修改最后一次提交修正提交说明或增加遗漏的文件到上一次提交中。

4. 远程操作命令

命令描述使用场景
git remote add <name> <url>添加远程仓库配置项目关联的远程仓库,如 GitHub 或 GitLab。
git fetch <remote>获取远程仓库的最新信息同步远程分支的信息到本地,不影响工作区。
git pull <remote> <branch>拉取远程分支的最新代码将远程仓库的更新合并到本地分支,保持同步。
git push <remote> <branch>推送本地分支到远程仓库上传本地的改动到远程仓库,完成协作提交。

5. 恢复和撤销操作命令

命令描述使用场景
git reset <file>取消文件的暂存状态将已暂存的文件撤回到工作区。
git checkout -- <file>撤销工作区文件的修改放弃未暂存的改动,还原为上一次提交的状态。
git revert <commit>反转指定提交撤销某次提交的改动,同时保留历史记录。
git stash保存当前工作区状态临时保存当前工作内容,便于切换分支或进行其他操作。
git stash pop恢复最近一次保存的工作区状态继续之前中断的开发任务。

6. 标签管理命令

命令描述使用场景
git tag <tag>创建标签标记特定的提交点(如版本发布)。
git show <tag>查看标签信息查看某个标签对应的提交记录。
git push <remote> <tag>推送标签到远程仓库将本地创建的标签发布到远程仓库中。

案例分析

案例 1:多人协作开发
  1. 拉取代码: git pull origin main
  2. 创建功能分支: git checkout -b feature-login
  3. 开发与提交:
    • 添加文件:git add .
    • 提交代码:git commit -m "Add login feature"
  4. 推送到远程: git push origin feature-login
  5. 合并分支: 提交合并请求,代码审查通过后 git merge feature-login
案例 2:修复线上紧急问题
  1. 创建热修复分支: git checkout -b hotfix-issue123 main
  2. 修复代码并提交:
    • 添加文件:git add .
    • 提交修改:git commit -m "Fix critical issue #123"
  3. 推送到远程: git push origin hotfix-issue123
  4. 发布修复版本: 创建标签 git tag v1.0.1 并推送。

通过合理使用 Git 的命令和策略,可以高效管理代码版本,提升团队协作效率。


http://www.kler.cn/a/471298.html

相关文章:

  • 从Linux本地软件存储库安装MySQL
  • nginx-灰度发布策略(基于cookie)
  • ros2-4.1 服务通信介绍
  • patchwork++地面分割学习笔记
  • Elasticsearch:优化的标量量化 - 更好的二进制量化
  • 微信小程序中使用 TypeScript 定义组件时,Component 函数确实需要多个类型参数
  • RabbitMQ ubuntu 在线安装
  • _decl_class_registry 与 metadata.sorted_tables的区别
  • 以柔资讯-D-Security终端文件保护系统 logFileName 任意文件读取漏洞复现
  • 机器学习——线性回归
  • 运动相机拍摄的视频打不开怎么办
  • 如何解决Redis中的热点key问题
  • Microsoft Azure Cosmos DB:全球分布式、多模型数据库服务
  • 设计模式--享元模式【结构型模式】
  • 【python】字符串元素的访问与截取
  • QT c++ 自定义按钮类 加载图片 美化按钮
  • LeetCode 3019.按键变更的次数:遍历(转小写)
  • selenium找不到元素解决方案-切换iframe
  • Bash语言的文件操作
  • HTML5-标签
  • Swin-Transformer
  • Web渗透测试之XSS跨站脚本攻击分类 详解
  • Effective C++读书笔记——item11(自赋值)
  • Python中判断语句及循环语句练习
  • 对于安装完服务后,无法执行命令的问题处理
  • 行为树详解(6)——黑板模式