以下是 learngitbranching.js.org 中常用 Git 指令及其用法的总结,按功能分类整理
通过运行 git add 命令,你可以告诉 Git 哪些文件的修改应该包含在下一次提交(commit)中。
添加一个或多个文件到暂存区:
作用:提交代码变更,生成一个新的提交节点。
示例:
git commit -m "提交信息"
作用:创建新分支,但不会切换到该分支。
示例:
bash
复制
git branch feature
作用:强制移动分支到指定的提交位置(覆盖原有分支指向)。
场景:当需要快速调整分支到某个历史提交时使用(如修复分支指向错误)。
示例:
bash
复制
git branch -f main HEAD~3 # 强制将 main 分支移动到 HEAD 前 3 个提交 git branch -f feature a1b2c3d # 强制将 feature 分支移动到提交 a1b2c3d
注意:
git push -f
强制推送(慎用)。作用:切换到指定分支或提交(分离头指针模式)。
git checkout main # 切换到 main 分支 git checkout a1b2c3d # 切换到某个提交
作用:将指定分支合并到当前分支,生成一个新的合并提交。
git merge feature # 将 feature 分支合并到当前分支
作用:将当前分支的提交“复制”到目标分支的最新提交后,使历史线性化。
示例:
bash
复制
git rebase main # 将当前分支变基到 main 分支
作用:交互式修改提交历史(如合并提交、修改提交信息、删除提交等)。
场景:整理本地提交历史,使其更清晰(例如:合并多个临时提交为一个完整提交)。
流程:
执行命令后进入交互界面:
git rebase -i HEAD~3 # 修改最近 3 个提交 ```
2. 在编辑器中按需修改命令(如 `pick`, `squash`, `reword` 等): ``` pick a1b2c3d 提交A squash b2c3d4e 提交B # 将提交B合并到提交A reword c3d4e5f 提交C # 修改提交C的信息 ``` 3. 保存退出后,Git 会按指令逐条处理提交。
常用命令:
pick
: 保留该提交reword
: 保留提交但修改信息edit
: 暂停变基,允许修改提交内容squash
: 合并到前一个提交,并保留提交信息fixup
: 合并到前一个提交,但丢弃当前提交信息drop
: 删除该提交注意:
git rebase --continue
继续。作用:将当前分支的 HEAD 指针移动到指定提交(默认保留工作区,--hard
会丢弃变更)。
git reset HEAD^ # 回退到上一个提交(保留修改) git reset --hard a1b2c3d # 强制回退到指定提交,丢弃后续修改
作用:将指定提交的变更应用到当前分支。
git cherry-pick a1b2c3d # 应用提交 a1b2c3d 的变更
HEAD^
或 HEAD~1
作用:表示当前提交的父提交(^
用于分支合并后的父提交选择,~
用于向上移动多步)。
示例:
bash
复制
git checkout HEAD^ # 切换到父提交 git branch -f main HEAD~3 # 强制将 main 分支移动到 HEAD 前 3 个提交
git fetch
+ git merge
,拉取远程更新并合并到当前分支。作用:将本地分支推送到远程仓库。
示例:
git push origin main # 推送 main 分支到 origin
作用:创建一个新提交,撤销指定提交的变更(适合公共历史记录)。
示例:
bash
复制
git revert a1b2c3d # 撤销提交 a1b2c3d 的变更
git rebase -i
):git push -f
)git add
标记为已解决。git merge
或 git rebase
(根据是否需要线性历史选择)。git reset
git revert
git fetch
+ git rebase origin/main
(优于直接 git pull
)。