Git常用的命令

2021/8/17 Git

文章来源:面试官:说说Git常用的命令有哪些? (opens new window)

# 前言

git的操作可以通过命令的形式执行,日常使用就如下6个命令即可

image-default
  • pull
  • fetch/clone
  • checkout
  • push
  • commit
  • add

实际上,如果想要熟练使用,超过60多个命令需要了解,下面则介绍下常见的的git命令

# 有哪些

大致分成了以下几个类别

  • 配置
  • 初始化
  • 日常基本操作
  • 分支操作
  • 远程同步
  • 撤销
  • 存储

# 配置

Git自带一个git config的工具来帮助设置控制Git外观和行为的配置变量,在我们安装完git之后,第一件事就是设置你的用户名和邮件地址 ,后续每一个提交都会使用这些信息,它们会写入到你的每一次提交中,不可更改

设置提交代码时的用户信息命令如下:

git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
1
2

# 启动

一个git项目的初始有两个途径,分别是:

  • git init [project-name]:创建或在当前目录初始化一个git代码库。
  • git clone url:下载一个项目和它的整个代码历史。

# 常用命令

在日常工作中,代码常用的基本操作如下:

  • git init:初始化仓库,默认为master分支。
  • git add .:提交全部文件修改到缓存区。
  • git add <具体某个文件路径+全名>:提交某些文件到缓存区。
  • git diff:查看当前代码add后,会add哪些内容。
  • git diff --staged:查看现在commit提交后,会提交哪些内容。
  • git status 查看当前分支状态。
  • git pull <远程仓库名> <远程分支名>:拉取远程仓库的分支与本地当前分支合并。
  • git pull <远程仓库名> <远程分支名>:<本地分支名>:拉取远程仓库的分支与本地某个分支合并。
  • git commit -m "<注释>":提交代码到本地仓库,并写提交注释。
  • git commit -v:提交时显示所有diff信息。
  • git commit --amend [file1] [file2]:重做上一次commit,并包括指定文件的新变化。

关于提交信息的格式,可以遵循以下的规则:

  • feat:新特性,添加功能
  • fix:修改bug
  • refactor:代码重构
  • docs:文档修改
  • style:代码格式修改,注意不是css修改
  • test:测试用例修改
  • chore:其他修改,比如构建流程,依赖管理

# 分支操作

  • git branch:查看本地所有分支。

  • git branch -r:查看远程所有分支。

  • git branch -a:查看本地和远程所有分支。

  • git merge <分支名>:合并分支到当前分支。

  • git merge --abort:合并分支出现冲突时,取消合并,一切回到合并前的状态。

  • git branch <新分支名>:基于当前分支,新建一个分支。

  • git branch -d <分支名>:删除本地某个分支(会在删除前检查merge状态(其与上游分支或者与head))。

  • git branch -D <分支名>:删除本地某个分支(git branch --delete --force的简写)。

  • git branch <新分支名称> <提交ID>:从提交历史恢复某个删掉的某个分支。

  • git branch -m <原分支名> <新分支名>:分支更名。

  • git checkout --orphan <新分支名>:新建一个空分支(会保留之前分支的所有文件)。

  • git checkout <分支名>:切换到本地某个分支。

  • git checkout <远程库名>/<分支名>:切换到线上某个分支。

  • git checkout -b <新分支名>:基于当前分支新建分支,并切换到该分支。

  • git push <远程库名> --delete <分支名>:删除远程某个分支。

# tag同步

  • git tag:列出所有tag。
  • git tag [tag名]:创建轻量tag(无-m标注信息)。
  • git tag -a [tag名]:创建含注解的tag。
  • git tag -l | xargs git tag -d:删除所有本地tag。
  • git fetch origin --prune:从远程拉取所有信息。
  • git ls-remote --tags origin:查询远程tags。
  • git push origin --tags:推送所有本地tag到远程。
  • git push origin [本地tag名]:推送指定本地tag到远程。
  • git tag -d [本地tag名]:删除本地指定tag。
  • git push origin :refs/tags/[远程tag名]:删除远程指定tag。
  • git fetch origin [远程tag名]:拉取远程指定tag。
  • git show [tag名]:显示指定tag详细信息。

在远程仓库删除了某个tag,在本地拉取,此时被删除的tag在本地还是存在,再次push的时候又会推到远程。也有那种在远程把某个tag删了,然后又打了一个名字一样的,导致后续推送出问题。解决方法:

首先删除所有本地tag,然后在从远程拉

git tag -l | xargs git tag -d
# git tag -l #列出所有本地tag
# git tag -d xxx #删除制定tag
# xargs 前面一个指令(git tag -l)的输出,作为后面一个指令(git tag -d)的传参
git fetch origin --prune
1
2
3
4
5

# 远程同步

远程操作常见的命令:

  • git fetch [remote]:下载远程仓库的所有变动。
  • git remote -v:显示所有远程仓库。
  • git pull [remote] [branch]:拉取远程仓库的分支与本地当前分支合并。
  • git fetch:获取线上最新版信息记录,不合并。
  • git push [remote] [branch]:上传本地指定分支到远程仓库。
  • git push [remote] --force:强行推送当前分支到远程仓库,即使有冲突。
  • git push [remote] --all:推送所有分支到远程仓库。

远程仓库删除了分支,通过命令git branch -r查看还在,使用命令git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息。可以看到有些分支是标记为tracked,即该分支是被跟踪的,有些则标记为stale(use 'git remote prune'),意为不新鲜的旧的,就是已经被删除了的分支,按照提示使用git remote prune origin即可删除。

# 撤销

  • git checkout -- [file]:恢复暂存区的指定文件到工作区。

  • git checkout [commit] [file]:恢复某个commit的指定文件到暂存区和工作区。

  • git checkout .:恢复暂存区的所有文件到工作区。

  • git reset [commit]:重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变。

  • git reset --hard:重置暂存区与工作区,与上一次commit保持一致。

  • git reset [file]:重置暂存区的指定文件,与上一次commit保持一致,但工作区不变。

  • git revert [commit]:后者的所有变化都将被前者抵消,并且应用到当前分支。

  • reset:真实硬性回滚,目标版本后面的提交记录全部丢失了。

  • revert:同样回滚,这个回滚操作相当于一个提交,目标版本后面的提交记录也全部都有。

特性 reset revert
作用 移动 HEAD 指针,撤销提交 创建新的提交,撤销指定提交的更改
修改历史
适用场景 本地提交撤销 远程提交撤销
工作目录影响 可选(--soft、--mixed、--hard) 不影响工作目录
团队协作影响 不适合已推送的提交 适合已推送的提交
冲突处理 无冲突 可能需要解决冲突
  • --soft:移动HEAD指针,不修改暂存区和工作目录。适合撤销提交但保留更改。
  • --mixed(默认模式):移动HEAD指针,并重置暂存区,但不修改工作目录。适合撤销提交并将更改放回工作目录。
  • --hard:移动HEAD指针,并重置暂存区和工作目录。适合彻底撤销提交和所有更改。

存储操作

你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作,但又不想提交这些杂乱的代码,这时候可以将代码进行存储:

  • git stash:暂时将未提交的变化移除。
  • git stash pop:取出储藏中最后存入的工作状态进行恢复,会删除储藏。
  • git stash list:查看所有储藏中的工作。
  • git stash apply <储藏的名称>:取出储藏中对应的工作状态进行恢复,不会删除储藏。
  • git stash clear:清空所有储藏中的工作。
  • git stash drop <储藏的名称>:删除对应的某个储藏。

# 总结

git常用命令速查表如下所示:

image-default
最近更新: 2025年03月13日 17:49:47