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指令以及其作用的对象和效果: