跳到主要内容

Git

安装与验证​

Windows 从 Git 官方安装入口安装 Git for Windows。Linux 可使用发行版软件包:

sudo apt update
sudo apt install git
git --version

macOS 可通过 Xcode Command Line Tools 或已有的包管理器安装。首次提交前,在当前仓库设置作者信息:

git config user.name "Your Name"
git config user.email "you@example.com"

如希望作用于所有仓库,增加 --global;提交中的作者信息会写入历史记录。

基本使用:本地提交​

在新的示例目录执行:

git init -b main
# 创建或修改 README.md 后继续
git status
git add README.md
git diff --cached
git commit -m "docs: add README"
git log --oneline -5

工作区保存正在编辑的文件,暂存区保存下一次提交的内容,提交历史保存版本快照。git diff 比较工作区与暂存区,git diff --cached 比较暂存区与当前提交。

克隆与分支​

git clone https://github.com/jackylee3362/cs-wiki.git
cd cs-wiki
git switch -c docs/example
git status

克隆会下载仓库及历史。上述操作只发生在本地,不包含推送;开始新分支前先确认现有修改。

常用命令​

一、仓库初始化与克隆​

git-init#初始化本地仓库

git-clone#克隆远程仓库到本地

二、配置​

git-config#config 配置

三、日常 workflow:查看 → 添加 → 比较 → 提交​

git-status#查看当前状态

git-add#添加文件

git-diff#工作区 vs 暂存区

git-commit#提交

四、撤销与恢复​

git-restore#取消工作区的修改

git-reset#撤销本地暂存

git-rm#从暂存区移除文件

五、历史查看​

git-log#历史:在 commit 信息中查找并展示 commit

git-reflog#恢复本地已删除分支

六、分支管理​

git-branch#查看当前分支

git-switch#切换分支

git-checkout#切换分支

git-merge#合并其他分支

git-stash#暂存

git-cherry-pick#TLDR

七、远程交互​

git-remote#查看远程分支

git-fetch#下载远程更新

git-pull#拉取并合并

git-push#推送到远程

八、高级操作​

git-submodule#添加子模块

git-sparse-checkout#稀疏检出

FAQ​

Git 如何恢复本地分支​

git-reflog#恢复本地已删除分支

git 如何对历史搜索​

git-log#历史:在 commit 信息中查找并展示 commit

git-log#历史: 在文件中查找内容并展示 commit

本地 Git 仓库删除大 object​

最简单的方法,删除远程仓库,重新上传并重新提交,缺点是会丢失历史数据,

2025-09-27 由于之前加入 rime-ice 仓库,导致仓库过大,只好按照这个方法

git 文件名大小写敏感​

原因是 windows 系统大小写不敏感,而 git 大小写敏感

git CR/CRLF 是怎么解决的?​

git-config#git 在 powershell 使用命令行时出现乱码

签出会覆盖本地修改​

场景描述:

通常我会在 dev 分支上操作,然后细粒度地提交 commit,上传到 github 上形成一个 pull-request,然后 main 再接受 pr,合并成一个

但是有时候会忘记切换分支(比如现在就是),直接在 main 上更改

在 vscode 的状态栏就会出现 *,此时想换到 dev 分支

直接切换会出现签出会覆盖本地修改的提示

该提示下的三个选项分别是什么意思呢?

  1. 储藏并签出:希望【暂存区】仍然在当前分支,然后切换到另一个分支
  2. 迁移更改:希望将【暂存区】的内容切换到另一个分支,可能要处理冲突问题
  3. 强制签出:(不推荐)直接放弃当前分支(比如 main)未提交的 commmit,然后切换为分支 dev

所以该场景我们需要的是【迁移更改】

参考资料​

官方资源​

相关文章​

其他参考链接​