活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

GitHub项目上传完全指南:从基础操作到进阶技巧让新手也能轻松掌握代码托管与团队协作

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-17 18:50:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

GitHub作为全球最大的代码托管平台,已经成为现代软件开发不可或缺的工具。无论是个人项目还是团队协作,GitHub都提供了强大的版本控制和协作功能。本文旨在为新手提供一份全面的GitHub项目上传指南,从最基础的操作到高级的团队协作技巧,帮助读者快速掌握GitHub的使用方法,提高开发效率和协作质量。

GitHub基础概念

在开始使用GitHub之前,我们需要了解一些基本概念:

什么是GitHub?

GitHub是一个基于Git的代码托管平台,提供了分布式版本控制和源代码管理功能。它允许开发者存储代码、跟踪变更、协作开发,并构建软件项目。

核心概念解释

1. 仓库(Repository):仓库是项目的存储空间,包含项目的所有文件、文件夹和修订历史。GitHub上的仓库可以是公开的(任何人都可以查看)或私有的(只有授权用户可以访问)。
2. Git:Git是一个分布式版本控制系统,用于跟踪文件变化和协调多人之间的工作。GitHub是基于Git构建的。
3. 提交(Commit):提交是对项目变更的保存点,每个提交都有一个唯一的ID和提交信息。
4. 分支(Branch):分支允许你在不影响主代码的情况下开发新功能或修复问题。主分支通常称为”main”或”master”。
5. 克隆(Clone):克隆是将远程仓库复制到本地的过程。
6. 推送(Push):推送是将本地提交上传到远程仓库的过程。
7. 拉取(Pull):拉取是从远程仓库获取最新变更的过程。
8. Pull Request(PR):Pull Request是一种通知机制,用于告知团队成员你已经完成了一些工作,希望他们审查并合并到主分支。

仓库(Repository):仓库是项目的存储空间,包含项目的所有文件、文件夹和修订历史。GitHub上的仓库可以是公开的(任何人都可以查看)或私有的(只有授权用户可以访问)。

Git:Git是一个分布式版本控制系统,用于跟踪文件变化和协调多人之间的工作。GitHub是基于Git构建的。

提交(Commit):提交是对项目变更的保存点,每个提交都有一个唯一的ID和提交信息。

分支(Branch):分支允许你在不影响主代码的情况下开发新功能或修复问题。主分支通常称为”main”或”master”。

克隆(Clone):克隆是将远程仓库复制到本地的过程。

推送(Push):推送是将本地提交上传到远程仓库的过程。

拉取(Pull):拉取是从远程仓库获取最新变更的过程。

Pull Request(PR):Pull Request是一种通知机制,用于告知团队成员你已经完成了一些工作,希望他们审查并合并到主分支。

GitHub账号设置与配置

创建GitHub账号

1. 访问GitHub官网(https://github.com)
2. 点击右上角的”Sign up”按钮
3. 输入用户名、邮箱地址和密码
4. 选择验证邮箱的方式(通过验证码或点击邮件中的链接)
5. 完成人机验证(如选择特定图片)
6. 点击”Create account”完成注册

个人资料设置

1. 登录GitHub账号
2. 点击右上角的头像,选择”Settings”
3. 在”Profile”部分,可以设置:头像姓名公开的邮箱个人简介网站位置公司Twitter用户名
4. 头像
5. 姓名
6. 公开的邮箱
7. 个人简介
8. 网站
9. 位置
10. 公司
11. Twitter用户名

• 头像
• 姓名
• 公开的邮箱
• 个人简介
• 网站
• 位置
• 公司
• Twitter用户名

安全设置

1. 在”Settings”中,选择”Security”选项
2. 启用双因素认证(2FA):点击”Two-factor authentication”选择使用认证应用(如Google Authenticator)或短信按照提示完成设置
3. 点击”Two-factor authentication”
4. 选择使用认证应用(如Google Authenticator)或短信
5. 按照提示完成设置
6. 设置SSH密钥(可选,用于安全连接):在左侧菜单中选择”SSH and GPG keys”点击”New SSH key”添加你的SSH公钥
7. 在左侧菜单中选择”SSH and GPG keys”
8. 点击”New SSH key”
9. 添加你的SSH公钥

• 点击”Two-factor authentication”
• 选择使用认证应用(如Google Authenticator)或短信
• 按照提示完成设置

• 在左侧菜单中选择”SSH and GPG keys”
• 点击”New SSH key”
• 添加你的SSH公钥

Git安装与配置

安装Git

1. 访问Git官网(https://git-scm.com/download/win)
2. 下载Windows版本的Git安装程序
3. 运行安装程序,按照提示完成安装大部分选项可以使用默认设置在选择编辑器的步骤中,可以选择你喜欢的文本编辑器(如VS Code)在配置PATH环境的步骤中,建议选择”Use Git and optional Unix tools from the Command Prompt”
4. 大部分选项可以使用默认设置
5. 在选择编辑器的步骤中,可以选择你喜欢的文本编辑器(如VS Code)
6. 在配置PATH环境的步骤中,建议选择”Use Git and optional Unix tools from the Command Prompt”

• 大部分选项可以使用默认设置
• 在选择编辑器的步骤中,可以选择你喜欢的文本编辑器(如VS Code)
• 在配置PATH环境的步骤中,建议选择”Use Git and optional Unix tools from the Command Prompt”

1. 使用Homebrew安装(推荐):brew install git
2. 或从官网下载安装程序(https://git-scm.com/download/mac)

使用Homebrew安装(推荐):
  1. brew install git
复制代码

或从官网下载安装程序(https://git-scm.com/download/mac)

  1. Debian/Ubuntu:sudo apt update
  2. sudo apt install git
复制代码
• Fedora:sudo dnf install git
• Arch Linux:sudo pacman -S git

Debian/Ubuntu:
  1. sudo apt update
  2. sudo apt install git
复制代码

Fedora:
  1. sudo dnf install git
复制代码

Arch Linux:
  1. sudo pacman -S git
复制代码

Git基本配置

安装完成后,需要配置Git用户信息,这些信息将用于每次提交:

1. 设置用户名:git config --global user.name "你的名字"
2. 设置邮箱地址(使用GitHub注册的邮箱):git config --global user.email "your.email@example.com"
3. 设置默认分支名称(GitHub现在默认使用”main”而不是”master”):git config --global init.defaultBranch main
4. 设置默认编辑器(可选):git config --global core.editor "code --wait"  # 使用VS Code作为默认编辑器
5. 查看配置:git config --list

设置用户名:
  1. git config --global user.name "你的名字"
复制代码

设置邮箱地址(使用GitHub注册的邮箱):
  1. git config --global user.email "your.email@example.com"
复制代码

设置默认分支名称(GitHub现在默认使用”main”而不是”master”):
  1. git config --global init.defaultBranch main
复制代码

设置默认编辑器(可选):
  1. git config --global core.editor "code --wait"  # 使用VS Code作为默认编辑器
复制代码

查看配置:
  1. git config --list
复制代码

配置SSH密钥(可选)

SSH密钥允许你与GitHub建立安全连接,无需每次操作都输入用户名和密码。

1. 检查是否已有SSH密钥:ls -al ~/.ssh
2. 如果没有,生成新的SSH密钥:ssh-keygen -t ed25519 -C "your.email@example.com"按照提示操作,可以使用默认设置。
3. 启动SSH代理:eval "$(ssh-agent -s)"
4. 添加SSH私钥到SSH代理:ssh-add ~/.ssh/id_ed25519
5. 复制SSH公钥到剪贴板:macOS:pbcopy < ~/.ssh/id_ed25519.pubWindows (使用Git Bash):clip < ~/.ssh/id_ed25519.pubLinux:cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
6. macOS:pbcopy < ~/.ssh/id_ed25519.pub
7. Windows (使用Git Bash):clip < ~/.ssh/id_ed25519.pub
8. Linux:cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
9. 将SSH公钥添加到GitHub账号:登录GitHub点击右上角的头像,选择”Settings”在左侧菜单中选择”SSH and GPG keys”点击”New SSH key”粘贴你的SSH公钥点击”Add SSH key”
10. 登录GitHub
11. 点击右上角的头像,选择”Settings”
12. 在左侧菜单中选择”SSH and GPG keys”
13. 点击”New SSH key”
14. 粘贴你的SSH公钥
15. 点击”Add SSH key”
16. 测试SSH连接:ssh -T git@github.com如果看到”Hi username! You’ve successfully authenticated…“的消息,说明SSH连接已成功配置。

检查是否已有SSH密钥:
  1. ls -al ~/.ssh
复制代码

如果没有,生成新的SSH密钥:
  1. ssh-keygen -t ed25519 -C "your.email@example.com"
复制代码

按照提示操作,可以使用默认设置。

启动SSH代理:
  1. eval "$(ssh-agent -s)"
复制代码

添加SSH私钥到SSH代理:
  1. ssh-add ~/.ssh/id_ed25519
复制代码

复制SSH公钥到剪贴板:

• macOS:pbcopy < ~/.ssh/id_ed25519.pub
• Windows (使用Git Bash):clip < ~/.ssh/id_ed25519.pub
• Linux:cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
  1. pbcopy < ~/.ssh/id_ed25519.pub
复制代码
  1. clip < ~/.ssh/id_ed25519.pub
复制代码
  1. cat ~/.ssh/id_ed25519.pub | xclip -selection clipboard
复制代码

将SSH公钥添加到GitHub账号:

• 登录GitHub
• 点击右上角的头像,选择”Settings”
• 在左侧菜单中选择”SSH and GPG keys”
• 点击”New SSH key”
• 粘贴你的SSH公钥
• 点击”Add SSH key”

测试SSH连接:
  1. ssh -T git@github.com
复制代码

如果看到”Hi username! You’ve successfully authenticated…“的消息,说明SSH连接已成功配置。

基础操作

创建GitHub仓库

1. 登录GitHub账号
2. 点击右上角的”+“号,选择”New repository”
3. 填写仓库信息:Repository name:仓库名称Description(可选):仓库描述Public/Private:选择公开或私有勾选”Add a README file”(推荐)勾选”Add .gitignore”(可选,根据项目类型选择模板)勾选”Choose a license”(可选,选择开源许可证)
4. Repository name:仓库名称
5. Description(可选):仓库描述
6. Public/Private:选择公开或私有
7. 勾选”Add a README file”(推荐)
8. 勾选”Add .gitignore”(可选,根据项目类型选择模板)
9. 勾选”Choose a license”(可选,选择开源许可证)
10. 点击”Create repository”完成创建

• Repository name:仓库名称
• Description(可选):仓库描述
• Public/Private:选择公开或私有
• 勾选”Add a README file”(推荐)
• 勾选”Add .gitignore”(可选,根据项目类型选择模板)
• 勾选”Choose a license”(可选,选择开源许可证)

克隆仓库到本地

克隆是将远程仓库复制到本地的过程,有两种方式:HTTPS和SSH。

1. 在GitHub仓库页面,点击绿色的”Code”按钮
2. 复制HTTPS URL(格式为:https://github.com/username/repository.git)
3. 在终端中,导航到你想要存储项目的目录
4. 运行克隆命令:git clone https://github.com/username/repository.git
  1. git clone https://github.com/username/repository.git
复制代码

1. 在GitHub仓库页面,点击绿色的”Code”按钮
2. 点击”SSH”,然后复制SSH URL(格式为:git@github.com:username/repository.git)
3. 在终端中,导航到你想要存储项目的目录
4. 运行克隆命令:git clone git@github.com:username/repository.git
  1. git clone git@github.com:username/repository.git
复制代码

本地仓库初始化

如果你想将现有的项目上传到GitHub,可以按照以下步骤操作:

1. 在项目根目录初始化Git仓库:cd /path/to/your/project
git init
2. 添加所有文件到暂存区:git add .
3. 提交更改:git commit -m "Initial commit"
4. 在GitHub上创建一个新的空仓库(不要勾选任何初始化选项)
5. 添加远程仓库:git remote add origin git@github.com:username/repository.git
6. 推送到GitHub:git push -u origin main

在项目根目录初始化Git仓库:
  1. cd /path/to/your/project
  2. git init
复制代码

添加所有文件到暂存区:
  1. git add .
复制代码

提交更改:
  1. git commit -m "Initial commit"
复制代码

在GitHub上创建一个新的空仓库(不要勾选任何初始化选项)

添加远程仓库:
  1. git remote add origin git@github.com:username/repository.git
复制代码

推送到GitHub:
  1. git push -u origin main
复制代码

基本工作流程

GitHub的基本工作流程包括添加文件、提交更改和推送到远程仓库。

1. 添加特定文件:git add filename.txt
2. 添加所有修改和新增的文件:git add .
3. 添加所有修改和新增的文件,但不包括删除的文件:git add -A
4. 添加所有修改的文件,不包括新增的文件:git add -u

添加特定文件:
  1. git add filename.txt
复制代码

添加所有修改和新增的文件:
  1. git add .
复制代码

添加所有修改和新增的文件,但不包括删除的文件:
  1. git add -A
复制代码

添加所有修改的文件,不包括新增的文件:
  1. git add -u
复制代码

在添加文件或提交之前,可以查看当前仓库的状态:
  1. git status
复制代码

这将显示哪些文件已修改、哪些文件已暂存、哪些文件尚未跟踪。

1. 提交暂存的更改:git commit -m "提交信息"提交信息应该简洁明了,描述本次提交的内容。
2. 添加所有修改的文件并提交:git commit -am "提交信息"注意:这只会提交已经跟踪的文件,不会提交新增的文件。
3. 修改最后一次提交(如果提交信息有误或漏了文件):git commit --amend这将打开编辑器,允许你修改提交信息。如果只是修改提交信息而不修改文件,可以:git commit --amend -m "新的提交信息"

提交暂存的更改:
  1. git commit -m "提交信息"
复制代码

提交信息应该简洁明了,描述本次提交的内容。

添加所有修改的文件并提交:
  1. git commit -am "提交信息"
复制代码

注意:这只会提交已经跟踪的文件,不会提交新增的文件。

修改最后一次提交(如果提交信息有误或漏了文件):
  1. git commit --amend
复制代码

这将打开编辑器,允许你修改提交信息。如果只是修改提交信息而不修改文件,可以:
  1. git commit --amend -m "新的提交信息"
复制代码

1. 推送到远程仓库:git push origin main其中”origin”是远程仓库的默认名称,”main”是分支名称。
2. 第一次推送时,可以设置上游分支:git push -u origin main设置后,以后可以直接使用git push命令。
3. 推送所有分支:git push --all origin

推送到远程仓库:
  1. git push origin main
复制代码

其中”origin”是远程仓库的默认名称,”main”是分支名称。

第一次推送时,可以设置上游分支:
  1. git push -u origin main
复制代码

设置后,以后可以直接使用git push命令。

推送所有分支:
  1. git push --all origin
复制代码

1. 获取远程更改并合并到当前分支:git pull origin main
2. 仅获取远程更改,不合并:git fetch origin

获取远程更改并合并到当前分支:
  1. git pull origin main
复制代码

仅获取远程更改,不合并:
  1. git fetch origin
复制代码

1. 查看提交历史:git log
2. 查看简洁的提交历史:git log --oneline
3. 查看图形化的提交历史:git log --graph --oneline --all

查看提交历史:
  1. git log
复制代码

查看简洁的提交历史:
  1. git log --oneline
复制代码

查看图形化的提交历史:
  1. git log --graph --oneline --all
复制代码

1. 比较工作区和暂存区的差异:git diff
2. 比较暂存区和最新提交的差异:git diff --staged
3. 比较工作区和最新提交的差异:git diff HEAD
4. 比较两个提交之间的差异:git diff commit1 commit2

比较工作区和暂存区的差异:
  1. git diff
复制代码

比较暂存区和最新提交的差异:
  1. git diff --staged
复制代码

比较工作区和最新提交的差异:
  1. git diff HEAD
复制代码

比较两个提交之间的差异:
  1. git diff commit1 commit2
复制代码

1. 取消暂存的文件:git reset HEAD filename.txt
2. 撤销工作区的修改(恢复到最新提交的状态):git checkout -- filename.txt
3. 撤销最后一次提交(保留修改):git reset HEAD~1
4. 撤销最后一次提交(丢弃修改):git reset --hard HEAD~1
5. 撤销已经推送到远程仓库的提交(创建一个新的提交来撤销之前的更改):git revert HEAD

取消暂存的文件:
  1. git reset HEAD filename.txt
复制代码

撤销工作区的修改(恢复到最新提交的状态):
  1. git checkout -- filename.txt
复制代码

撤销最后一次提交(保留修改):
  1. git reset HEAD~1
复制代码

撤销最后一次提交(丢弃修改):
  1. git reset --hard HEAD~1
复制代码

撤销已经推送到远程仓库的提交(创建一个新的提交来撤销之前的更改):
  1. git revert HEAD
复制代码

分支管理

分支是Git的强大功能之一,它允许你在不影响主代码的情况下开发新功能或修复问题。

创建分支

1. 创建新分支并切换到该分支:git checkout -b new-branch这相当于:git branch new-branch    # 创建分支
git checkout new-branch  # 切换到新分支
2. 基于特定提交创建分支:git checkout -b new-branch commit-hash

创建新分支并切换到该分支:
  1. git checkout -b new-branch
复制代码

这相当于:
  1. git branch new-branch    # 创建分支
  2. git checkout new-branch  # 切换到新分支
复制代码

基于特定提交创建分支:
  1. git checkout -b new-branch commit-hash
复制代码

查看分支

1. 查看所有本地分支:git branch
2. 查看所有分支(包括远程分支):git branch -a
3. 查看远程分支:git branch -r

查看所有本地分支:
  1. git branch
复制代码

查看所有分支(包括远程分支):
  1. git branch -a
复制代码

查看远程分支:
  1. git branch -r
复制代码

切换分支

1. 切换到已存在的分支:git checkout existing-branch
2. 切换到上一个分支:git checkout -

切换到已存在的分支:
  1. git checkout existing-branch
复制代码

切换到上一个分支:
  1. git checkout -
复制代码

删除分支

1. 删除本地分支:git branch -d branch-name如果分支未合并,使用-D选项强制删除:git branch -D branch-name
2. 删除远程分支:git push origin --delete branch-name

删除本地分支:
  1. git branch -d branch-name
复制代码

如果分支未合并,使用-D选项强制删除:
  1. git branch -D branch-name
复制代码

删除远程分支:
  1. git push origin --delete branch-name
复制代码

合并分支

1. 切换到目标分支(如main):git checkout main
2. 合并其他分支到当前分支:git merge feature-branch
3. 如果合并过程中出现冲突,需要手动解决冲突后再次提交:git add .
git commit -m "Resolve merge conflicts"

切换到目标分支(如main):
  1. git checkout main
复制代码

合并其他分支到当前分支:
  1. git merge feature-branch
复制代码

如果合并过程中出现冲突,需要手动解决冲突后再次提交:
  1. git add .
  2. git commit -m "Resolve merge conflicts"
复制代码

变基(Rebase)

变基是另一种整合分支的方法,它可以将一系列提交应用到另一个分支上。

1. 将当前分支的提交变基到目标分支:git checkout feature-branch
git rebase main
2. 如果变基过程中出现冲突,解决冲突后继续:git add .
git rebase --continue
3. 如果要取消变基:git rebase --abort

将当前分支的提交变基到目标分支:
  1. git checkout feature-branch
  2. git rebase main
复制代码

如果变基过程中出现冲突,解决冲突后继续:
  1. git add .
  2. git rebase --continue
复制代码

如果要取消变基:
  1. git rebase --abort
复制代码

推送分支到远程仓库

1. 推送新分支到远程仓库:git push origin new-branch
2. 设置上游分支并推送:git push -u origin new-branch
3. 推送所有分支到远程仓库:git push --all origin

推送新分支到远程仓库:
  1. git push origin new-branch
复制代码

设置上游分支并推送:
  1. git push -u origin new-branch
复制代码

推送所有分支到远程仓库:
  1. git push --all origin
复制代码

跟踪远程分支

1. 跟踪远程分支并创建本地分支:git checkout -b local-branch origin/remote-branch
2. 设置本地分支跟踪远程分支:git branch --set-upstream-to=origin/remote-branch local-branch

跟踪远程分支并创建本地分支:
  1. git checkout -b local-branch origin/remote-branch
复制代码

设置本地分支跟踪远程分支:
  1. git branch --set-upstream-to=origin/remote-branch local-branch
复制代码

团队协作

GitHub的强大之处在于其团队协作功能。以下是一些常用的团队协作操作。

邀请协作者

1. 在GitHub仓库页面,点击”Settings”
2. 在左侧菜单中选择”Collaborators”
3. 点击”Add people”
4. 输入协作者的GitHub用户名或邮箱
5. 设置适当的权限(Read, Write, Admin)
6. 点击”Add [username] to this repository”

Fork仓库

Fork是GitHub上的一个重要概念,它允许你复制他人的仓库到自己的账户下,然后进行修改。

1. 在他人的仓库页面,点击右上角的”Fork”按钮
2. 选择要Fork到的账户(如果你有多个组织)
3. 等待Fork完成

创建Pull Request

Pull Request(PR)是向原仓库贡献代码的主要方式。

1. 首先Fork原仓库
2. 克隆你的Fork到本地:git clone git@github.com:your-username/repository.git
3. 添加原仓库作为远程仓库(通常称为upstream):git remote add upstream git@github.com:original-owner/repository.git
4. 创建新分支进行修改:git checkout -b feature-branch
5. 进行修改并提交:git add .
git commit -m "描述你的修改"
6. 推送到你的Fork:git push origin feature-branch
7. 在GitHub上,你的Fork页面会显示一个提示,询问你是否要创建Pull Request
8. 点击”Compare & pull request”
9. 填写PR的标题和描述
10. 点击”Create pull request”

首先Fork原仓库

克隆你的Fork到本地:
  1. git clone git@github.com:your-username/repository.git
复制代码

添加原仓库作为远程仓库(通常称为upstream):
  1. git remote add upstream git@github.com:original-owner/repository.git
复制代码

创建新分支进行修改:
  1. git checkout -b feature-branch
复制代码

进行修改并提交:
  1. git add .
  2. git commit -m "描述你的修改"
复制代码

推送到你的Fork:
  1. git push origin feature-branch
复制代码

在GitHub上,你的Fork页面会显示一个提示,询问你是否要创建Pull Request

点击”Compare & pull request”

填写PR的标题和描述

点击”Create pull request”

同步Fork与原仓库

为了保持你的Fork与原仓库同步,可以按照以下步骤操作:

1. 添加原仓库作为远程仓库(如果尚未添加):git remote add upstream git@github.com:original-owner/repository.git
2. 获取原仓库的最新更改:git fetch upstream
3. 切换到主分支:git checkout main
4. 合并原仓库的更改:git merge upstream/main
5. 推送更新到你的Fork:git push origin main

添加原仓库作为远程仓库(如果尚未添加):
  1. git remote add upstream git@github.com:original-owner/repository.git
复制代码

获取原仓库的最新更改:
  1. git fetch upstream
复制代码

切换到主分支:
  1. git checkout main
复制代码

合并原仓库的更改:
  1. git merge upstream/main
复制代码

推送更新到你的Fork:
  1. git push origin main
复制代码

处理Pull Request

作为仓库所有者或协作者,你需要审查和处理收到的Pull Request。

1. 在GitHub仓库页面,点击”Pull requests”标签
2. 点击要审查的PR
3. 查看更改,可以:查看代码差异发表评论请求更改批准PR
4. 查看代码差异
5. 发表评论
6. 请求更改
7. 批准PR
8. 如果PR需要修改,可以:在PR中发表评论,指出需要修改的地方或者直接在代码行上添加评论
9. 在PR中发表评论,指出需要修改的地方
10. 或者直接在代码行上添加评论
11. 当PR准备好合并时:点击”Merge pull request”选择合并方式(Create a merge commit, Squash and merge, 或 Rebase and merge)确认合并
12. 点击”Merge pull request”
13. 选择合并方式(Create a merge commit, Squash and merge, 或 Rebase and merge)
14. 确认合并

在GitHub仓库页面,点击”Pull requests”标签

点击要审查的PR

查看更改,可以:

• 查看代码差异
• 发表评论
• 请求更改
• 批准PR

如果PR需要修改,可以:

• 在PR中发表评论,指出需要修改的地方
• 或者直接在代码行上添加评论

当PR准备好合并时:

• 点击”Merge pull request”
• 选择合并方式(Create a merge commit, Squash and merge, 或 Rebase and merge)
• 确认合并

代码审查

代码审查是确保代码质量的重要环节。

1. 在PR页面,可以:查看整体更改点击”Files changed”查看具体文件更改在代码行上添加评论添加一般性评论
2. 查看整体更改
3. 点击”Files changed”查看具体文件更改
4. 在代码行上添加评论
5. 添加一般性评论
6. 使用GitHub的代码审查功能:点击”Review changes”添加整体评论选择审查类型(Comment, Approve, 或 Request changes)提交审查
7. 点击”Review changes”
8. 添加整体评论
9. 选择审查类型(Comment, Approve, 或 Request changes)
10. 提交审查

在PR页面,可以:

• 查看整体更改
• 点击”Files changed”查看具体文件更改
• 在代码行上添加评论
• 添加一般性评论

使用GitHub的代码审查功能:

• 点击”Review changes”
• 添加整体评论
• 选择审查类型(Comment, Approve, 或 Request changes)
• 提交审查

解决合并冲突

当多人修改同一文件的同一部分时,可能会发生合并冲突。

1. 当PR显示有合并冲突时,需要在本地解决:git checkout main
git pull origin main
git checkout feature-branch
git merge main
2. Git会标记冲突的文件,打开这些文件,你会看到类似这样的标记:<<<<<<< HEAD
这是main分支的内容
=======
这是feature-branch的内容
>>>>>>> feature-branch
3. 编辑文件,保留需要的代码,删除冲突标记
4. 添加解决冲突的文件:git add .
5. 完成合并:git commit -m "Resolve merge conflicts"
6. 推送更新:git push origin feature-branch

当PR显示有合并冲突时,需要在本地解决:
  1. git checkout main
  2. git pull origin main
  3. git checkout feature-branch
  4. git merge main
复制代码

Git会标记冲突的文件,打开这些文件,你会看到类似这样的标记:
  1. <<<<<<< HEAD
  2. 这是main分支的内容
  3. =======
  4. 这是feature-branch的内容
  5. >>>>>>> feature-branch
复制代码

编辑文件,保留需要的代码,删除冲突标记

添加解决冲突的文件:
  1. git add .
复制代码

完成合并:
  1. git commit -m "Resolve merge conflicts"
复制代码

推送更新:
  1. git push origin feature-branch
复制代码

使用GitHub Issues

GitHub Issues是跟踪任务、增强功能和bug报告的工具。

1. 创建Issue:在仓库页面,点击”Issues”标签点击”New issue”填写标题和描述可以添加标签、里程碑和指派人员点击”Submit new issue”
2. 在仓库页面,点击”Issues”标签
3. 点击”New issue”
4. 填写标题和描述
5. 可以添加标签、里程碑和指派人员
6. 点击”Submit new issue”
7. 管理Issue:可以编辑、关闭、重新打开Issue可以添加评论、引用其他Issue或PR可以添加标签、里程碑和指派人员
8. 可以编辑、关闭、重新打开Issue
9. 可以添加评论、引用其他Issue或PR
10. 可以添加标签、里程碑和指派人员

创建Issue:

• 在仓库页面,点击”Issues”标签
• 点击”New issue”
• 填写标题和描述
• 可以添加标签、里程碑和指派人员
• 点击”Submit new issue”

管理Issue:

• 可以编辑、关闭、重新打开Issue
• 可以添加评论、引用其他Issue或PR
• 可以添加标签、里程碑和指派人员

使用项目板

项目板(Projects)是组织和管理Issues和Pull Requests的工具。

1. 创建项目板:在仓库页面,点击”Projects”标签点击”New project”选择项目板模板(如Basic kanban, Automated kanban, 或Automated review workflow)填写项目名称和描述点击”Create project”
2. 在仓库页面,点击”Projects”标签
3. 点击”New project”
4. 选择项目板模板(如Basic kanban, Automated kanban, 或Automated review workflow)
5. 填写项目名称和描述
6. 点击”Create project”
7. 管理项目板:可以添加列(如To do, In progress, Done)可以将Issues和PR拖放到不同的列可以设置自动化规则
8. 可以添加列(如To do, In progress, Done)
9. 可以将Issues和PR拖放到不同的列
10. 可以设置自动化规则

创建项目板:

• 在仓库页面,点击”Projects”标签
• 点击”New project”
• 选择项目板模板(如Basic kanban, Automated kanban, 或Automated review workflow)
• 填写项目名称和描述
• 点击”Create project”

管理项目板:

• 可以添加列(如To do, In progress, Done)
• 可以将Issues和PR拖放到不同的列
• 可以设置自动化规则

进阶技巧

使用GitHub Pages

GitHub Pages允许你直接从GitHub仓库托管静态网站。

1. 创建一个特殊的分支:git checkout -b gh-pages
2. 添加你的网站文件(如HTML, CSS, JavaScript)
3. 提交并推送:git add .
git commit -m "Add website files"
git push origin gh-pages
4. 在GitHub仓库页面:点击”Settings”在左侧菜单中选择”Pages”在”Source”部分,选择”gh-pages branch”点击”Save”
5. 点击”Settings”
6. 在左侧菜单中选择”Pages”
7. 在”Source”部分,选择”gh-pages branch”
8. 点击”Save”
9. 你的网站将在以下URL可用:https://username.github.io/repository

创建一个特殊的分支:
  1. git checkout -b gh-pages
复制代码

添加你的网站文件(如HTML, CSS, JavaScript)

提交并推送:
  1. git add .
  2. git commit -m "Add website files"
  3. git push origin gh-pages
复制代码

在GitHub仓库页面:

• 点击”Settings”
• 在左侧菜单中选择”Pages”
• 在”Source”部分,选择”gh-pages branch”
• 点击”Save”

你的网站将在以下URL可用:https://username.github.io/repository

使用GitHub Actions

GitHub Actions是GitHub的CI/CD平台,可以自动化构建、测试和部署流程。

1. 创建工作流文件:在仓库中创建.github/workflows目录在该目录中创建YAML文件(如main.yml)
2. 在仓库中创建.github/workflows目录
3. 在该目录中创建YAML文件(如main.yml)
4.
  1. 示例工作流文件(Node.js应用):
  2. “`yaml
  3. name: Node.js CI
复制代码

创建工作流文件:

• 在仓库中创建.github/workflows目录
• 在该目录中创建YAML文件(如main.yml)

示例工作流文件(Node.js应用):
“`yaml
name: Node.js CI

on:
  1. push:
  2.    branches: [ main ]
  3. pull_request:
  4.    branches: [ main ]
复制代码

jobs:
  1. build:
  2.    runs-on: ubuntu-latest
  3.    strategy:
  4.      matrix:
  5.        node-version: [14.x, 16.x, 18.x]
  6.    steps:
  7.    - uses: actions/checkout@v3
  8.    - name: Use Node.js ${{ matrix.node-version }}
  9.      uses: actions/setup-node@v3
  10.      with:
  11.        node-version: ${{ matrix.node-version }}
  12.        cache: 'npm'
  13.    - run: npm ci
  14.    - run: npm run build --if-present
  15.    - run: npm test
复制代码
  1. 3. 提交并推送工作流文件:
  2.    ```bash
  3.    git add .github/workflows/main.yml
  4.    git commit -m "Add GitHub Actions workflow"
  5.    git push origin main
复制代码

1. 在GitHub仓库页面,点击”Actions”标签查看工作流运行情况

使用GitHub Releases

GitHub Releases允许你发布项目的特定版本。

1. 在GitHub仓库页面,点击”Releases”标签
2. 点击”Create a new release”
3. 填写发布信息:选择或创建一个新标签发布标题发布描述可以上传二进制文件或其他资源
4. 选择或创建一个新标签
5. 发布标题
6. 发布描述
7. 可以上传二进制文件或其他资源
8. 点击”Publish release”

• 选择或创建一个新标签
• 发布标题
• 发布描述
• 可以上传二进制文件或其他资源

使用Git标签

标签用于标记特定的提交,通常用于发布版本。

1. 创建轻量标签:git tag v1.0.0
2. 创建带注释的标签(推荐):git tag -a v1.0.0 -m "Version 1.0.0 release"
3. 推送标签到远程仓库:git push origin v1.0.0
4. 推送所有标签:git push --tags
5. 删除本地标签:git tag -d v1.0.0
6. 删除远程标签:git push origin :refs/tags/v1.0.0

创建轻量标签:
  1. git tag v1.0.0
复制代码

创建带注释的标签(推荐):
  1. git tag -a v1.0.0 -m "Version 1.0.0 release"
复制代码

推送标签到远程仓库:
  1. git push origin v1.0.0
复制代码

推送所有标签:
  1. git push --tags
复制代码

删除本地标签:
  1. git tag -d v1.0.0
复制代码

删除远程标签:
  1. git push origin :refs/tags/v1.0.0
复制代码

使用Git子模块

Git子模块允许你在一个Git仓库中包含另一个Git仓库。

1. 添加子模块:git submodule add git@github.com:user/repo.git path/to/submodule
2. 初始化子模块:git submodule init
3. 更新子模块:git submodule update
4. 克隆包含子模块的仓库:git clone --recurse-submodules git@github.com:user/main-repo.git
5. 更新所有子模块到最新提交:git submodule foreach git pull origin main

添加子模块:
  1. git submodule add git@github.com:user/repo.git path/to/submodule
复制代码

初始化子模块:
  1. git submodule init
复制代码

更新子模块:
  1. git submodule update
复制代码

克隆包含子模块的仓库:
  1. git clone --recurse-submodules git@github.com:user/main-repo.git
复制代码

更新所有子模块到最新提交:
  1. git submodule foreach git pull origin main
复制代码

使用Git LFS

Git LFS(Large File Storage)用于管理大文件,如音频、视频、数据集等。

1.
  1. 安装Git LFS:macOS:brew install git-lfsWindows: 下载并运行Git LFS安装程序Linux:curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
  2. sudo apt-get install git-lfs
复制代码
2. macOS:brew install git-lfs
3. Windows: 下载并运行Git LFS安装程序
4.
  1. Linux:curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
  2. sudo apt-get install git-lfs
复制代码
5. 初始化Git LFS:git lfs install
6. 跟踪大文件:git lfs track "*.psd"
git lfs track "*.zip"
7. 添加.gitattributes文件并提交:git add .gitattributes
git commit -m "Track large files with Git LFS"
8. 正常添加和提交大文件:git add large-file.zip
git commit -m "Add large file"

安装Git LFS:

• macOS:brew install git-lfs
• Windows: 下载并运行Git LFS安装程序
  1. Linux:curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
  2. sudo apt-get install git-lfs
复制代码
  1. brew install git-lfs
复制代码
  1. curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
  2. sudo apt-get install git-lfs
复制代码

初始化Git LFS:
  1. git lfs install
复制代码

跟踪大文件:
  1. git lfs track "*.psd"
  2. git lfs track "*.zip"
复制代码

添加.gitattributes文件并提交:
  1. git add .gitattributes
  2. git commit -m "Track large files with Git LFS"
复制代码

正常添加和提交大文件:
  1. git add large-file.zip
  2. git commit -m "Add large file"
复制代码

使用GitHub CLI

GitHub CLI是GitHub的命令行工具,允许你在终端中与GitHub交互。

1.
  1. 安装GitHub CLI:macOS:brew install ghWindows: 下载并运行GitHub CLI安装程序Linux:curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
  2. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
  3. sudo apt update
  4. sudo apt install gh
复制代码
2. macOS:brew install gh
3. Windows: 下载并运行GitHub CLI安装程序
4.
  1. Linux:curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
  2. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
  3. sudo apt update
  4. sudo apt install gh
复制代码
5. 认证GitHub CLI:gh auth login
6. 使用GitHub CLI创建仓库:gh repo create new-repo --public --clone
7. 使用GitHub CLI创建Issue:gh issue create --title "Bug report" --body "Description of the bug"
8. 使用GitHub CLI创建Pull Request:gh pr create --title "New feature" --body "Description of the new feature"

安装GitHub CLI:

• macOS:brew install gh
• Windows: 下载并运行GitHub CLI安装程序
  1. Linux:curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
  2. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
  3. sudo apt update
  4. sudo apt install gh
复制代码
  1. brew install gh
复制代码
  1. curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
  2. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
  3. sudo apt update
  4. sudo apt install gh
复制代码

认证GitHub CLI:
  1. gh auth login
复制代码

使用GitHub CLI创建仓库:
  1. gh repo create new-repo --public --clone
复制代码

使用GitHub CLI创建Issue:
  1. gh issue create --title "Bug report" --body "Description of the bug"
复制代码

使用GitHub CLI创建Pull Request:
  1. gh pr create --title "New feature" --body "Description of the new feature"
复制代码

常见问题与解决方案

问题1:推送时出现”Permission denied (publickey)“错误

解决方案:

1. 检查SSH密钥是否已正确添加到GitHub账号
2. 确保使用的是SSH URL而不是HTTPS URL
3. 测试SSH连接:ssh -T git@github.com
4. 如果仍有问题,重新生成SSH密钥并添加到GitHub
  1. ssh -T git@github.com
复制代码

问题2:合并冲突

解决方案:

1. 拉取最新更改:git pull origin main
2. 手动解决冲突文件中的冲突
3. 添加解决冲突的文件:git add .
4. 完成合并:git commit -m "Resolve merge conflicts"
5. 推送更改:git push origin main
  1. git pull origin main
复制代码
  1. git add .
复制代码
  1. git commit -m "Resolve merge conflicts"
复制代码
  1. git push origin main
复制代码

问题3:推送被拒绝,因为远程仓库包含本地没有的提交

解决方案:

1. 拉取远程更改:git pull origin main
2. 如果有冲突,解决冲突
3. 再次推送:git push origin main
  1. git pull origin main
复制代码
  1. git push origin main
复制代码

问题4:意外提交了敏感信息

解决方案:

1. 从Git历史中移除文件:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path/to/file' --prune-empty --tag-name-filter cat -- --all
2. 强制推送:git push origin main --force
3. 考虑更改敏感信息(如密码、API密钥)
  1. git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path/to/file' --prune-empty --tag-name-filter cat -- --all
复制代码
  1. git push origin main --force
复制代码

问题5:仓库变得过大

解决方案:

1. 使用Git LFS管理大文件
2. 清理不必要的文件:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path/to/large/files' --prune-empty --tag-name-filter cat -- --all
3. 清理Git历史:git reflog expire --expire=now --all
git gc --prune=now
4. 强制推送:git push origin main --force
  1. git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path/to/large/files' --prune-empty --tag-name-filter cat -- --all
复制代码
  1. git reflog expire --expire=now --all
  2. git gc --prune=now
复制代码
  1. git push origin main --force
复制代码

问题6:无法删除远程分支

解决方案:

1. 确保你不是在要删除的分支上:git checkout main
2. 删除远程分支:git push origin --delete branch-name
3. 如果仍有问题,检查分支保护规则:在GitHub仓库页面,点击”Settings”在左侧菜单中选择”Branches”检查分支保护规则
4. 在GitHub仓库页面,点击”Settings”
5. 在左侧菜单中选择”Branches”
6. 检查分支保护规则
  1. git checkout main
复制代码
  1. git push origin --delete branch-name
复制代码

• 在GitHub仓库页面,点击”Settings”
• 在左侧菜单中选择”Branches”
• 检查分支保护规则

问题7:提交历史混乱

解决方案:

1. 使用交互式rebase整理提交历史:git rebase -i HEAD~n  # n是提交数量
2. 在打开的编辑器中,重新排序提交、合并提交(squash)或编辑提交信息
3. 如果需要,强制推送:git push origin main --force
  1. git rebase -i HEAD~n  # n是提交数量
复制代码
  1. git push origin main --force
复制代码

总结与最佳实践

总结

本文详细介绍了GitHub项目上传的完整流程,从基础操作到进阶技巧,包括:

1. GitHub基础概念和账号设置
2. Git安装与配置
3. 基本操作:创建仓库、克隆、添加文件、提交、推送等
4. 分支管理:创建、切换、合并分支等
5. 团队协作:邀请协作者、处理冲突、Pull Request等
6. 进阶技巧:GitHub Actions、标签、发布等高级功能
7. 常见问题与解决方案

通过掌握这些技能,你可以有效地使用GitHub进行代码托管和团队协作。

最佳实践

1. 提交信息规范:使用简洁明了的提交信息采用”类型: 描述”的格式,如”fix: 修复登录问题”在提交信息中提供足够的上下文
2. 使用简洁明了的提交信息
3. 采用”类型: 描述”的格式,如”fix: 修复登录问题”
4. 在提交信息中提供足够的上下文
5. 分支策略:使用功能分支(feature branches)开发新功能保持主分支(main)始终处于可发布状态使用发布分支(release branches)准备发布使用修复分支(hotfix branches)紧急修复生产环境问题
6. 使用功能分支(feature branches)开发新功能
7. 保持主分支(main)始终处于可发布状态
8. 使用发布分支(release branches)准备发布
9. 使用修复分支(hotfix branches)紧急修复生产环境问题
10. 代码审查:所有代码更改都应经过审查提供建设性的反馈确保代码符合项目标准
11. 所有代码更改都应经过审查
12. 提供建设性的反馈
13. 确保代码符合项目标准
14. 定期同步:定期从主分支拉取最新更改保持你的分支与主分支同步
15. 定期从主分支拉取最新更改
16. 保持你的分支与主分支同步
17. 使用.gitignore:创建适当的.gitignore文件,排除不必要的文件避免提交临时文件、依赖文件和敏感信息
18. 创建适当的.gitignore文件,排除不必要的文件
19. 避免提交临时文件、依赖文件和敏感信息
20. 使用标签标记版本:为每个发布版本创建标签使用语义化版本控制(Semantic Versioning)
21. 为每个发布版本创建标签
22. 使用语义化版本控制(Semantic Versioning)
23. 定期备份:定期将代码推送到远程仓库考虑使用多个远程仓库作为备份
24. 定期将代码推送到远程仓库
25. 考虑使用多个远程仓库作为备份
26. 文档:为项目提供清晰的README文件记录API、安装和使用说明保持文档与代码同步更新
27. 为项目提供清晰的README文件
28. 记录API、安装和使用说明
29. 保持文档与代码同步更新
30. 安全性:不要提交敏感信息(如密码、API密钥)使用环境变量或配置文件管理敏感信息定期审查仓库访问权限
31. 不要提交敏感信息(如密码、API密钥)
32. 使用环境变量或配置文件管理敏感信息
33. 定期审查仓库访问权限
34. 持续集成/持续部署:使用GitHub Actions自动化构建、测试和部署流程确保每次提交都经过自动化测试
35. 使用GitHub Actions自动化构建、测试和部署流程
36. 确保每次提交都经过自动化测试

提交信息规范:

• 使用简洁明了的提交信息
• 采用”类型: 描述”的格式,如”fix: 修复登录问题”
• 在提交信息中提供足够的上下文

分支策略:

• 使用功能分支(feature branches)开发新功能
• 保持主分支(main)始终处于可发布状态
• 使用发布分支(release branches)准备发布
• 使用修复分支(hotfix branches)紧急修复生产环境问题

代码审查:

• 所有代码更改都应经过审查
• 提供建设性的反馈
• 确保代码符合项目标准

定期同步:

• 定期从主分支拉取最新更改
• 保持你的分支与主分支同步

使用.gitignore:

• 创建适当的.gitignore文件,排除不必要的文件
• 避免提交临时文件、依赖文件和敏感信息

使用标签标记版本:

• 为每个发布版本创建标签
• 使用语义化版本控制(Semantic Versioning)

定期备份:

• 定期将代码推送到远程仓库
• 考虑使用多个远程仓库作为备份

文档:

• 为项目提供清晰的README文件
• 记录API、安装和使用说明
• 保持文档与代码同步更新

安全性:

• 不要提交敏感信息(如密码、API密钥)
• 使用环境变量或配置文件管理敏感信息
• 定期审查仓库访问权限

持续集成/持续部署:

• 使用GitHub Actions自动化构建、测试和部署流程
• 确保每次提交都经过自动化测试

通过遵循这些最佳实践,你可以更有效地使用GitHub进行代码托管和团队协作,提高开发效率和代码质量。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则