Git 常用命令
1. 查看分支详情
1)查看当前分支的详细信息:使用 git branch -v 命令可以显示所有分支的概要信息,其中包括当前所在分支的最后一次提交信息。当前所在分支前会用 * 标识。
bash
git branch -v2)查看当前分支的跟踪信息:使用 git branch -vv 可以显示所有分支的详细信息,包括分支跟踪的远程分支信息。
bash
git branch -vv3)查看当前分支的所有详细信息:使用 git status 命令可以显示当前分支名称、提交状态以及与远程分支的差异。
bash
git status2. git reset
git reset 命令用于在 Git 中重置当前的分支指向某个特定的提交,同时可以选择性地更新工作目录和暂存区。
主要选项: 1)--soft:只移动分支指针,不改变暂存区和工作目录的内容; 2)--mixed(默认选项):移动分支指针,并重置暂存区但不改变工作目录的内容; 3)--hard:完全重置,移动分支指针,并重置暂存区和工作目录的内容。
3. git merge
3.1. 合并策略
Git 提供了多种合并策略,默认是 “recursive” 策略。如果希望使用其他策略,比如 “ours” 或 “theirs” 可以在合并命令中指定,比如:
bash
git merge -X ours feature"ours" 策略会保留当前分支的内容而使用其他分支的更改。具体策略的使用取决于实际需求。
3.2. Fast-forward 合并
如果两个分支从没有分叉过,Git 默认会使用快进合并(fast-forward)。这种情况下不会产生合并提交,只是简单地移动分支指针。这可以通过传递 --no-ff 参数强制生成一个合并提交:
bash
git merge --no-ff feature3.3. 尝试合并但保留后悔药
bash
git merge --no-commit --no-ff feature # 合到 index+工作区,但不产生 commit
# ...随便看,VSCode 里冲突文件会直接列在 Source Control
git merge --abort # 不满意,一键还原
git reset --hard # 或者强退4. git checkout
4.1. git checkout -- .
- 省略了第一个参数(commitish),默认指向 HEAD
- 含义:把工作区的当前目录所有文件,恢复到暂存区 (index) 的版本
⚠️ 重点:会用暂存区覆盖工作区,不会改动暂存区
4.2. git checkout HEAD -- .
- 显式指定从
HEAD(当前分支最新一次提交)取出文件 - 含义:把工作区 + 暂存区的当前目录所有文件,直接覆盖成
HEAD提交里的版本
⚠️ 重点:同时覆盖暂存区和工作区