Git&GitHub日常使用方法


应该学过计算机的人都知道git和github,基本上伴随我们的整个编程生涯。但是博主由于并非科班出身,虽然日常都在用,但是一直对里面的一些概念和操作不是很清楚,每次遇到问题都是百度一下,解决了就忘记了。 所以想通过这篇文章来梳理记录一下git和github的日常使用方法,方便自己查阅,也希望能帮助到有需要的人。

Git和GitHub的概念

  • Git 是一个分布式版本控制系统,用于管理代码版本和协作开发。
  • GitHub 是一个基于 Git 的代码托管平台,提供了代码托管、版本管理、协作开发等功能。同时增加了界面化的功能,如 Pull Requests、Issues 和 Wiki。

git与github的联合配置

  1. 安装Git
  • 访问 Git 官方网站 下载并安装适合操作系统的版本。
  • 验证安装:在命令行输入 git --version,显示版本号则安装成功。
  1. 配置Git
  • 配置用户名:git config --global user.name "Your Name"
  • 配置邮箱:git config --global user.email "your_email@example.com"
  1. 创建 GitHub 账户并设置 SSH 密钥
  • 注册 GitHub 账户
  • 生成 SSH 密钥:ssh-keygen -t ed25519 -C "your_email@example.com"
  • 将 SSH 密钥添加到 GitHub 账户:将 ~/.ssh/id_ed25519.pub 文件中的内容添加到 GitHub 账户的 SSH keys 中。
  • 验证GitHub连接:ssh -T git@github.com 如果你是在docker容器中连接github,为了避免SSH 密钥的泄漏风险应该使用宿主机已有的 SSH 密钥 注意.ssh目录中的权限不能修改,如果出现权限太过开放,则需要修改.ssh目录的权限
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/id_ed25519
    chmod 644 ~/.ssh/id_ed25519.pub
  1. Git 与 GitHub 的连接
  • 在 GitHub 上创建仓库,获取仓库地址(https或ssh地址)
  • 在项目的本地目录中初始化仓库:git init
  • 添加远程仓库地址:git remote add origin <仓库地址> # 添加远程仓库
  • 基本命令:
    git add .          # 添加所有文件到暂存区
    git commit -m "提交信息"  # 提交到本地仓库
    git push origin main  # 推送到远程仓库
    ### submodule 在 Git 中,子模块(submodule) 是一个 Git 仓库嵌套在另一个 Git 仓库中的工具。将另一个仓库的特定分支作为子模块加入当前仓库的流程如下:
  • 在主仓库中添加子模块:git submodule add -b <分支名> <目标仓库地址> <子模块路径>
    • -b <分支名>: 指定目标仓库的分支。
    • <目标仓库地址>: 如:https://github.com/example/target-repo.git submodules/target-repo
    • <子模块路径>:子模块在当前仓库中的存储路径, 如submodules/target-repo
  • 初始化并更新子模块:git submodule update --init --recursive
  • 提交更改,添加子模块后,需要提交子模块的元信息到主仓库:
    git add .gitmodules submodules/target-repo
    git commit -m "Add submodule target-repo"
  • 如果目标仓库的指定分支发生更改,你可以更新子模块到最新状态:git submodule update --remote
  • 如果你是克隆一个包含子模块的仓库,可以使用 git clone --recurse-submodules <仓库地址> 选项来自动初始化和更新子模块。或者在正常克隆后执行 git submodule update --init --recursive
  • 子模块也可以切换分支,需要进入子模块目录,执行:git checkout <自模块的分支名>

典型工作流程

  1. 克隆仓库:git clone <仓库地址>
  2. 同步更新:git pull origin main
  3. 分支管理:
    • 创建分支:git branch <分支名>
    • 切换分支:git checkout <分支名>
    • 合并分支:git merge <分支名> # 要先切换到主分支
    • 删除分支:git branch -d <分支名>
  4. 提交更改:
    git add .
    git commit -m "提交信息"
    git push origin main

GitHub高级功能

fork

在 GitHub 上,如果你直接clone了一个别人的仓库,会没有原仓库的写入权限(例如为他人开源项目贡献代码)。即使有权限,但团队页也可能有明确要求或想避免在原仓库中直接创建分支。 所以fork就是为了解决这个问题的,fork的作用是在你的仓库中创建一个原仓库的副本,你可以在这个副本上自由修改,然后通过pull request向原仓库提交修改。 1. 在 GitHub 上点击仓库页面右上角的 Fork 按钮,创建一个你的副本仓库。 2. 将 Fork 的仓库克隆到本地:

git clone <你的 Fork 仓库地址>
3. 创建新分支:
git checkout -b feature-branch # -b 表示创建并切换到新分支
4. 提交更改:
git add .
git commit -m "添加新功能"
git push origin feature-branch
5. 在 GitHub 上进入你的 Fork 仓库,点击 “New Pull Request”,选择将你的分支合并到原仓库的主分支(如 main)。

Fork 的仓库能否跟踪原仓库的更改? Fork 仓库可以跟踪原仓库的更改,但需要手动同步更新。 1. 添加原仓库的远程地址:

git remote add upstream <原仓库地址>
2. 验证是否添加成功:git remote -v 输出类似:
origin    <你的 Fork 仓库地址> (fetch)
upstream  <原仓库地址> (fetch)
3. 同步原仓库的更新: - 从 upstream 拉取最新代码:
git fetch upstream
- 合并原仓库的主分支代码到你的主分支:
git checkout main
git merge upstream/main
- 推送更新到你的 Fork 仓库:
git push origin main
如果 Fork 仓库是用作完全独立的项目,且不再需要原仓库的更新或提交历史,可以清除.git重新初始化
rm -rf .git
git init
git remote add origin <你的 Fork 仓库地址>
git add .
git commit -m "初始化"
git push origin main

# 此时Fork 仓库已经是一个全新的仓库,你没有办法再跟踪原仓库的更新了,也不能提交pull request

Pull Requests

Pull Request (PR) 是协作开发的重要工具,用于在分支之间或不同开发者的仓库之间合并代码改动,同时提供审阅、讨论和测试的机会。 1. 创建 Pull Request - 确保你的改动已经推送到远程仓库中的某个分支(如 feature-branch)。 - 在 GitHub 网站上,进入目标仓库,点击 “Pull Requests”。 - 点击 “New Pull Request”。 - 选择: - Base Branch:要合并到的主分支(如 main) - Compare Branch:你的开发分支(如 feature-branch) 2. 审阅和讨论 - 代码审阅者会看到你的 PR,提出评论或修改建议。 - 你可以根据反馈进行改动,并通过提交新的代码到分支自动更新 PR。 3. 合并 PR - 审阅通过后,仓库管理员或 PR 创建者可以点击 “Merge Pull Request”。 - GitHub 提供多种合并方式: - Merge Commit(默认方式):保留所有提交历史。 - Squash and Merge:将所有提交合并为一个提交。 - Rebase and Merge:将分支历史与主分支合并,保留线性历史。 4. 关闭 PR - 如果 PR 不再需要,可以选择关闭 PR,而不合并改动。

Issues

Issues 是用于跟踪任务、记录 Bug 或建议新功能的工具。它是协作和项目管理的重要部分。

  1. 创建 Issue
  • 在仓库主页,点击 “Issues”。
  • 点击 “New Issue”。
  • 填写 Issue 标题和描述。
  • 添加标签(Labels)标记类型(如 Bug、Enhancement)、分配人员(Assignees)和里程碑(Milestones)。
  1. 管理 Issue
  • 可以对 Issue 进行评论和讨论。
  • 可以将 Issue 关联到 PR 或者 Issue。
  1. 关闭 Issue
  • 当 Issue 解决后,可以点击 “Close Issue” 关闭。
  • 如果与 PR 关联,PR 合并时可以自动关闭 Issue(在 PR 描述中写 Fixes #)。

Actions

GitHub Actions 是 GitHub 提供的持续集成/持续部署(CI/CD)工具,用于自动化构建、测试和部署流程。 1. 创建 Workflow - 在仓库中创建 .github/workflows 目录。 - 在目录中创建 .yml 文件,定义 Workflow。示例:

name: CI

on:
push:
    branches:
    - main

jobs:
build:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
        uses: actions/checkout@v2
    - name: Set up Node.js
        uses: actions/setup-node@v3
        with:
        node-version: 16
    - name: Install dependencies
        run: npm install
    - name: Run tests
        run: npm test
2. 触发 Workflow - 每次推送代码或创建 PR,Actions 会自动运行。 - 运行结果可以在仓库的 “Actions” 标签页中查看。 3. 使用现成模板 - GitHub 提供了许多现成的 Workflow 模板,如代码格式检查、构建部署等,可以直接使用。

Projects

Projects 是 GitHub 提供的项目管理工具,用于组织和跟踪任务、Issue 和 PR。 - 创建项目 - 在仓库页面,点击 “Projects” - 点击 “New Project”。 - 选择模板(如 Kanban Board)或自定义项目布局。 - 添加任务 - 将 Issues 或 Pull Requests 直接添加到项目中。 - 可以在项目中拖动任务,调整任务状态或优先级。 - 管理任务 - 通过拖放操作移动任务到不同阶段(如 “To Do” -> “In Progress” -> “Done”)。 - 设置优先级、截止日期和责任人。

Wiki

Wiki 是一个仓库附带的文档存储工具,适用于记录项目文档、API 说明或团队协作指南。

  • 在仓库页面,点击 “Wiki”。
  • 点击 “Create the first page”。
  • 编辑页面内容,支持 Markdown 语法。

文章作者: 庞贝堡垒
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 庞贝堡垒 !
评论
  目录