跳过正文
  1. 文章/

Git与GitHub入门指南

·3 分钟
 Author
文森的科技小站
目录

Git与GitHub入门指南
#

Git是一款分布式版本控制软件,用于记录代码的历史变更,支持多分支开发和远程协作。本文将带你从零开始了解Git的基本概念、优势、常用命令及工作流程,并介绍GitHub平台如何助力团队协作。


Git和GitHub基本概念
#

Git简介
#

Git是一种分布式版本控制系统,意味着每个开发者本地都有完整的仓库副本,包括所有提交、分支和文件。与集中式版本控制不同,Git允许离线操作并提供更强的灵活性。

  • 分支轻量且易创建,支持大量分支并行开发
  • 通过SHA哈希存储变更,适合文本文件版本管理,不适合大二进制文件
  • 支持本地和远程仓库连接,方便推送(push)和拉取(pull)代码

Git核心组件由C语言、Shell脚本、Perl和Tcl编写,源代码托管在GitHub的git/git仓库

GitHub简介
#

GitHub是基于Git的协作平台,支持拉取请求、代码评审、集成测试等功能,极大提升团队开发效率。开发者通常在本地使用Git进行开发,通过GitHub进行远程协作。

学习Git与GitHub的最佳实践课程推荐GitHub学习实验室

为什么使用Git?
#

使用版本控制可以有效防止代码丢失,Git具有以下显著优势:

  1. 速度快

Git通过SHA压缩技术,使代码提交和检索速度极快。

  1. 处理合并冲突能力强

允许多人同时编辑同一文件,Git能智能处理冲突,保障团队协作顺畅。

  1. 分支成本低

分支创建和管理成本低,开发者可以在分支中安全开发,及时推送并获得反馈。

  1. 易于回滚

提交不可更改,只能新增替代提交,支持轻松回退到历史版本,降低开发风险。

如何使用Git?
#

学习Git基础命令
#

推荐使用Git速查表,其中包含常用命令:

# 克隆远程仓库
git clone [url]

# 查看当前状态
git status

# 查看分支
git branch

# 切换分支
git checkout [branch-name]

# 添加文件到暂存区
git add [file]

# 提交代码并添加说明
git commit -m "commit message"

# 拉取远程更新并合并
git pull

# 推送本地提交
git push

# 查看提交日志
git log

# 查看远程仓库信息
git remote -v

更多GitHub相关的技术文档可参考GitHub帮助文档

Git工作流入门
#

  1. 创建分支:从主分支main切出新分支,建议以功能命名。
  2. 修改并提交:编辑代码后,使用git addgit commit保存变更。
  3. 推送代码到远程:首次推送新分支时,使用git push -u origin [branch-name]建立关联。
  4. 发起拉取请求(Pull Request):请求将分支合并到main,便于代码审查和集成测试。
  5. 协作开发:团队成员可以在拉取请求中评论、审查并提出修改建议。
  6. 合并分支:确认无误后,将功能分支合并到main,并删除已完成的分支。

Git与GitHub初次配置
#

1、下载并安装最新版本的Git
#

检查本地 Git 是否安装并可用bash

git --version
  • 如果返回类似 git version 2.x.x,说明 Git 已安装。

综合一键检测脚本(复制粘贴运行)
#

echo "1. 检查 Git 版本..."
git --version

echo -e "\n2. 测试 HTTPS 连接..."
curl -I https://github.com 2>/dev/null | head -n 1

echo -e "\n3. 测试 Git 远程访问..."
git ls-remote https://github.com/git/git.git >/dev/null 2>&1 && echo "Git 连接 GitHub 成功" || echo "Git 连接失败"

echo -e "\n4. 测试 SSH 连接(如果使用 SSH)..."
ssh -T git@github.com 2>&1

2、配置Git身份信息
#

打开终端,输入以下命令配置用户名和邮箱:

git config --global user.name "你的名字"
git config --global user.email "你的GitHub邮箱"

3、配置GitHub SSH密钥(推荐)
#

打开本地终端,输入以下代码,生成并添加SSH密钥,确保安全免密码推送:

# 生成SSH密钥
ssh-keygen -t ed25519 -C "你的GitHub邮箱"

# 直接回车三次使用默认路径且不设置密码

# 查看公钥内容
cat ~/.ssh/id_ed25519.pub

打开 GitHub → Settings → SSH and GPG keys → New SSH key标题随便填,粘贴刚才复制的内容 → Add SSH key

4、测试git和GitHub连通
#

终端输入代码:

ssh -T git@github.com

成功会返回:

Hi username! You've successfully authenticated, but GitHub does not provide shell access.

如果提示 Permission denied (publickey),说明 SSH 密钥未配置或未加载。


Git基本操作流程
#

场景一:本地全新项目 → 推到 GitHub 新仓库
#

# 1. 进入项目文件夹
cd /path/to/your/project

# 2. 初始化 Git 仓库
git init

# 3. 添加所有文件
git add .

# 4. 提交(写个有意义的留言)
git commit -m "初次提交:我的超级项目 v1.0"

# 5. 在 GitHub 网页新建仓库(别勾初始化 README!)
#    仓库名:my-awesome-project

# 6. 复制 GitHub 给的 SSH 地址,例如:
#    git@github.com:vincentS1981/my-awesome-project.git

# 7. 关联远程仓库
git remote add origin git@github.com:vincentS1981/my-awesome-project.git

# 8. 推上去!(-u 记住以后直接 git push)
git push -u origin main

场景二:本地已有 Git 项目 → 推到 GitHub
#

cd /path/to/your/existing-project

# 确认已有 commit
git log --oneline

# 关联 + 推送(同上 7~8)
git remote add origin git@github.com:vincentS1981/existing-project.git
git push -u origin main

每天更新代码只需 3 行
#

git add .
git commit -m "修复了登录 bug"
git push

场景三:克隆远程仓库到本地,开展工作流程
#

  1. 直接 clone (根据需要选择如下几种方式)
## 完整克隆项目,包括版本提交历史
git clone https://github.com/xxx/yyy.git
# 或者 SSH 方式(推荐,免输密码)
git clone git@github.com:xxx/yyy.git
## 仅克隆最新一次提交的代码仓库
git clone --depth=1 https://github.com/xxx/yyy.git
  1. 进入项目目录
cd yyy
  1. 查看远程分支情况
git branch -a        # 查看所有分支
git remote show origin   # 看远程默认分支是哪个
  1. 创建并切换到自己的开发分支(强烈推荐!不要直接在 main/master 上改)
# 推荐命名方式(选一个你团队习惯的)
git checkout -b feature/功能描述
# 或者
git checkout -b dev-你的名字
# 或者
git checkout -b bugfix/xxxxxx

# 推到远程建立同名分支(以后就不用再加 -u 了)
git push -u origin feature/功能描述
  1. 日常开发完整流程(以后每天都这么干)
# 1. 每天开始工作前,先拉最新代码(防止冲突)
git pull        # 或者 git pull --rebase(保持线性历史)

# 2. 正常写代码...

# 3. 修改完了,分阶段提交(推荐小提交)
git add .
git commit -m "feat: 添加用户登录功能"

# 4. 推送到远程自己的分支
git push        # 因为之前加了 -u,这里直接 push 就行

# 5. 去 GitLab/GitHub 网页点 Merge Request / Pull Request
#    让别人 review,合并到 main/master/develop 分支

场景四:本地有修改未提交,如何拉取远程合并
#

# 把本地分支强制重置为远程完全一致的状态(所有本地修改全丢)
git fetch origin
git reset --hard origin/你的分支名

# 例如你当前在 main 分支
git fetch origin
git reset --hard origin/main

# 如果你想顺便清理未跟踪的文件(比如新生成的文件)
git clean -fd

或者:

# 1. 先把本地修改暂时藏起来
git stash push -m "临时保存的修改"

# 2. 拉取远程并合并(或变基)
git pull                  # 或者 git pull --rebase
# 或者更稳妥:
# git fetch origin
# git rebase origin/main   #(以 main 为例)

# 3. 之后如果你还想要回刚才的修改
git stash pop             # 恢复刚才藏起来的修改,可能会有冲突需要手动解决

# 如果确认不要了,直接清空stash
git stash drop            # 删掉最近一个
# 或
git stash clear           # 清空所有stash

场景五:有错误需要回退以前的版本
#

# 场景1:还没 commit,想丢弃所有修改(最常用!)
git restore .                  # 推荐(git 2.23+)
# 或者老写法:
git checkout -- .

# 场景2:已经 commit 了,但还没 push,想回退1个版本(彻底删除)
git reset --hard HEAD^         # 回退1次
git reset --hard HEAD~3        # 回退3次
git reset --hard abc1234       # 回退到指定commit(先 git log 找哈希)

# 场景3:已经 push 到远程了,想回滚(大家都能接受的方式)
git revert HEAD                # 撤销最近一次提交
git revert abc1234             # 撤销指定那次提交
git revert HEAD~2..HEAD        # 一次性撤销最近两次提交

# 场景4:先看看历史记录(强烈建议每次回退前都看一眼)
git log --oneline --graph --decorate
git reflog                     # 能看到所有操作记录(包括reset后的也能找回)

相关资源
#



📖 阅读量: