git ls-files 列出仓库所有文件git ls-tree --name-only HEAD 列出第一层内容,-d 只列出目录git config --global core.quotepath false 让 Git 显示中文git ls-files -s doc.xlsx 查看 Git 对该文件的识别状态git check-attr crlf diff merge -- doc.xlsx 查看文件的属性.gitattributes 作用:定义路径的属性,控制 Git 如何处理特定类型的文件。最常见的作用是统一换行符。可以指定某些文件(如图片、jar 包)作为二进制处理,防止 Git 尝试合并它们导致损坏。应提交到仓库*.xlsx binary
*.jpg binary
*.png binary
*.jar binary
*.zip binary
临时切换到历史提交(detached HEAD)
git checkout <commit-hash> # 例如 git checkout def5678
detached HEAD 状态:如果直接 git checkout <commit-hash>,会进入 detached HEAD 状态。此时新提交不会属于任何分支,需手动创建分支保存。
Attached HEAD:指向某个分支(如 ref: refs/heads/master)。
Detached HEAD:直接指向某次提交(如 abc1234),不在任何分支上。
切换到最新提交:git checkout <branch-name> # 如 git checkout master 或 git checkout master
查看 HEAD 当前指向:
git symbolic-ref HEAD # 查看指向的分支
cat .git/HEAD # 直接查看内容(分支或提交哈希)
git stash(暂存):临时保存工作目录和暂存区的修改(包括未跟踪的文件,需加 -u),并将工作区恢复到最近一次提交的状态(干净状态)。git stash # 暂存所有已跟踪文件的修改
git stash -u # 暂存所有修改(包括未跟踪的文件)
git stash push -m "备注" # 暂存并添加说明(Git 2.13+)
git stash list # 查看所有暂存记录
git stash apply # 恢复最近一次暂存的修改(不删除记录)
git stash pop # 恢复并删除最近一次暂存记录
git stash drop # 删除指定暂存记录
何时用 stash?何时用 commit?

git -c https.proxy="socks5://127.0.0.1:40008" clone https://github.com/user/repo.git
$env:https_proxy="http://127.0.0.1:7897"; git clone https://github.com/user/repo.git && Remove-Item Env:https_proxy
# 设置代理并克隆
pxs && git clone https://github.com/user/repo.git
合并无关历史 git pull origin master --allow-unrelated-histories 远程和本地都有重要提交,需要合并
强制覆盖远程 git push --force origin master 远程内容可以丢弃,完全使用本地版本
重新初始化仓库 rm -rf .git && git init... 本地尚未有重要提交,从头开始
自行下载源码,然后关联远程仓库
cd E:\developer-roadmap\developer-roadmap-master # 进入解压后的文件夹
git init # 初始化空仓库
git remote add origin git@github.com:kamranahmedse/developer-roadmap.git # 关联远程仓库
git remote -v #正常应显示:
origin git@github.com:kamranahmedse/developer-roadmap.git (fetch)
origin git@github.com:kamranahmedse/developer-roadmap.git (push)
--depth 1 意味着 只有 1 条记录(即 HEAD 提交)。git clone --depth 1 git@github.com:kamranahmedse/developer-roadmap.git # 只下载最新提交
cd developer-roadmap
git fetch --unshallow # 后续按需获取完整历史(可选)
git fetch --depth=100 # 获取最近的 100 条历史
git status只添加必要的文件:git add src/ pom.xml README.md .gitignore
git commit -m "feat: add user login API"
git push origin master
git rm -r --cached target/ # 取消跟踪但不删除本地文件git commit -m "chore: remove target/ from Git"git push
git rm -r --cached . # 清除缓存
git add .
git commit -m "fix: reapply .gitignore"
git push
# 一次性把所有符合 .gitignore 规则的文件都移出仓库
git rm -r --cached .
# 重新添加剩余需要追踪的文件
git add .
# 提交更改
git commit -m "chore: 清理误提交的忽略文件"

git checkout feature
git rebase master # 将 feature 的提交“移动”到master 的顶端
git checkout master
git merge feature # 生成一个合并提交