git 常用命令行

核心命令

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

    arduino 复制代码
    git 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

重要提示

  1. 为什么这很重要?

    • 你设置的 user.nameuser.email 会作为提交者信息被永久记录在每一次提交的历史中。
    • GitHub、Gitee 等平台依靠邮箱地址 来将你的提交与你的账户关联起来。如果你在 GitHub 上使用的邮箱是 abc@example.com,那么本地配置的邮箱也必须是这个,你的提交才会被算作是你的贡献。
  2. 如何选择邮箱?

    • 对于 GitHub :你可以在 GitHub 的 Settings -> Emails 中查看你有哪些"认证邮箱"。使用其中任何一个(推荐使用主邮箱或为你配置的 noreply 隐私邮箱)都可以。
    • 对于公司内部:使用公司分配的邮箱地址。
  3. 修改配置

    • 如果之前设置错了,只需重新执行一遍正确的设置命令即可覆盖。

总结

对于大多数个人用户,只需在终端中执行以下两条命令即可一劳永逸:

bash

arduino 复制代码
git config --global user.name "你的GitHub用户名或常用名"
git config --global user.email "你的GitHub认证邮箱"

Git 工作流程与核心概念

在理解命令之前,先要了解 Git 的三个主要工作区,这能帮助你明白每个命令在哪个阶段使用:

  1. 工作区:你电脑上能看到的项目目录,在这里你编辑文件。
  2. 暂存区:一个中间区域。你把工作区的改动"暂存"到这里,准备下一次提交。
  3. 版本库:存放所有提交历史的地方。每次提交都是对暂存区内容的一个快照。

基本的流程是:工作区 -> 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 . // 撤销所有工作区的修改,恢复到最后一次提交的状态

建议你将此作为速查表,在实践中多多使用,自然就能熟记于心。

相关推荐
Tzarevich4 小时前
CSS3星球大战:前端代码界的视觉导演艺术
前端·css
BBB努力学习程序设计4 小时前
CSS复合选择器
前端·html
西洼工作室4 小时前
Strapi快速入门:从安装到API开发
前端·后端
光影少年4 小时前
前端线上出现白屏如何排查问题所在,利用第三方的工具都有哪些
前端·学习·web安全·前端框架
濑户川4 小时前
Vue3 计算属性与监听器:computed、watch、watchEffect 用法解析
前端·javascript·vue.js
_Sem4 小时前
KMP实战:从单端到跨平台的完整迁移指南
android·前端·app
Carry3454 小时前
React 与 Vue 开发差异——CSS 样式
前端
前端九哥5 小时前
我删光了项目里的 try-catch,老板:6
前端·vue.js
2301_764441335 小时前
身份证校验工具
前端·python·1024程序员节