可观测学堂

可观测问答

聚焦概念、架构、排障、价格与选型,一篇解决一个明确问题。

Git 提交历史与版本恢复示意
技术指南

如何把提交从一个分支复制到另一个分支

复制提交到其他分支用 cherry-pick:切到目标分支后 git cherry-pick <提交哈希>;连续一段用 A^..B 范围;整个分支都复制用 merge 或 rebase。cherry-pick 产生新哈希,原分支不受影响。

Git 分支协作与合并示意
技术指南

如何创建 .gitignore 文件

在仓库根目录创建名为 .gitignore 的文本文件,每行一条忽略规则(支持 通配、目录/ 结尾、! 取反、# 注释),保存即生效。最快的方式是用 gitignore.io 或 GitHub 模板生成对应技术栈的规则。

Git 分支协作与合并示意
技术指南

如何创建远程 Git 分支

远程分支靠推送本地分支创建:git checkout -b <分支名> 建本地分支,git push -u origin <分支名> 推送并建立跟踪。也可在 GitHub 网页直接点 Branch 按钮创建。

Git 提交历史与版本恢复示意
技术指南

如何一次性删除所有 Git stash

清空全部 stash 用 git stash clear,不可恢复,执行前用 git stash list 确认。删除单个用 git stash drop stash@{n}。误删后可通过 git fsck --unreachable 找孤立提交尝试恢复。

Git 提交历史与版本恢复示意
技术指南

如何删除分支上的某个提交

删除最近未推送的提交:git reset --hard HEAD~1;保留改动只撤销提交用 git reset --soft HEAD~1。删除历史中间的提交用 git rebase -i 标记 drop。已推送的提交用 git revert 反向提交,不要改写共享历史。

Git 分支协作与合并示意
技术指南

如何批量删除已合并的 Git 分支

删除已合并的本地分支:git branch --merged | grep -v 排除保护分支 | xargs git branch -d。远程已合并分支用 git branch -r --merged 找出后逐个 git push origin --delete。删除前确认已合入正确的目标分支。

Git 提交历史与版本恢复示意
技术指南

如何删除还未推送的本地提交

删除未推送的本地提交用 git reset:--hard HEAD~N 连改动一起丢弃,--soft 保留改动到暂存区,--mixed(默认)保留改动到工作区。不确定时用 git reflog 随时可找回。

Git 分支协作与合并示意
技术指南

如何把子目录拆分成独立的 Git 仓库

拆分子目录为独立仓库并保留历史:git subtree split --prefix=<子目录> -b 新分支,再 init 新仓库 pull 该分支;大规模用 git filter-repo --path <子目录> 更干净。拆分后原仓库的该目录可删除。

Git 分支协作与合并示意
技术指南

如何查看本地仓库最初从哪个 URL 克隆的

查看克隆来源:git remote -v 显示 origin 的 fetch/push 地址;只看地址用 git config --get remote.origin.url。origin 可能被改过,此时 git config 里还留有原始记录可查。

Git 分支协作与合并示意
技术指南

Git 如何丢弃未暂存的改动

丢弃未暂存改动:单个文件 git restore <文件>(旧语法 git checkout -- <文件>),全部文件 git restore . 或 git checkout -- .。未跟踪的新文件用 git clean -f。操作不可逆,丢弃前可用 git diff 最后确认。

Git 分支协作与合并示意
技术指南

Git 有没有类似 svn export 的导出功能

Git 的对应物是 git archive:git archive --format=zip -o out.zip HEAD 导出指定提交的纯净代码(不含 .git),支持 zip/tar 格式,也可导出子目录。GitHub 网页的 Download ZIP 同理。

Git 分支协作与合并示意
技术指南

如何从 GitHub 只下载单个文件夹

GitHub 不直接支持下载单个文件夹。方案:sparse checkout(git clone --filter=blob:none --sparse 后 git sparse-checkout set <目录>)、GitHub API+下载、网页插件,或直接 Download ZIP 后解压取所需目录。