核心命令
bash
arduino
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
1. 全局设置(推荐)
这是最常用的方式,为你电脑上的所有 Git 项目设置默认的用户信息。
bash
csharp
# 设置全局用户名
git config --global user.name "Your Name"
# 设置全局邮箱
git config --global user.email "your.email@example.com"
何时使用?
-
如果你在个人电脑上工作,并且所有项目都使用同一个身份(比如你的 GitHub 身份),那么用这个最方便。
-
例如:
bash
arduinogit config --global user.name "zhangsan" git config --global user.email "zhangsan@example.com"
2. 项目特定设置
如果你需要在某个特定的项目中使用不同的 用户名和邮箱(例如,为公司项目使用公司邮箱,为个人项目使用个人邮箱),你可以在该项目目录下执行不带 --global 选项的命令。
bash
bash
# 进入你的项目根目录
cd /path/to/your/project
# 设置本项目专用的用户名和邮箱
git config user.name "Your Work Name"
git config user.email "your.work.email@company.com"
何时使用?
- 在工作电脑上,区分个人项目和工作项目。
- 在开源项目贡献中,使用你公开的 GitHub 邮箱。
3. 检查当前配置
设置完成后,你可以检查配置是否正确。
bash
lua
# 列出所有当前的配置
git config --list
# 或者只查看用户名和邮箱
git config user.name
git config user.email
# 检查全局的用户名和邮箱
git config --global user.name
git config --global user.email
重要提示
-
为什么这很重要?
- 你设置的
user.name和user.email会作为提交者信息被永久记录在每一次提交的历史中。 - GitHub、Gitee 等平台依靠邮箱地址 来将你的提交与你的账户关联起来。如果你在 GitHub 上使用的邮箱是
abc@example.com,那么本地配置的邮箱也必须是这个,你的提交才会被算作是你的贡献。
- 你设置的
-
如何选择邮箱?
- 对于 GitHub :你可以在 GitHub 的 Settings -> Emails 中查看你有哪些"认证邮箱"。使用其中任何一个(推荐使用主邮箱或为你配置的
noreply隐私邮箱)都可以。 - 对于公司内部:使用公司分配的邮箱地址。
- 对于 GitHub :你可以在 GitHub 的 Settings -> Emails 中查看你有哪些"认证邮箱"。使用其中任何一个(推荐使用主邮箱或为你配置的
-
修改配置
- 如果之前设置错了,只需重新执行一遍正确的设置命令即可覆盖。
总结
对于大多数个人用户,只需在终端中执行以下两条命令即可一劳永逸:
bash
arduino
git config --global user.name "你的GitHub用户名或常用名"
git config --global user.email "你的GitHub认证邮箱"
Git 工作流程与核心概念
在理解命令之前,先要了解 Git 的三个主要工作区,这能帮助你明白每个命令在哪个阶段使用:
- 工作区:你电脑上能看到的项目目录,在这里你编辑文件。
- 暂存区:一个中间区域。你把工作区的改动"暂存"到这里,准备下一次提交。
- 版本库:存放所有提交历史的地方。每次提交都是对暂存区内容的一个快照。
基本的流程是:工作区 -> git add -> 暂存区 -> git commit -> 版本库。
一、 基础必备命令
这些命令是使用 Git 的日常,必须熟练掌握。
| 命令 | 含义与作用 |
|---|---|
git init |
初始化一个新仓库 。在当前目录创建一个新的 .git 子目录,这意味着 Git 开始对这个目录进行版本控制。 |
git clone <url> |
克隆远程仓库 。将远程仓库(如 GitHub、Gitee 上的项目)完整地下载到本地。例如:git clone https://github.com/user/repo.git |
git add <file> |
将文件添加到暂存区。准备提交哪些文件。 |
git add .:添加当前目录下所有变动的文件到暂存区。 |
|
git add README.md:只添加 README.md 这个文件。 |
|
git status |
查看仓库状态。显示哪些文件已被修改、哪些已暂存、哪些未被跟踪。这是最常用的诊断命令。 |
git commit -m "提交信息" |
提交暂存区的文件。将暂存区的内容创建一个新的版本快照,并保存到版本库中。"提交信息" 应清晰描述本次提交的目的。 |
git push |
推送提交到远程仓库。将本地的提交上传到远程仓库(如 GitHub),与他人分享你的代码。 |
git pull |
拉取远程仓库更新 。从远程仓库下载最新的代码并合并到本地分支。相当于 git fetch(获取更新) + git merge(合并到当前分支)。 |
二、 查看与比较
这些命令帮助你了解项目的当前状态和历史。
| 命令 | 含义与作用 |
|---|---|
git log |
查看提交历史。按时间顺序显示所有的提交记录,包括提交哈希值、作者、日期和提交信息。 |
git log --oneline:以简洁的单行模式显示历史。 |
|
git log -p:显示每次提交的具体内容差异。 |
|
git diff |
查看工作区与暂存区的差异。显示尚未暂存的文件改动内容。 |
git diff --staged:查看暂存区与上一次提交的差异。 |
|
git show <commit-id> |
显示某次提交的详细信息。包括修改的文件和具体的代码变动。 |
三、 分支管理
分支是 Git 的杀手锏功能,允许你在独立的线上开发,而不会影响主线(master/main)。
| 命令 | 含义与作用 |
|---|---|
git branch |
列出所有本地分支 。当前分支前面会有一个 * 号。 |
git branch <branch-name> |
创建一个新分支。 |
git checkout <branch-name> |
切换到指定分支。 |
git switch <branch-name> |
切换到指定分支(较新的 Git 版本推荐使用,语义更清晰)。 |
git checkout -b <branch-name> |
创建并立即切换到新分支。这是非常常用的组合命令。 |
git switch -c <branch-name> |
同上,新版本的推荐写法。 |
git merge <branch-name> |
合并指定分支到当前分支 。例如,你在 feature 分支开发完,切换回 main 分支后,执行 git merge feature 来合并。 |
git branch -d <branch-name> |
删除一个已合并的分支(安全删除)。 |
git branch -D <branch-name> |
强制删除一个分支,即使它还没有被合并。 |
四、 撤销与回退
当你犯错时,这些命令是你的"后悔药"。
| 命令 | 含义与作用 | 风险 |
|---|---|---|
git restore <file> |
撤销工作区的修改 。将文件恢复到最后一次提交(或暂存)的状态。 (新版本推荐) | 会丢失工作区的修改 |
git checkout -- <file> |
同上,是老版本 Git 的命令。 | 会丢失工作区的修改 |
git restore --staged <file> |
将文件从暂存区移回工作区 。取消 git add 的操作,文件内容不变,但状态变为未暂存。 (新版本推荐) |
无 |
git reset HEAD <file> |
同上,是老版本 Git 的命令。 | 无 |
git reset --hard <commit-id> |
强制回退到某次提交。工作区、暂存区和版本库都会变成该次提交的样子。 | 高风险,会丢失之后的所有修改 |
git revert <commit-id> |
创建一个新的提交来撤销某次提交的更改。这是一种安全的撤销方式,因为它不会重写历史,适用于团队合作。 | 安全 |
五、 远程仓库协作
与 GitHub、Gitee 等远程仓库交互。
| 命令 | 含义与作用 |
|---|---|
git remote -v |
查看已配置的远程仓库地址 。通常名为 origin。 |
git remote add origin <url> |
添加一个远程仓库地址 并命名为 origin。通常在 git init 后使用,将本地仓库与远程仓库关联。 |
git push -u origin main |
首次推送并建立追踪关系 。-u 参数表示将本地的 main 分支与远程的 origin/main 分支关联起来,之后直接 git push 即可。 |
git fetch |
从远程仓库获取最新信息,但不会自动合并到工作区。让你可以看到别人做了什么。 |
git pull --rebase |
拉取更新并使用变基方式合并。这可以使提交历史线更整洁,避免不必要的合并提交。 |
实用命令组合示例
场景1:日常提交代码
bash
csharp
git status // 先看看改了哪些文件
git add . // 把所有改动都暂存起来
git commit -m "feat: 添加用户登录功能" // 提交到本地仓库
git push // 推送到远程仓库
场景2:在新分支上开发功能
bash
csharp
git switch -c new-feature // 创建并切换到新功能分支
// ... 进行开发,修改代码 ...
git add .
git commit -m "完成新功能开发"
git switch main // 切换回主分支
git merge new-feature // 将新功能合并到主分支
git branch -d new-feature // 删除已合并的功能分支
场景3:不小心改乱了文件,想重来
bash
arduino
git restore . // 撤销所有工作区的修改,恢复到最后一次提交的状态
建议你将此作为速查表,在实践中多多使用,自然就能熟记于心。