Skip to content

Git

信息配置

用户信息的配置

git
# 默认为局部配置
# 配置用户邮箱
git config user.email "Your Email"
# 配置用户名
git config user.name "Your Name"

# 配置默认编辑器
git config --global core.editor "vim"

# git 2.28+
# 配置初始化git仓库时默认分支
git config --global init.defaultBranch main

# 配置全局用户信息
git config --global user.name "Your Name"
git config --global user.email "Your Email"

查看所有 Git 配置

git
# 查看所有配置
git config --list

# 查看当前仓库用户的用户名
git config --get user.name
# 查看当前仓库用户的邮箱
git config --get user.email


# 参数顺序任意
# 查看全局用户名
git config --global --get user.name
# 查看全局用户邮箱
git config --global --get user.email

基础操作

重置

当需要撤销修改或者切换到特定版本时,可以使用 Git 的重置功能。

撤销工作区修改

丢弃工作目录中的文件的修改 (恢复到最后一次提交的状态)

git
# 撤销单个文件的修改
git checkout -- <file-name>

# git 2.23+ 新命令
git restore <file-name>

撤销暂存区的文件

不会丢失更改,只是撤销暂存状态

git
# 将暂存区的修改撤销到工作区
git reset HEAD <file-name>

# git 2.23+ 新命令
git restore --staged <file-name>

重置提交

git
# 软重置 - 保留工作区和暂存区的更改
git reset --soft <commit-hash>

# 混合重置 - 保留工作区更改,但清除暂存区 (默认模式)
git reset <commit-hash>
git reset --mixed <commit-hash>

# 硬重置 - 丢弃所有更改,完全回到指定提交
git reset --hard <commit-hash>

重置到前 N 个版本

git
# 回退到前一个版本
git reset --hard HEAD^

# 回退到前N个版本
git reset --hard HEAD~N

本地仓库

代码需要提交到暂存区才能提交到本地仓库

初始化本地仓库

git
git init

添加文件到暂存区

git
# 提交单个文件
git add <file-name>

# 提交所有文件
git add .

# 提交指定目录下的所有文件
git add <dir-name>

修改本地仓库中的提交

git
# 使用交互式变基,修改最近n条提交
git rebase -i HEAD~n

注: 交互式变基会改变提交历史 hash

交互命令参考
命令意义典型用途
pick保持这个提交,不做改动大部分提交直接保留
reword保持提交内容,但修改提交信息改错别字、优化提交说明
edit停下来,修改提交内容或者信息发现代码有小错误,想补救
squash将本提交和上一个提交合并,并编辑提交信息多个小提交,想打包成一个
fixup将本提交合并到上一个提交,但忽略本提交信息修修补补的小提交,直接塞进上一个提交
drop丢弃这个提交提交错了,想干脆删掉

暂存区的变动提交到本地仓库

git
# 提交代码到暂存区, 并使用指定的默认编辑器编写提交信息
# 无提交信息视为取消本次提交
git commit

# 添加参数m显示指定提交信息
git commit -m "commit message"

# 修改最近一次提交信息
git commit --amend -m "new commit message"

远程仓库

克隆远程仓库

git
# 克隆远程仓库
git clone <remote-repo-url>

查看远程仓库

git
# 查看远程仓库
git remote -v

关联远程仓库

关联远程仓库后,下一次可以直接使用 git push 提交代码到远程仓库

git
git push --set-upstream origin main

# 简化命令
git push -u origin main

日志

查看提交日志

git
git log

# 查看简洁的提交日志
git log --oneline

# 查看简洁的提交日志,包含分支信息
git log --oneline --graph

查看操作日志

git
git reflog

# 查看简洁的操作日志
git reflog --oneline

分支

查看所有分支、 所处分支

git
git branch

重命名分支

git
# 不提供old-branch-name参数时,默认重命名当前分支
git branch -m [<old-branch-name>] <new-branch-name>

创建分支

git
git branch <branch-name>

拉取远程分支

git
git fetch origin <branch-name>

合并分支

git
git merge <branch-name>

拉取并合并分支

git
# 拉取远程分支合并到当前分支
# 没有追踪远程仓库
git pull <remote-repo-name> <branch-name>

# 有追踪远程仓库
git pull

切换分支

git
# 切换到指定分支(分支必须存在)
git checkout <branch-name>
# 切换到指定分支(分支必须不存在)
git checkout -b <branch-name>

# git 2.23 版本后推荐使用

# 切换到指定分支(分支必须存在)
git switch <branch-name>
# 切换到指定分支(分支必须不存在)
git switch -c <branch-name>

删除分支

git
# 删除分支
git branch -d <branch-name>

变基

变基操作会将当前分支的提交记录移动到指定分支的最新提交之后

git
# 1. 开发前先同步主分支
git checkout main
git pull origin main

# 2. 变基当前分支
git checkout feature
git rebase main

# 变基前
A --- B --- C (main)
         \
          D --- E (feature)

# 变基后
A --- B --- C (main)
             \
              D' --- E' (feature)

个人开发

分支调整

现在有如下需求,将分支 v4 调整到分支 v3 之后

image-20250424152608002

操作步骤

  1. 查看分支日志,找对提交记录 v2 对应的 hash 值

image-20250424153056890

  1. 基于提交点 v2 创建并切换到新分支
git
git switch -c new-dev 4e116a6
  1. 挑选其他分支点
git cheery-pick <branch-hash>
  1. 切换回主分支
git
git switch main
  1. 硬重置主分支到新分支最新提交
git
git reset --hard new-dev
  1. 强制推送到远程分支
git
git push -f origin main

Last updated:

Released under the MIT License.