Git vs. GitHub

要明确两个概念:
- Git: 一个分布式版本控制系统,它是一个软件,负责在你的电脑上跟踪文件的变化、管理历史记录、分支等,它本身不依赖 GitHub。
- GitHub: 一个基于 Git 的代码托管平台和服务,你可以把它想象成一个“云硬盘”,专门用来存放 Git 仓库,你可以把本地的 Git 仓库推送到 GitHub 上,实现备份、协作和分享。
在 Windows 上,我们通常使用 Git Bash 作为命令行工具来与 Git 和 GitHub 交互,它模拟了 Linux 的命令行环境,让你可以使用熟悉的 ls, cd, cp 等命令。
第一部分:环境准备
在运行任何命令之前,你需要先安装和配置好 Git。
安装 Git for Windows
这是最关键的一步,Git for Windows 包含了 Git 本身、Git Bash(命令行工具)以及 Git GUI(图形界面)。

- 下载: 访问 Git for Windows 官网 下载最新版本。
- 安装: 运行下载的安装程序,在安装过程中,大部分选项保持默认即可,只有一个建议:
- 在 "Choosing the default editor used by Git" 步骤,如果你不熟悉,可以选择
VS Code,这是一个非常流行且好用的编辑器。
- 在 "Choosing the default editor used by Git" 步骤,如果你不熟悉,可以选择
- 验证: 安装完成后,打开 Git Bash(可以在开始菜单找到),输入以下命令检查是否安装成功:
git --version
如果看到类似
git version 2.x.x的输出,说明安装成功。
配置 Git
这是首次使用前必须完成的步骤,Git 需要知道你是谁,这样当你提交代码时,它会记录你的身份信息。
-
打开 Git Bash。
-
设置你的用户名和邮箱,这个信息会永久地嵌入到你的提交记录中,请确保正确。
(图片来源网络,侵删)# 设置你的用户名(通常是你的 GitHub 用户名) git config --global user.name "你的GitHub用户名" # 设置你的邮箱(必须是你在 GitHub 上注册的邮箱) git config --global user.email "你的GitHub邮箱@example.com"
-
(可选)查看配置: 你可以输入以下命令查看所有全局配置。
git config --list --global
配置 SSH 密钥(推荐)
每次 push 或 pull 代码时都输入用户名和密码非常麻烦,配置 SSH 密钥可以实现免密登录。
-
生成 SSH 密钥: 在 Git Bash 中运行以下命令(将邮箱替换成你的 GitHub 邮箱):
ssh-keygen -t ed25519 -C "你的GitHub邮箱@example.com"
然后一路按回车键即可,它会默认在
C:/Users/你的用户名/.ssh/目录下生成id_ed25519(私钥)和id_ed25519.pub(公钥)。 -
复制公钥: 打开公钥文件
id_ed25519.pub,将其中的复制到剪贴板,你可以用记事本打开,或者用命令:cat ~/.ssh/id_ed25519.pub # 然后手动复制输出的全部内容
-
添加到 GitHub:
- 登录你的 GitHub 账户。
- 点击右上角头像 ->
Settings。 - 在左侧菜单栏找到并点击
SSH and GPG keys。 - 点击
New SSH key按钮。 - 给密钥起个名字("My Windows Laptop"),然后将刚刚复制的公钥内容粘贴到
Key文本框中。 - 点击
Add SSH key。
-
测试连接: 在 Git Bash 中运行:
ssh -T git@github.com
如果看到类似
Hi 你的GitHub用户名! You've successfully authenticated...的欢迎信息,说明配置成功!
第二部分:核心工作流程命令
这部分命令是日常使用频率最高的。
克隆仓库
将 GitHub 上的仓库下载到你的本地电脑。
# 克隆一个仓库到当前目录 git clone https://github.com/用户名/仓库名.git # 克隆并指定一个本地文件夹名 git clone https://github.com/用户名/仓库名.git 我想要的文件夹名 # 如果配置了SSH密钥,使用SSH URL(推荐) git clone git@github.com:用户名/仓库名.git
检查状态
查看当前仓库的状态,比如哪些文件被修改了,哪些文件是新添加的等,这是最常用的命令之一。
git status
添加文件到暂存区
当你修改了文件后,需要先“添加”它们到暂存区,告诉 Git 你准备提交这些修改。
# 添加单个文件 git add 文件名.txt # 添加多个文件 git add 文件名1.txt 文件名2.py # 添加当前目录下所有修改过的文件 git add . # 添加所有修改(包括新文件和删除的文件),但忽略未被 Git 追踪的文件 git add -A
提交
将暂存区的修改保存到本地仓库,这是你代码的“快照”。
# 提交并添加提交信息 git commit -m "这里写你的提交信息,修复了登录按钮的bug" # 修改上一次的提交信息(如果还没推送到远程) git commit --amend -m "新的提交信息"
推送到远程仓库
将本地的提交推送到 GitHub,这样其他人就能看到你的修改了。
# 推送当前分支的提交到远程对应分支 git push origin 分支名 # 推送 main 分支 git push origin main # 如果是第一次推送新分支,可以使用 -u 设置上游分支,之后就可以直接用 git push git push -u origin feature-branch
从远程仓库拉取
获取远程仓库的最新代码,并合并到你的当前分支,这通常在你开始工作前做一下,以获取最新的更新。
# 从远程拉取并合并到当前分支 git pull origin 分支名 # 从 main 分支拉取 git pull origin main
查看历史记录
查看提交历史。
# 查看简洁的提交历史 git log --oneline # 查看带图形化的分支历史 git log --graph --oneline --all
第三部分:分支管理命令
分支是 Git 的强大功能,允许你在不影响主代码的情况下进行开发。
创建和切换分支
# 创建一个新分支并立即切换过去 git checkout -b feature-新功能名 # 或者分两步: # 1. 创建分支 git branch feature-新功能名 # 2. 切换到该分支 git checkout feature-新功能名
查看分支
# 查看所有本地分支,当前分支会用 * 标出 git branch # 查看所有远程分支 git branch -r # 查看所有本地和远程分支 git branch -a
合并分支
将一个分支的修改合并到当前分支。
# 假设你在 main 分支上,想合并 feature-新功能名 分支 git checkout main git merge feature-新功能名
删除分支
# 删除本地分支(必须确保不在该分支上) git branch -d feature-新功能名 # 强制删除一个未被合并的分支 git branch -D feature-新功能名 # 删除远程分支 git push origin --delete feature-新功能名
第四部分:常用进阶命令
忽略文件
创建一个名为 .gitignore 的文件,在里面列出不需要 Git 追踪的文件或文件夹。
# .gitignore 示例
# 忽略所有 .log 文件
*.log
# 忽略 dist 文件夹
/dist/
# 忽略 IDEA 编辑器的配置文件
.idea/
查看差异
# 查看工作区与暂存区的差异 git diff # 查看暂存区与上一次提交的差异 git diff --staged # 查看两个提交之间的差异 git diff <commit-id-1> <commit-id-2>
撤销操作
# 撤销工作区的修改(让文件回到最近一次 commit 或 add 的状态) git checkout -- 文件名.txt # 撤销暂存区的修改(将 add 的文件从暂存区移除,但保留工作区的修改) git reset HEAD 文件名.txt # 撤销上一次的提交(但保留修改内容在暂存区) git reset --soft HEAD~1 # 撤销上一次的提交(并丢弃修改内容) git reset --hard HEAD~1
第五部分:实用技巧
使用 Git GUI
如果你觉得记命令很麻烦,可以使用 Git 自带的图形界面工具。
- 打开方式: 在 Git Bash 中输入
git gui。 - 功能: 它可以可视化地帮你完成
add,commit,push,pull,merge等操作,非常适合初学者。
配置别名
为常用命令设置简短的别名,提高效率。
# 在 Git Bash 中配置 git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.cm 'commit -m' git config --global alias.pu 'push origin' git config --global alias.pl 'pull origin' # 之后就可以用 st 代替 status,用 cm 代替 commit -m 了 git st git cm "提交信息"
希望这份详细的指南能帮助你在 Windows 上顺利地使用 GitHub 命令!熟能生巧,多加练习很快就能掌握。
