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

git基础命令

Git是一个分布式版本控制系统,简单的说其就是一个软件,用于记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的软件。

核心功能

  1. 版本追踪:Git 能够精准记录文件内容的每次变更,为每个版本创建唯一的标识(哈希值),从而实现对项目历史的完整追溯。
  2. 分支管理:它支持创建多个独立的开发分支,开发人员可以在不同分支上并行开展功能开发或者进行问题修复,之后再将这些分支合并到主分支。
  3. 分布式协作:项目仓库可以被克隆到本地,开发者在本地进行独立开发,完成后再将修改推送到远程仓库,极大地便利了团队协作。
  4. 内容完整性:Git 通过 SHA-1 哈希算法确保数据在传输和存储过程中的完整性,有效防止文件被意外修改。
git config --global user.name "用户名"
git config --global user.email "邮箱地址"git config --list         # 查看所有配置
git config user.name      # 查看特定配置
git checkout .

具体作用阐释

  1. 撤销未暂存的修改:要是你对某些文件进行了修改,不过还没执行 git add 操作,那么使用这个命令之后,这些修改就会被全部丢弃,文件会回到最后一次提交时的状态。
  2. 不会影响已暂存的文件:要是你已经通过 git add 把修改添加到了暂存区,或者使用 git commit 进行了提交,那么这些内容不会受到该命令的影响。
  3. 不会删除新创建的文件:这个命令只会对那些 Git 已经进行跟踪的文件起作用,新创建的文件(也就是未被跟踪的文件)不会被删除。要是你想删除这些未被跟踪的文件,可以搭配使用 git clean 命令。
git diff              # 对比工作区 vs 暂存区
git diff -- <file>    # 只查看指定文件的差异git diff --staged     # 对比暂存区 vs 最后一次提交git diff <commit1> <commit2>         # 对比两次提交
git diff <commit1> <commit2> -- <file> # 对比两次提交中指定文件的差异
# 例如
git diff HEAD~2 HEAD    #  查看当前提交(HEAD)与前两次提交之间的差异。
git diff abc123 def456  #  查看提交 abc123 和 def456 之间的差异。git diff branch1 branch2       # 对比两个分支
git diff branch1..branch2      # 查看两个分支的差异
git diff branch1 branch2 -- path/to/file # 查看特定文件差异
git diff branch1...branch2     # 查看两个分支的共同祖先之后的差异git diff <commit>^ <commit>         # 查看某次提交引入的修改
# 例如
git diff abc123^ abc123  # 查看提交 abc123 带来的具体修改内容。

git diff 主要用于对比不同版本之间的文件差异,这些版本可以是工作区、暂存区、本地仓库或者远程仓库中的版本。

选项:

--name-only:只显示有差异的文件名称,不显示具体的修改内容。

--color-words:以单词为单位显示差异,便于查看细微的修改。

-p:显示详细的补丁内容,这是默认选项。

--stat:显示差异的统计信息,例如有多少文件被修改、添加或删除了多少行。

--cached:与 --staged 作用相同,用于查看暂存区与最新提交之间的差异。

git diff --name-only
git diff --color-words
git diff --stat
命令对比对象
git diff工作区 vs 暂存区
git diff --staged暂存区 vs 最新提交
git diff HEAD工作区 vs 最新提交
git diff branch1 branch2两个分支的最新提交
git diff commit1 commit2两次提交之间的差异

$ git version   # 查看git的版本信息$ git status    # 查看git的状态信息$ git branch    # 查看本地分支列表$ git diff      # 查看工作区与暂存区之间的差异$ git checkout  # 用于切换分支或者恢复工作树文件$ git checkout . # 撤销工作目录里所有已修改但尚未暂存的文件$ git log       # 查看提交历史记录$ git help <command> # 可查看具体命令的帮助文档$ 加上 --global 参数的配置会应用到所有仓库$ git push       # 把本地仓库的提交推送到远程仓库$ git pull       # 从远程仓库拉取最新内容并合并到本地分支

    一、仓库基础操作

    git init                # 在当前目录初始化本地仓库
    git clone <url>         # 克隆远程仓库到本地
    git remote add origin <url> # 添加远程仓库
    git fetch               # 获取远程仓库更新
    git pull                # 获取并合并远程更新
    git push                # 推送本地提交到远程

    二、日常开发流程

    git status              # 查看文件状态
    git add <file>          # 添加文件到暂存区
    git add .               # 添加所有修改到暂存区
    git commit -m "msg"     # 提交暂存区到本地仓库,并附上提交说明
    git commit --amend      # 修改最后一次提交
    git diff                # 查看工作区与暂存区差异
    git diff --staged       # 查看暂存区与最新提交差异

    三、分支管理

    git branch              # 查看本地分支
    git branch -r           # 查看远程分支
    git branch -a           # 查看所有分支
    git branch <name>       # 创建新分支
    git checkout <name>     # 切换分支
    git checkout -b <name>  # 创建并切换到新分支
    git merge <name>        # 合并指定分支到当前分支
    git branch -d <name>    # 删除分支(已合并)
    git branch -D <name>    # 强制删除分支

    四、提交历史

    git log                 # 查看提交历史
    git log --oneline       # 简洁历史
    git log -p <file>       # 查看文件修改历史
    git blame <file>        # 查看文件每行的最后修改者

    五、撤销与回滚

    git reset <file>        # 取消暂存文件
    git reset --hard HEAD   # 丢弃所有本地修改
    git revert <commit>     # 撤销指定提交(创建新提交)
    git checkout -- <file>  # 恢复文件到上次提交状态git reset --hard HEAD~1   # 回退到上一个提交版本
    git revert HEAD           # 创建一个新提交来撤销上一个提交# git restore——Git 2.23 版本后引入的命令,用于恢复文件或切换分支(替代部分git checkout的功能)。git restore --worktree --staged <file>  # 同时恢复工作区和暂存区git restore <file>  # 丢弃文件在工作区的修改
    git restore .       # 丢弃所有未提交的修改git add .           # 误添加了某些文件
    git restore --staged <file>  # 取消暂存,但保留工作区修改git restore --source=HEAD~1 <file>  # 恢复文件到上一个提交版本git restore --worktree --staged <file>  # 同时恢复工作区和暂存区# 与git checkout的区别
    git checkout # 同时支持切换分支和恢复文件,容易混淆功能
    git restore  # 专门用于文件恢复操作,职责更清晰

    六、标签操作

    git tag <name>          # 创建轻量标签    git tag v1.0.0
    git tag -a <name> -m "" # 创建带注释标签  git tag -a v1.0.0 -m ""
    git tag                 # 查看所有标签
    git push origin <tag>   # 推送标签到远程  git push origin v1.0.0

    七、高级技巧

    git stash               # 保存并隐藏当前修改
    git stash pop           # 恢复最近一次存储的工作进度(stash),并删除该 stash 记录。
    git rebase <branch>     # 变基(线性提交历史)
    git cherry-pick <commit> # 应用指定提交到当前分支
    git bisect              # 二分查找定位问题提交git stash list          # 查看暂存stash列表
    git stash apply         # 恢复最近一次存储的工作进度(stash),但保留该 stash 记录。
    git stash drop          # 删除最近一次暂存stash
    git stash clear         # 删除所有stash# 变基
    git reset --hard HEAD~1   # 回退到上一个提交版本
    git revert HEAD           # 创建一个新提交来撤销上一个提交
    命令是否删除 stash常用场景
    git stash pop✅ 是恢复后不再需要该 stash
    git stash apply❌ 否需要多次恢复或保留备份
    主要功能是否影响提交历史适用场景
    git stash pop/apply临时保存 / 恢复工作进度❌ 否暂存未完成的修改,不提交到仓库
    git restore恢复文件到指定状态❌ 否丢弃修改、取消暂存、回退文件版本

    八、配置相关

    git config --global user.name "Name" # 设置用户名
    git config --global user.email "email" # 设置邮箱
    git config --list           # 查看配置
    git config --global alias.co checkout # 设置别名

    九、远程仓库

    git remote -v             # 查看远程仓库信息
    git remote add <name> <url> # 添加远程仓库
    git push origin <branch>  # 推送分支到远程
    git push origin --delete <branch> # 删除远程分支

    十、子模块

    git submodule add <url> <path> # 添加子模块
    git submodule init            # 初始化子模块
    git submodule update          # 更新子模块

    十一、常见工作流

    1. 集中式工作流
    git clone <远程仓库>
    # 开发新功能
    git checkout -b feature-x
    git add .
    git commit -m "完成功能x"
    git push origin feature-x
    # 创建Pull Request并合并到master
    2. Git Flow 工作流
    git flow feature start x  # 创建功能分支
    git flow feature finish x # 完成功能分支
    git flow release start v1.0 # 创建发布分支
    git flow hotfix start bugfix # 创建紧急修复分支

    十二、常见错误处理

    1. 合并冲突解决
    git merge branch-x        # 发生冲突
    # 手动编辑冲突文件
    git add .
    git commit                # 完成合并
    2. 误提交敏感信息
    # 1. 删除文件并提交
    git rm --cached sensitive.txt
    git commit -m "移除敏感文件"# 2. 彻底删除历史记录(谨慎操作)
    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch sensitive.txt' --prune-empty --tag-name-filter cat -- --all


    git reset 和 git restore 的功能、用法及区别:

    一、核心功能对比

    命令主要用途
    git reset重置 HEAD 和分支位置,可选择性修改工作区和暂存区(可能丢失数据
    git restore恢复文件到指定状态(如 HEAD 或暂存区),不改变提交历史

    二、git reset 详解

    1. 三种模式
    git reset --soft <commit>    # 仅移动HEAD,保留暂存区和工作区
    git reset --mixed <commit>   # 移动HEAD并重置暂存区,保留工作区(默认模式)
    git reset --hard <commit>    # 移动HEAD、重置暂存区和工作区(**危险:可能丢失未提交数据**)
    2. 常用场景
    • 撤销最近一次提交,但保留修改
    git reset --soft HEAD~1     # 回退到上一个提交,修改保留在暂存区
    • 取消暂存文件
    git reset <file>           # 等价于 git restore --staged <file>
    • 彻底丢弃本地修改
    git reset --hard HEAD      # 丢弃所有未提交的修改(工作区和暂存区)

    三、git restore 详解

    1. 恢复文件到指定状态
    git restore <file>          # 丢弃工作区修改(恢复到暂存区状态)
    git restore --source=<commit> <file>  # 恢复文件到指定提交版本
    2. 单独操作暂存区
    git restore --staged <file> # 取消暂存(等价于 git reset <file>)
    3. 同时恢复工作区和暂存区
    git restore --worktree --staged <file>  # 从HEAD恢复文件的两个区域

    四、命令对比表

    操作场景git reset 命令git restore 命令
    取消文件暂存git reset <file>git restore --staged <file>
    丢弃工作区修改git reset --hard HEAD <file>git restore <file>
    恢复文件到历史版本git reset --hard <commit> <file>git restore --source=<commit> <file>
    回退整个分支(危险操作)git reset --hard <commit>不支持(需用 git branch -f

    五、关键区别总结

    1. 对提交历史的影响

      • git reset:可修改提交历史(如回退到旧提交)
      • git restore从不修改提交历史,仅操作文件
    2. 数据安全性

      • git reset --hard:可能永久丢失未提交数据
      • git restore:更安全,仅恢复到已知状态
    3. 设计目标

      • git reset:主要用于分支操作(移动 HEAD)
      • git restore:专门用于文件恢复(拆分自 git checkout

    六、最佳实践建议

    1、取消暂存文件

    # 推荐使用:
    git restore --staged <file>  # 语义明确,避免混淆

    2、丢弃工作区修改

    # 推荐使用:
    git restore <file>           # 更安全,不涉及提交历史

    3、回退分支(谨慎操作)

    # 仅在确定需要修改提交历史时使用:
    git reset --hard <commit>

    七、补充说明

    1. Git 版本兼容性

      • git restore 是 Git 2.23+ 引入的命令,旧版本需使用 git checkout
    2. 结合使用示例

    # 场景:误提交了敏感信息到本地仓库,但未push
    git reset --soft HEAD~1     # 回退提交,保留修改
    git restore sensitive.txt   # 丢弃敏感文件的修改
    git add .
    git commit -m "修正:移除敏感信息"


    文章转载自:
    http://alphonse.wanhuigw.com
    http://bhakta.wanhuigw.com
    http://cabrite.wanhuigw.com
    http://airwave.wanhuigw.com
    http://astrolithology.wanhuigw.com
    http://agaric.wanhuigw.com
    http://cephalometer.wanhuigw.com
    http://atmometry.wanhuigw.com
    http://blare.wanhuigw.com
    http://anonychia.wanhuigw.com
    http://bicorn.wanhuigw.com
    http://charlottetown.wanhuigw.com
    http://americanization.wanhuigw.com
    http://candlepin.wanhuigw.com
    http://boina.wanhuigw.com
    http://blove.wanhuigw.com
    http://acidness.wanhuigw.com
    http://caprice.wanhuigw.com
    http://chancellorship.wanhuigw.com
    http://bullfinch.wanhuigw.com
    http://candidly.wanhuigw.com
    http://bookie.wanhuigw.com
    http://ballcarrier.wanhuigw.com
    http://carp.wanhuigw.com
    http://actinide.wanhuigw.com
    http://buy.wanhuigw.com
    http://autolysis.wanhuigw.com
    http://bilingual.wanhuigw.com
    http://acuity.wanhuigw.com
    http://browser.wanhuigw.com
    http://www.dtcms.com/a/281579.html

    相关文章:

  • Redis学习系列之——Redis Stack 拓展功能
  • 为什么市场上电池供电的LoRa DTU比较少?
  • redisson tryLock
  • React源码5 三大核心模块之一:render,renderRoot
  • MMYSQL刷题
  • 北京-4年功能测试2年空窗-报培训班学测开-第五十一天
  • Typecho插件开发:优化文章摘要处理短代码问题
  • 【跟我学YOLO】(2)YOLO12 环境配置与基本应用
  • PID(进程标识符,Process Identifier)是什么?
  • Markdown编辑器--editor.md的用法
  • GTSuite许可管理
  • 学习日志10 python
  • 【鲲苍提效】全面洞察用户体验,助力打造高性能前端应用
  • JAVA青企码协会模式系统源码支持微信公众号+微信小程序+H5+APP
  • vlan作业
  • CommunityToolkit.Mvvm IOC 示例
  • 【Java】JUC并发(线程的方法、多线程的同步并发)
  • 定时器更新中断与串口中断
  • ArrayList列表解析
  • GCC属性修饰符__attribute__((unused))用途
  • 2025国自然青基、面上资助率,或创新低!
  • IPSec和HTTPS对比(一)
  • Java使用itextpdf7生成pdf文档
  • GAMES101 lec1-计算机图形学概述
  • 前端-CSS-day4
  • 边缘计算中模型精度与推理速度的平衡策略及硬件选型
  • 实战长尾关键词SEO优化指南提升排名
  • Go语言调度器深度解析:sysmon的核心作用与实现原理
  • Web3.0 学习方案
  • ROS第十五梯:launch进阶用法——conda自启动和多终端多节点运行