Git 常用指令说明
备注
下文中出现的所有方括号([])中的内容均为用户根据实际情况自定义填写,不可直接照搬示例中的文字。
初始配置
首次使用 Git 时,需要配置用户名和邮箱,用于关联 commit 操作:
设置用户名: 用户名会显示在每次提交记录中,用于标识提交作者。
git config --global user.name “espressif” // 设置用户名为 espressif
备注
可以根据个人或团队要求设置任意名称,但最好使用真实或常用昵称,便于协作时识别提交者。
设置邮箱:
git config --global user.email "xxx@espressif.com" // 设置关联邮箱为 xxx@espressif.com
备注
邮箱应填写有效邮箱,便于接收通知或在远程仓库显示正确作者信息。
查看所有配置:列出 Git 的所有配置,包括用户名、邮箱等信息,可用于确认设置是否生效。
git config --list
其他常用配置:
设置默认编辑器:Git 在需要输入多行信息(如 commit 消息或合并冲突说明)时,会打开默认编辑器;如果未设置,默认使用系统编辑器(通常是 Vim)。
git config --global core.editor "nano" // 设置默认编辑器为 nano
启用彩色命令行输出:使 Git 命令输出更清晰。
git config --global color.ui auto // auto 表示在终端支持颜色时启用,也可以手动设置为 true 或 false
修改主分支名称:新建仓库时,默认主分支名称为 master(Git 2.28 之后可自定义)。
git config init.defaultBranch main // 修改主分支名称为 main
配置 SSH 密钥
SSH 密钥是一种安全高效的身份验证方式,它通过加密技术在使用 Git 时实现免密码的远程连接。配置 SSH 密钥可以有效保护您的 Git 账号和代码安全,在 Windows 环境下的具体操作步骤如下:
备注
公钥与私钥的安全性非常重要,确保妥善保管您的私钥,切勿将其暴露或共享。
生成 SSH 密钥
按下
Win+R组合键,打开 运行 窗口。输入
cmd并按回车,打开 命令提示符 窗口。
在命令提示符窗口中输入以下指令并按回车。
ssh-keygen -t rsa -C 'xxx@espressif.com' // 将 xxx@espressif.com 替换为你的真实邮箱地址,用于标记密钥归属。
接下来终端会依次提示你输入以下相关信息,如无特殊需求,可直接按回车使用默认设置。
密钥保存路径
是否为私钥设置密码
确认私钥密码
设置完成后,终端屏幕将显示密钥文件的实际保存路径和验证信息,表示 SSH 密钥已成功创建。
找到生成的 SSH 公钥
打开终端屏幕显示的密钥文件的实际保存路径,其中类型为
.pub的文件为 SSH 公钥。右键该
.pub文件,选择“打开方式”,使用“记事本”或“VS Code”等文件编辑器查看并复制。
将公钥配置到 Github 中
登录 Github, 点击右上角的头像后选择
Settings>SSH and GPG keys>New SSH key。
将 SSH 公钥复制粘贴到
Key文本框中。在
Title框中为该 SSH 密钥设置一个名字。点击
Add SSH key完成 SSH 公钥的配置。
检查密钥是否配对成功
在命令提示符窗口中输入以下指令:
ssh -T git@github.com
如果窗口显示
Hi your-username! You've successfully authenticated.说明 SSH 密钥配置成功。
创建/克隆仓库
创建仓库
在项目开始前,可以通过以下指令在本地创建一个新仓库:
git init
备注
此时仓库仅在本地,需要手动添加远程仓库并推送到 GitHub。
克隆远程仓库
如果想要克隆远程仓库,需要登录 Github,进入目标仓库页面,获取该仓库的 URL。
以 esp-idf 仓库 为例,具体步骤如下:
点击页面右上方绿色的
Code按钮,弹出仓库 URL 框。选择 URL 类型,HTTPS 或 SSH,需要注意 SSH 类型需提前 配置 SSH 密钥,便于免密登录。
点击复制按钮或手动复制所选 URL。
在终端中输入以下命令,将远程仓库复制到本地:
// 通过 HTTPS URL 克隆 esp-idf 仓库到本地,如需克隆其他仓库需更改 URL
git clone https://github.com/espressif/esp-idf.git
备注
可以在克隆时直接指定分支或标签,避免克隆默认分支再切换,相关指令如下,以 esp-idf 为例:
git clone -b release/v5.0 https://github.com/espressif/esp-idf.git // 克隆 esp-idf release/v5.0 分支到本地
git clone --branch v5.0 https://github.com/espressif/esp-idf.git // 克隆 esp-idf v5.0 版本到本地
备注
在执行以下 Git 指令前,请先进入目标仓库目录。
分支
在 Git 中,分支是一种并行开发机制,它是对代码开发历史的独立拷贝,允许在不干扰主分支的前提下开发新功能、测试、修复 bug。
branch 指令是管理分支的主要命令,可用于查看、创建、删除分支等。
查看分支
查看所有本地分支:
git branch
备注
星号 * 表示当前所在的本地分支。
创建/切换分支
创建新分支,但不切换:
git branch [Branch Name]切换到指定分支:
git checkout [Branch Name]创建新分支并切换到该分支:
git checkout -b [Branch Name]
删除分支
删除分支:
git branch -D [Branch Name]
合并分支
将指定分支合并到当前分支:
git merge [Branch Name]合并并保留合并记录:
git merge --no-ff [Branch Name]中止合并:
git merge --abort
将更改添加到暂存区
add 指令用于将更改后的文件添加至 Git 暂存区,以此明确标记出即将提交的内容,从而实现对版本变更的精确控制和有序管理。
添加指定文件到暂存区:
git add [File]添加所有更改到暂存区:
git add .
备注
使用 git add [File] 指令时,确保当前路径位于目标文件所在的目录中,或提供相对于当前目录的正确路径。
提交更改
commit 指令用于将已添加到暂存区的更改提交至本地仓库,相当于创建了一个“版本快照”,记录此次修改的内容和说明。
提交并添加说明:
git commit -m "[Description]"
备注
使用 commit 指令进行提交前必须先使用 add 指令将更改添加到暂存区。
查看状态
status 指令用于查看当前工作区和暂存区的状态,它可以显示当前所在分支,哪些文件被修改或删除,哪些文件已添加到暂存区,以及是否有未提交的更改或未跟踪的文件。
查看详细的工作目录和暂存区状态:
git status查看简短状态(简写格式):
git status -s
查看历史提交
log 指令用于查看 Git 仓库的历史提交记录,包括提交作者、时间、提交信息和哈希值,是理解项目变更轨迹的重要工具。
显示完整的提交历史:
git log以单行形式显示每次提交:
git log --oneline图形化显示分支和合并关系:
git log --graph查看指定作者的提交:
git log --author="[Author]"查看从指定时间至今的提交:
git log --since="[Time]"查看提交文件的具体更改内容:
git log -p查看提交中更改的文件及行数统计:
git log --stat显示最近几条提交记录:
git log -n [Number]查看指定文件的更改历史:
git log [File Name]
查看更改
diff 指令用于比较 Git 中个阶段(工作区、暂存区、历史提交)之间的差异,它不会改变任何内容,仅用于查看代码的具体变更内容。
比较工作区和暂存区的差异:
git diff比较暂存区和上一次提交的差异:
git diff --cached``或``git diff --staged比较工作区和最后一次提交的所有差异,包括已暂存和未暂存的更改:
git diff HEAD比较两次提交之间的差异:
git diff [commit1][commit2]比较两个分支之间的差异:
git diff [branch1][branch2]查看某个文件的差异,默认为该文件的工作区和缓存区:
git diff [File Name]
忽略文件
在 Git 中,忽略文件指 Git 不跟踪、不纳入版本控制的一类文件,例如临时文件、日志、编译生成物、系统缓存等。可以在项目根目录创建一个名为 .gitignore 的文件,再将需要忽略的文件或文件夹路径写入该文件。
忽略所有日志:
*.log忽略所有临时文件:
temp/忽略所有
.exe文件:*.exe忽略 VS Code 工作空间配置:
.vscode/忽略某个文件:
[File Name]
远程仓库协作
在 Git 中,远程仓库协作指多个开发者通过连接同一个 Git 仓库进行分布式协同开发的过程。
查看远程仓库信息:
git remote -v建立本地空仓库和指定远程仓库的关联:
get remote add origin [url]获取远程仓库最新提交并合并:
git pull origin [Branch Name]获取远程仓库更改但不合并:
git fetch origin推送本地提交到远程仓库:
git push origin [Branch Name]