Skip to content

Git 常用命令

1. 查看分支详情

1)查看当前分支的详细信息:使用 git branch -v 命令可以显示所有分支的概要信息,其中包括当前所在分支的最后一次提交信息。当前所在分支前会用 * 标识。

bash
git branch -v

2)查看当前分支的跟踪信息:使用 git branch -vv 可以显示所有分支的详细信息,包括分支跟踪的远程分支信息。

bash
git branch -vv

3)查看当前分支的所有详细信息:使用 git status 命令可以显示当前分支名称、提交状态以及与远程分支的差异。

bash
git status

2. 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 feature

3.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 提交里的版本

⚠️ 重点:同时覆盖暂存区和工作区