Home Git 常用命令整理:从入门到日常使用
Post
Cancel

Git 常用命令整理:从入门到日常使用

Git指令

创建仓库

初始化本地仓库

根据自己的需要进入对应的目录下初始化一个本地仓库

1
git init

克隆远程仓库

克隆一个已存在的远程仓库

1
git clone <remote_repo_URL>

基本配置

设置用户名和邮箱地址(在该设备上第一次使用Git时)

这里的用户名和邮件地址就是自己github账号的用户名和邮箱地址

1
2
git config --global user.name <user name>
git config --global user.email <user email>

查看本地仓库与远程仓库的关联情况

可以查看到当前仓库的关联情况

1
git remote -v

关联指定的远程仓库

将本地仓库与指定地址的远程仓库关联

1
git remote add origin <remote_repo_URL>

查看更改

查看工作目录与暂存区中的文件状态

当发生文件更改(如内容修改,增删等)时,此指令可以用来查看发生更改的文件。

1
git status

查看当前更改与之前提交的差异

对比当前内容与之前提交中不同的地方

1
git diff

查看提交历史

查看过往的提交历史

1
git log <options>

常用参数:

参数作用
--oneline简洁的单行显示
--stat显示文件修改统计(文件名和增删行数)
-p显示详细的文件修改内容
--graph图形化显示分支合并历史
-n <number>显示最近 n 次提交
--all显示所有分支的提交

分支相关

创建分支

创建一个新分支

1
git branch <branch_name>

创建一个新分支,并切换到该分支

1
git checkout -b <branch_name>

查看分支

1
git branch <options>

常用参数:

参数作用
无参数查看所有本地分支
-a查看所有本地和远程分支
-r仅查看远程分支
-v显示分支及最后一次提交信息

切换分支

切换到指定分支

1
git checkout <branch_name>

删除分支

1
git branch <options> <branch_name>

常用参数:

参数作用
-d删除已合并的本地分支
-D强制删除指定本地分支

删除远程分支:

1
git push origin --delete <remote_branch_name>

合并分支

将指定分支合并到当前分支

1
git merge <branch>

变基操作(Rebase)

1
git rebase <options> <branch>

基本用法:

1
2
git rebase <branch>   # 将当前分支变基到指定分支
git rebase -i <commit>  # 交互式变基,可以通过强制推送修改提交历史

常用参数:

参数作用
-i交互式变基,可以编辑/合并/删除提交
--continue解决冲突后继续变基
--abort取消变基操作

典型场景:

1
2
3
4
5
6
7
8
9
10
# 将feature分支变基到最新的main分支 (相当于将原本特性分支的分叉点移到最新的main分支上)
git checkout feature
git rebase main

# 交互式变基,整理最近3次提交
git rebase -i HEAD~3

# 变基过程中遇到冲突解决后
git add .
git rebase --continue

Rebase vs Merge

  • Merge会创建一个新的合并提交,保留分支的历史记录
  • Rebase会将特性分支的基底移动到最新的主分支上,形成一条直线的提交历史

提交相关

添加本地文件至暂存区

1
git add <options> <file_path>

常用参数:

参数作用
.添加当前目录下所有文件
<file_path>添加指定文件
-A添加所有变更(包括删除的文件)
-u仅添加已跟踪文件的变更

提交暂存区文件至本地仓库

message表示对于此次提交内容的简要说明

1
git commit -m "message"

保存当前工作目录的临时状态

1
git stash <options>

常用参数:

参数作用
无参数保存当前工作目录状态
pop恢复最近一次暂存并删除该记录
list查看所有暂存记录
apply恢复最近一次暂存但保留该记录
drop删除指定的暂存记录

推送与拉取

将本地更改推送至远程仓库

当本地分支名与远程相同时可以省略冒号后的部分,如果不相同则使用第二行的指令。

1
2
git push origin <local_branch>
git push origin <local_branch>:<remote_branch>

例:本地分支名与远程分支名都为main,则使用

1
2
git push origin main
git push -u origin main  # 在本地分支上设置上游分支

例: 本地分支名为master, 远程分支名为main, 则使用

1
git push origin master:main

如果在本地分支上已经设置了上游分支(通常是在从远程仓库拉取或克隆分支,并且执行过一次推送后)则可以省略push后的部分

1
git push

从远程仓库拉取分支到本地并合并

通常情况下,拉取远程仓库分支时上游分支已存在,如果只需要拉取并合并到本地当前所在的分支时,直接使用git pull即可

1
git pull

当需要拉取其他远程分支的更新时,则需要额外指定远程分支名

1
git pull origin <remote_branch>

当需要拉取其他远程分支的更新到其他本地分支时,则需要额外指定远程分支名和本地分支名

1
git pull origin <remote_branch>:<local_branch>

Git提交信息规范

Git提交信息(commit message)规范对于维护项目的历史记录、理解和查找特定变更非常重要。一个良好的提交信息可以帮助团队成员更好地理解代码变更的背景。Angular提交信息规范是一个被广泛采用的规范,其提交格式如下:

1
2
3
4
5
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>

每次提交可以包含页眉(header)、正文(body)和页脚(footer),其中页眉必须有实际的内容。关于页眉中的提交信息:

  • type: 用于说明commit的类别,常用的有以下几种:

    类别含义
    feat添加新功能
    fix修复bug
    docs文档变更
    style不会影响代码含义的编码风格上的更改
    refactor重构(既不修复bug也不增加新功能的代码更改)
    test添加缺失的测试或更正现有的测试
    chore日常、例行工作,不涉及新功能添加、bug修复和代码重构的提交
    perf提高性能的代码优化
    build影响构建系统或外部依赖项的更改
  • scope: 提交内容的影响范围
  • subject: 对于提交内容的简短描述,通常不超过50个字符。此外,考虑到可能或已经存在的团队协作需要,应尽可能使用英语。提交内容为英语时,使用第一人称现在时首字母小写结尾不加句号

详细文档参考:

Git的状态模型

常用的一些git指令以及其作用的对象和效果:

参考

This post is licensed under CC BY 4.0 by the author.