urlname
type
Post
password
SyncToConfluence
category
学习笔记
date
Dec 1, 2025
slug
22857dfe-0c22-4ddc-b89e-5faa7b20b4d2
icon
Button
catalog
summary
tags
学习笔记
Git
专业能力
cover
https://picsum.photos/1920/1080
Status
BusyTime
Status 1
status
Published

版本库初始化与远程协作 (Clone, Push, Pull, Fetch)

指令
场景描述
示例用法
git clone [地址]
首次加入团队或初始化项目时,将中央(远程)仓库克隆到本地,同时会在本地创建 .git 目录作为本地仓库。
git clone https://github.com/rengwuxian/git-practice.git
git clone [地址] [目录名]
克隆远程仓库时,手动指定本地仓库根目录的名称(例如模拟同事的本地仓库)。
git clone https://github.com/rengwuxian/git-practice.git git-practice-another
git push
将本地仓库中已提交的改动上传(发布)到远程(中央)仓库。默认情况下,只能上传之前从远端克隆或拉取下来的分支。
git push
git push origin [branch_name]
远程推送本地创建的分支(例如 books),需要手动指定目标仓库(origin)和目标分支。
git push origin books
git push origin [branch_name] -f / --force
在本地对已推送到远程的 commit 进行了修改或删除(例如使用 rebase 后),需要强制推送本地内容覆盖中央仓库的内容。
git push origin branch1 -f
git push origin -d [branch_name]
删除远程仓库上的指定分支(例如 books)。
git push origin -d books
git pull
从远程仓库(GitHub)取回新的提交,并与本地代码合并。该操作的内部实现是先 fetchmerge
git pull
git fetch
作为 git pull 的第一步,用于下载远端仓库的内容,包括远端仓库的 HEAD 和 master 的本地镜像 (origin/HEADorigin/master)。
(作为内部操作,无需单独示例)

暂存与提交 (Staging & Committing)

指令
场景描述
示例用法
git status
查看工作目录的当前状态,包括当前分支、是否领先/落后于远端仓库、已修改但未暂存的文件、以及未追踪(untracked)的文件等信息。
git status
git add [文件名]
让 Git 开始跟踪文件,或将文件改动内容添加到暂存区(staging area),准备进行提交。
git add shopping\ list.txt
git add .
将工作目录下所有改动(包括已修改和未追踪的文件)全部放进暂存区。
git add .
git commit
将暂存区中的所有改动打包成一个版本快照,并记录到本地仓库的版本历史中。
git commit
git commit --amend
修正最新的一条提交(commit)。它将当前的 commit 内容和暂存区(staging area)中的新内容合并起来,生成一个新的 commit 替换掉原来的最新提交。
git add 笑声.txt<br>git commit --amend

历史查阅与比较 (Log, Show, Diff, Reflog)

指令
场景描述
示例用法
git log
列出提交历史(查看版本历史),显示每个 commit 的 ID(SHA-1)、作者、日期和提交信息。
git log
git log -p / --patch
查看提交历史中每个 commit 所包含的详细改动(逐行差异),适用于代码 review。
git log -p
git log --stat
查看提交历史中每个 commit 的简要统计信息,例如哪些文件被修改了,适合大致回顾改动内容。
git log --stat
git show
查看当前 HEAD 所指向的最新 commit 的具体改动内容。
git show
git show [SHA-1/引用]
查看指定 SHA-1 码或引用的任意 commit 的改动内容。
git show 5e68b0d8
git show [SHA-1/引用] [文件名]
仅查看指定 commit 中特定文件的改动。
git show 5e68b0d8 shopping\ list.txt
git diff
比较工作目录和暂存区之间的差异,显示已修改但未被 add 到暂存区的内容。
git diff
git diff --staged / --cached
比较暂存区和上一次提交(HEAD)之间的差异,显示运行 git commit 将会提交哪些内容。
git diff --staged
git diff HEAD
比较工作目录和上一次提交(HEAD)之间的总差异(不包含未追踪文件)。
git diff HEAD
git reflog
查看 Git 仓库中引用的移动记录,默认显示 HEAD 的移动记录,常用于找回被误删的分支。
git reflog

分支管理与切换 (Branch & Checkout)

指令
场景描述
示例用法
git branch [名称]
在当前 commit 处创建一个新的分支(例如 feature1),但不会自动切换 HEAD。
git branch feature1
git checkout [名称]
切换到指定的分支(例如 feature1),将 HEAD 移动到该分支,并更新工作目录内容。
git checkout feature1
git checkout -b [名称]
组合操作:创建一个新的分支并立即切换过去(例如 books),常用于 Feature Branching 工作流。
git checkout -b books
git checkout [commit 引用]
签出指定的 commit,让 HEAD 直接指向该 commit,而不是指向一个 branch。
git checkout HEAD^^
git checkout -- [文件名]
撤销工作目录中指定文件(例如 shopping list.txt)的修改,使其内容回退到 HEAD 处的状态(即丢弃工作目录中的改动)。
git checkout -- [文件名]
git checkout --detach
让 HEAD 与当前 branch 脱离,直接指向当前 commit,进入“分离头指针”状态,但不移动 HEAD 的位置。
git checkout --detach
git branch -d [名称]
删除一个已经合并到 master 或当前分支的本地分支。若未合并,该操作会失败。
git branch -d feature1
git branch -D [名称]
强制删除一个尚未合并到 master 的分支(大写 -D 强制删除)。
(例如 git branch -D feature1)

历史修改与撤销 (Rebase, Reset, Revert)

指令
场景描述
示例用法
git commit --amend
修正最新一条本地提交的错误:发现最新提交(commit)有错别字或遗漏了小改动,希望用一个新提交来替换掉这个最新的提交,而不是新增一条修复提交。
(先修改文件并放入暂存区) git add 笑声.txt git commit --amend
git rebase [目标基础点]
重新设置提交序列的基础点:用于将当前分支的一串 commits 重新提交到指定的基点上。通常用于将分支历史记录线性化,避免 merge 导致的分叉结构。
(例如,在 branch1 上,以 master 为新的基础点) git checkout branch1 git rebase master
git rebase -i [目标 commit]
交互式 Rebase:用于修改、合并、删除或重新排序非最新的 commits。例如,修复倒数第二个 commit 的错误。
(例如,修改倒数第二个 commit) git rebase -i HEAD^^
edit
(交互式 Rebase 内部指令)在 rebase -i 过程中,用于指定应用该 commit 后停止 rebase 进程,以便进行修正(通常配合 commit --amend 使用)。
(在交互式编辑界面中,将 commit 前的 pick 改为 edit)
pick
(交互式 Rebase 内部指令)在 rebase -i 过程中,表示“直接应用”该 commit。
(默认操作)
drop
(交互式 Rebase 内部指令)在 rebase -i 过程中,通过删除对应的 commit 所在行,达到撤销(丢弃)该 commit 的目的。
(在交互式编辑界面中,删除该 commit 所在行)
git rebase --continue
rebase -i 暂停(如使用 edit 或解决冲突)并完成修改后,用于继续 rebase 进程。
git rebase --continue
git rebase --onto [目标] [起点] [终点]
高级 Rebase 选项,用于精确指定 rebase 的起点和终点,可用于在 rebase 过程中剔除特定范围内的 commits。
(例如,撤销倒数第二个 commit,使其路径从 HEAD^branch1 的 commit 重新提交到 HEAD^^ 上) git rebase --onto HEAD^^ HEAD^ branch1
git reset --hard [目标 commit]
撤销最新的本地提交:将 HEAD 和当前 branch 重置到目标 commit。同时,它会清空工作目录和暂存区的所有未提交改动。
(例如,撤销最新一次提交) git reset --hard HEAD^
git reset --soft [目标 commit]
保留已暂存的内容:重置 HEAD 和当前 branch。同时,它会保留工作目录和暂存区的内容,并将 HEAD 移动带来的新差异放进暂存区(Changes to be committed)。
(例如,撤销最新一次提交,并保留其所有更改为已暂存状态) git reset --soft HEAD^
git reset [目标 commit]
保留工作目录,清空暂存区:默认使用 --mixed 参数。它会重置 HEAD 和当前 branch。同时,它会保留工作目录的内容,但会清空暂存区。
(例如,撤销最新一次提交,并保留其所有更改为未暂存状态) git reset HEAD^
git revert [目标 commit]
撤销已推送到中央仓库的提交:不会抹去历史,而是新增一个提交来反转(抵消)目标 commit 的改动。适用于在 master 分支或共享分支上修正错误。
(例如,反转倒数第二个提交) git revert HEAD^
git push origin [branch_name] -f / --force
强制推送:当你对本地的 commits 历史(例如在私有分支上)进行了修改或删除(如使用 rebasereset)后,用于忽略冲突,强制用本地修改后的内容覆盖远程仓库的内容。
(修正本地分支 branch1 历史后) git push origin branch1 -f

临时存储 (Stashing)

指令
场景描述
示例用法
git stash
临时存放工作目录的改动:在处理紧急任务或切换分支时,没有时间或必要进行临时 commit,可以将工作目录中已修改但未提交的改动临时保存起来,以便快速清理工作目录。
git stash
git stash -u
包含未跟踪文件:临时存放所有改动,包括那些 Git 尚未跟踪(untracked)的新文件。 -u--include-untracked 的缩写。
git stash -u
git stash pop
恢复存储的改动:从 stash 列表中恢复最近一次存储的改动,并将其从列表中删除。
git stash pop
学习笔记——大模型工作基本原理——预测下一个词的三大核心步骤学习笔记——Git 自定义
Loading...