IDEA 中常用操作记载

IDEA 中常用操作记载

  • git
    • [git pull/git fetch](#git pull/git fetch)
      • [1. `git fetch` ------ 只下载,不改动](#1. git fetch —— 只下载,不改动)
      • [2. `git pull` ------ 下载 + 合并](#2. git pull —— 下载 + 合并)
    • [git merge 和 git rebase](#git merge 和 git rebase)
      • [核心操作:git rebase(重点)](#核心操作:git rebase(重点))
      • [其他常用 Git 操作速查](#其他常用 Git 操作速查)
    • [git cherry-pick](#git cherry-pick)
    • 二级目录

git

git pull/git fetch

1. git fetch ------ 只下载,不改动

bash 复制代码
git fetch origin           # 下载远程所有分支的更新
git fetch origin main      # 只下载远程 main 分支

作用 :从远程仓库下载最新的提交、分支、标签 到本地的"远程跟踪分支"(如 origin/main),但完全不改动你当前的工作区分支、暂存区和本地分支。

特点

  • 绝对安全:随便执行,不会产生冲突,也不会丢失本地改动
  • 👀 让你先"看看"远程有什么新东西,再决定是否合并
  • 通常作为 git pull 的前置步骤,或者用于 git diff origin/main 对比差异

2. git pull ------ 下载 + 合并

bash 复制代码
git pull origin main       # 等价于:git fetch origin main + git merge origin/main
git pull --rebase origin main   # 等价于:git fetch + git rebase(推荐,历史更干净)

作用 :先 fetch 下载远程更新,然后立即将远程分支合并(或变基)到当前本地分支

特点

  • ⚠️ 可能产生冲突:如果本地有未推送的提交,且和远程改动改了同一处,就会冲突,需要手动解决
  • 🤖 一步到位,省事但风险稍高
  • 建议使用 git pull --rebase 替代默认的 git pull,避免产生多余的合并提交

git merge 和 git rebase

合并、变基或挑拣以应用更改

git merge 会产生一个合并提交 commit, git rebase 会将你改动的 commit,放到 rebase 分支的最新的 commit之后。

核心操作:git rebase(重点)

简单说,git rebase 就是把一串提交"搬家"到另一个基点上,主要是为了让提交历史更干净、线性 ,而不是像 git merge 那样会产生分叉。

它最常见的用法有两类:

  • 更新分支(同步主分支):在功能分支上开发时,用它把主分支的新提交接过来,避免后面合并时出现杂乱的"合并提交"。

    bash 复制代码
    # 先切换到你的功能分支,然后变基到 main 分支的最新提交上
    git checkout feature-branch
    git rebase main
  • 整理历史(交互式变基):这是你笔记里提到的核心用法,用来合并、修改或删除最近的几个提交。比如想整理最近 3 个提交:

    bash 复制代码
    git rebase -i HEAD~3

    在打开的编辑器里,把想合并的提交前面的 pick 改成 squash(或 s),保存就行。

⚠️ 黄金法则永远不要对已经推送到公共仓库、别人可能正在使用的分支执行变基。因为变基会重写提交历史,会给团队协作带来大麻烦。


其他常用 Git 操作速查

1. 提交与修改

  • git commit --amend:修改最近一次提交的 message 或内容(未推送前使用)。
  • git reset HEAD~1:撤销最近一次提交,但保留改动在本地(谨慎使用 --hard 参数,它会彻底丢弃改动)。

2. 差异对比

  • git diff:工作区 vs 暂存区(你笔记里提过)。
  • git diff --cached--staged:暂存区 vs 最新提交 (HEAD)。
  • git diff HEAD:工作区 vs 最新提交。

3. 分支与合并

  • git branch -d <分支名>:删除本地已合并的分支。
  • git merge <分支名>:将指定分支合并到当前分支(会产生一个合并提交)。

4. 远程同步

  • git pull --rebase:拉取远程更新,并用 rebase 方式将本地提交接到最新历史后面,可避免产生合并提交。

git cherry-pick

一个非常实用的命令,它的作用是把某个分支上的一个或多个特定提交,复制到当前分支上来。相当于"精准捡漏",只挑你需要的提交,而不合并整个分支


常用场景

  1. 紧急修复 :比如你在 develop 分支修了个 Bug,但 main 生产分支急着要,直接合并整个 develop 太危险,只把那个 Bug 修复的提交挑过来就行。
  2. 跨分支同步:不同分支之间只想复用某几个提交的内容。
  3. 撤销重做 :不小心在错误分支上提交了,可以用 cherry-pick 把它移到正确分支。

基本用法

bash 复制代码
# 拣选单个提交(复制到当前分支)
git cherry-pick <commit-hash>

# 拣选多个提交(按顺序应用)
git cherry-pick <hash1> <hash2> <hash3>

# 拣选一个连续范围(不包含 hash1,包含 hash2)
git cherry-pick <hash1>..<hash2>

# 拣选时只把改动加入暂存区,但不自动提交(方便手动调整)
git cherry-pick -n <commit-hash>   # -n 是 --no-commit 的简写

处理冲突

merge/rebase 一样,cherry-pick 也可能冲突。解决完冲突后:

bash 复制代码
# 手动解决冲突文件,然后:
git add .
git cherry-pick --continue   # 继续完成拣选

如果想放弃本次拣选:

bash 复制代码
git cherry-pick --abort

与 rebase 的关联

你关心的 rebasecherry-pick 其实有深层联系------rebase 底层机制就是反复执行 cherry-pick

比如 git rebase main 的本质是:

  1. 找出当前分支相对于 main 的所有独有提交
  2. 把这些提交按顺序逐个 cherry-pickmain 的最新提交之上
  3. 最后把旧分支指针指向新位置

所以可以这样理解:rebase批量自动化cherry-pick,而 cherry-pick手动精准的单个提交复制。


二级目录

三级目录

相关推荐
wno7049 分钟前
Spring Boot JdbcTemplate配置Druid多数据源
java·spring boot·后端
聊浮游40 分钟前
JAVA2026最新全套学习资料、学习路线
java·开发语言·jvm·mysql·spring·maven·idea
Elasticsearch1 小时前
什么是上下文工程?
elasticsearch
MacroZheng1 小时前
完美替代 Navicat!这款内置 AI 的数据库工具,太香了!
java·后端·mysql
SamDeepThinking1 小时前
从REST到gRPC,一个API选型的思考框架
java·后端·程序员
Zane19941 小时前
接口都能写默认实现了,为什么还需要抽象类
java·后端
未秃头的程序猿1 小时前
读Spring AI源码的方法——不是硬啃,是带着问题去翻
java·后端·spring
用户3126874877202 小时前
别再 Thread.sleep 硬等了!并发工具类到底怎么选?
java
Java内核笔记2 小时前
万字长文剖析 Spring Boot 4 自动配置机制源码:从 @EnableAutoConfiguration 到条件装配
java·后端
evans在进步2 小时前
Spring MVC 核心机制详解:全局异常处理、请求跳转与数据绑定
java·spring·mvc