Git 和 GitHub 使用说明
1. 什么是 Git 和 GitHub?
Git
Git 是一个分布式版本控制系统,用于跟踪文件的变化,便于多人协作开发和代码管理。它可以记录文件的每一次修改,方便回滚到之前的版本,比较不同版本之间的差异等。
GitHub
GitHub 是一个基于 Git 的代码托管平台,提供了远程仓库存储、代码审查、问题跟踪、协作功能等。它允许开发者将本地 Git 仓库推送到远程服务器,实现代码的备份和共享。
2. Git 安装
Windows
- 访问 Git 官网
- 下载适合 Windows 的安装程序
- 运行安装程序,按照默认选项安装即可
- 安装完成后,打开命令提示符或 Git Bash,输入
git --version 验证安装
macOS
- 使用 Homebrew 安装:
brew install git
- 或从 Git 官网 下载安装包
- 安装完成后,打开终端,输入
git --version 验证安装
Linux
- Ubuntu/Debian:
sudo apt-get install git
- CentOS/Fedora:
sudo yum install git 或 sudo dnf install git
- 安装完成后,输入
git --version 验证安装
3. Git 基本配置
配置用户信息
1 2
| git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
|
配置默认编辑器
1 2 3 4 5
| git config --global core.editor vim
git config --global core.editor "code --wait"
|
查看配置信息
4. Git 基本操作
初始化仓库
1 2 3 4 5
| git init
git init /path/to/directory
|
克隆远程仓库
1
| git clone https://github.com/username/repository.git
|
查看仓库状态
添加文件到暂存区
1 2 3 4 5 6 7 8
| git add filename
git add .
git add directory/
|
提交文件到本地仓库
1 2 3 4
| git commit -m "提交信息"
git commit -a -m "提交信息"
|
查看提交历史
1 2 3 4 5 6 7 8
| git log
git log --oneline
git log -n
|
查看文件修改内容
1 2 3 4 5
| git diff
git diff --staged
|
撤销修改
1 2 3 4 5 6 7 8 9 10 11
| git checkout -- filename
git reset HEAD filename
git reset --soft HEAD^1
git reset --hard HEAD^1
|
5. GitHub 注册和设置
注册 GitHub 账号
- 访问 GitHub 官网
- 点击 “Sign up” 按钮
- 填写用户名、邮箱和密码
- 完成验证和注册流程
设置 SSH 密钥
为了避免每次推送都输入密码,可以设置 SSH 密钥:
1 2 3 4 5
| ssh-keygen -t ed25519 -C "your.email@example.com"
cat ~/.ssh/id_ed25519.pub
|
将公钥内容复制到 GitHub 的 SSH and GPG keys 设置页面(Settings > SSH and GPG keys > New SSH key)。
6. 远程仓库操作
添加远程仓库
1
| git remote add origin https://github.com/username/repository.git
|
查看远程仓库
推送本地仓库到远程
1 2 3 4 5
| git push -u origin main
git push origin branchname
|
从远程仓库拉取
1 2 3 4 5
| git pull origin main
git fetch origin
|
克隆远程仓库
1
| git clone https://github.com/username/repository.git
|
7. 分支管理
查看分支
1 2 3 4 5
| git branch
git branch -a
|
创建分支
切换分支
1 2 3 4
| git checkout branchname
git switch branchname
|
创建并切换分支
1 2 3 4
| git checkout -b branchname
git switch -c branchname
|
合并分支
1 2 3 4 5
| git checkout main
git merge branchname
|
删除分支
1 2 3 4 5 6 7 8
| git branch -d branchname
git branch -D branchname
git push origin --delete branchname
|
8. 协作工作流
Fork 工作流
- Fork 别人的仓库到自己的 GitHub
- 克隆 Fork 后的仓库到本地
- 创建新分支进行修改
- 提交修改并推送到自己的远程仓库
- 发起 Pull Request 到原仓库
Pull Request 流程
- 在 GitHub 上打开仓库页面
- 点击 “New Pull Request” 按钮
- 选择源分支和目标分支
- 填写 Pull Request 描述
- 点击 “Create Pull Request” 按钮
9. 常见问题和解决方案
冲突解决
当合并分支或拉取代码时可能会遇到冲突:
- 使用
git status 查看冲突文件
- 打开冲突文件,手动解决冲突(冲突部分会有特殊标记)
- 解决冲突后,使用
git add 添加文件
- 使用
git commit 提交解决冲突
忘记提交信息
如果提交时忘记写提交信息,可以使用:
推送被拒绝
如果推送被拒绝,可能是因为远程仓库有本地没有的提交:
1 2
| git pull origin main git push origin main
|
10. GitHub Actions 简介
什么是 GitHub Actions
GitHub Actions 是 GitHub 提供的持续集成/持续部署 (CI/CD) 平台,允许你自动化软件开发工作流程。你可以创建工作流来构建、测试、打包、发布或部署项目。
工作流文件结构
GitHub Actions 工作流由 YAML 文件定义,存储在仓库的 .github/workflows/ 目录中。
基本工作流文件结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| name: 工作流名称
on: push: branches: [main] pull_request: branches: [main]
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: 设置 Node.js uses: actions/setup-node@v3 with: node-version: "16" - name: 安装依赖 run: npm install - name: 构建项目 run: npm run build
|
常用触发条件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| on: schedule: - cron: "0 0 * * *"
workflow_dispatch: inputs: environment: description: "环境" required: true default: "staging"
release: types: [published]
issues: types: [opened, reopened]
|
常用示例
1. Node.js 项目 CI/CD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| name: Node.js CI
on: push: branches: [main] pull_request: branches: [main]
jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [14.x, 16.x, 18.x]
steps: - uses: actions/checkout@v3 - name: 使用 Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: node-version: ${{ matrix.node-version }} cache: "npm" - run: npm ci - run: npm run build --if-present - run: npm test
|
2. 自动部署到 GitHub Pages
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| name: 部署到 GitHub Pages
on: push: branches: [main]
jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: 设置 Node.js uses: actions/setup-node@v3 with: node-version: "16" - run: npm install - run: npm run build - name: 部署到 GitHub Pages uses: peaceiris/actions-gh-pages@v3 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: ./dist
|
常用 Actions
11. 常用 Git 命令速查表
| 命令 |
功能 |
git init |
初始化 Git 仓库 |
git clone |
克隆远程仓库 |
git status |
查看仓库状态 |
git add |
添加文件到暂存区 |
git commit |
提交文件到本地仓库 |
git push |
推送本地仓库到远程 |
git pull |
从远程仓库拉取 |
git branch |
管理分支 |
git checkout |
切换分支 |
git merge |
合并分支 |
git log |
查看提交历史 |
git diff |
查看文件修改内容 |
git remote |
管理远程仓库 |
常见问题
Git文件名大小写更改无法提交的解决方案
在开发过程中,你是否遇到过这样的情况:明明修改了文件名的大小写,Git却提示”working tree clean”,没有任何变更可以提交?这个问题在macOS和Windows系统上尤为常见,
1 2 3 4 5 6
| $ git mv UserService.js userService.js $ git status Changes to be committed: (use "git restore --staged <file>..." to unstage) renamed: UserService.js -> userService.js
|
希望这份 Git 和 GitHub 使用说明对你有所帮助!如果有任何问题,请随时查阅 Git 官方文档 或 GitHub 帮助中心。