git协作开发指南

创建并关联仓库

以下是在 macOS 上配置 Git 并创建、关联 GitHub 仓库的详细教程,同时默认分支名为 main

1. 安装 Git

如果你的 macOS 还未安装 Git,可通过 Homebrew 进行安装。若已安装,可跳过此步骤。

1
2
3
4
5
# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 使用 Homebrew 安装 Git
brew install git
BASH
意义:Git 是版本控制系统,借助它你能对项目进行版本管理。Homebrew 是 macOS 上常用的包管理器,方便软件的安装与管理。

2. 配置 Git 用户名和邮箱

你需要设置自己的 Git 用户名和邮箱,这些信息会关联到你提交的代码。

1
2
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
BASH
意义:Git 利用用户名和邮箱来识别代码提交者,这些信息会记录在每次提交的日志中。

3. 生成 SSH 密钥

为了能安全地与 GitHub 进行通信,你需要生成 SSH 密钥并将公钥添加到 GitHub 账户。

1
2
3
4
5
6
7
8
9
10
11
# 生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"

# 按提示操作,通常直接按回车键接受默认设置即可
# 生成的密钥默认存储在 ~/.ssh/id_rsa 和 ~/.ssh/id_rsa.pub

# 启动 SSH 代理
eval "$(ssh-agent -s)"

# 将私钥添加到 SSH 代理
ssh-add ~/.ssh/id_rsa
BASH
意义:SSH 密钥提供了一种安全的方式让你与 GitHub 服务器进行通信,避免每次操作都输入用户名和密码。

4. 将 SSH 公钥添加到 GitHub 账户

1
2
# 复制公钥到剪贴板
pbcopy < ~/.ssh/id_rsa.pub
BASH
  • 打开 GitHub 网站,登录你的账户。
  • 点击右上角的头像,选择 “Settings”。
  • 在左侧菜单中选择 “SSH and GPG keys”。
  • 点击 “New SSH key”,将剪贴板中的公钥粘贴到 “Key” 字段,输入一个标题(如 “MacBook Pro”),然后点击 “Add SSH key”。 意义:GitHub 服务器借助公钥来验证你的身份,确认是你本人在操作。

5. 创建本地 Git 仓库

在本地创建一个新的项目目录,并将其初始化为 Git 仓库。

1
2
3
4
5
6
# 创建一个新的项目目录
mkdir my-project
cd my-project

# 初始化 Git 仓库,默认分支名为 main
git init -b main
BASH
意义git init 命令会在当前目录下创建一个新的 Git 仓库,-b main 参数指定默认分支名为 main

6. 添加文件并提交

在项目目录下创建一些文件,然后将它们添加到暂存区并提交。

1
2
3
4
5
6
7
8
# 创建一个示例文件
touch README.md

# 将文件添加到暂存区
git add README.md

# 提交文件到本地仓库
git commit -m "Initial commit"
BASH
意义git add 命令把文件添加到暂存区,git commit 命令将暂存区的文件提交到本地仓库,并添加一条提交信息。

7. 在 GitHub 上创建新仓库

  • 登录 GitHub 网站,点击右上角的 “+” 按钮,选择 “New repository”。
  • 输入仓库名称、描述等信息,然后点击 “Create repository”。

8. 将本地仓库关联到 GitHub 仓库

1
2
3
4
5
6
7
8
# 获取 GitHub 仓库的 SSH 地址
# 在 GitHub 仓库页面中,点击 “Code” 按钮,复制 SSH 地址

# 将本地仓库与 GitHub 仓库关联
git remote add origin git@github.com:yourusername/my-project.git

# 将本地的 main 分支推送到 GitHub 仓库
git push -u origin main
BASH

意义git remote add 命令将本地仓库与 GitHub 仓库关联起来,git push 命令把本地仓库的代码推送到 GitHub 仓库,-u 参数会将本地的 main 分支与远程的 main 分支关联起来,以后使用 git push 时就不需要再指定分支名了。

完成以上步骤后,你就成功在 macOS 上配置了 Git,并将本地仓库与 GitHub 仓库关联起来。之后你可以继续在本地进行开发,使用 git addgit commitgit push 命令来管理和同步代码。

最后可能会出错,因为原始仓库里会有一个readme文件,需要

1
2
3
4
5
# 拉取远程仓库的更新并合并
git pull --rebase origin main

# 如果拉取和合并过程中没有冲突,再次推送本地分支
git push -u origin main
BASH

创建自己的分支,上传

下面为你详细介绍创建新分支、在新分支开发、推送新分支以及将分支合并到 main 分支的具体步骤,同时说明合并操作的相关情况。

1. 创建新分支

在本地仓库中创建新分支有两种常用方式,具体如下:

先创建分支,再切换到新分支

1
2
3
4
# 创建新分支
git branch new-feature
# 切换到新分支
git checkout new-feature
BASH

这里的 new-feature 是新分支的名称,可以根据实际开发的功能来命名。

2. 在新分支上进行开发创作

切换到新分支后,就可以像平常一样进行代码编写、修改等操作了。完成一些工作后,将修改的文件添加到暂存区并提交到本地仓库,示例如下:

1
2
3
4
5
6
7
8
# 查看文件状态,确认修改的文件
git status
# 将修改的文件添加到暂存区
git add . # 添加当前目录下所有修改和新增的文件
# 或者添加指定文件
git add file1.txt file2.py
# 提交暂存区的文件到本地仓库,并添加提交信息
git commit -m "完成新功能的部分开发"
BASH

3. 推送新分支到远程仓库

当你在本地新分支上完成一定的开发工作后,需要将新分支推送到远程仓库,以便团队成员可以查看和协作。

1
2
3
4
# 第一次推送新分支,同时建立本地分支和远程分支的关联
git push -u origin new-feature
# 后续推送该分支的更新,只需执行
git push
BASH
origin 是远程仓库的默认别名,new-feature 是你要推送的本地分支名称。执行 git push -u origin new-feature 后,本地的 new-feature 分支就会和远程仓库的 new-feature 分支建立关联,之后再推送该分支的更新时,直接使用 git push 即可。

4. 合并分支到 main 分支

在完成新功能的开发并测试通过后,需要将新分支合并到 main 分支。以下是具体步骤:

步骤一:切换到 main 分支并拉取最新代码

1
2
3
4
# 切换到 main 分支
git checkout main
# 拉取远程 main 分支的最新代码
git pull origin main
BASH

这一步的目的是确保本地的 main 分支是最新的,避免在合并时出现冲突。

步骤二:合并新分支到 main 分支

1
2
# 合并新分支到 main 分支
git merge new-feature
BASH

执行该命令后,Git 会尝试将 new-feature 分支的修改合并到 main 分支。如果没有冲突,合并会自动完成;如果有冲突,需要手动解决冲突。

步骤三:解决冲突(如果有)

当合并分支时出现冲突,Git 会在冲突的文件中标记出冲突的部分,你需要手动打开这些文件,根据实际情况修改冲突内容。例如,文件中可能会出现类似以下的标记:

1
2
3
4
5
<<<<<<< HEAD
// main 分支的代码
=======
// new-feature 分支的代码
>>>>>>> new-feature
PLAINTEXT
你需要根据需求选择保留哪部分代码,或者将两部分代码进行整合,然后删除这些标记。修改完成后,将文件添加到暂存区并提交:
1
2
git add conflict-file.txt
git commit -m "解决合并冲突"
BASH

步骤四:将合并后的 main 分支推送到远程仓库

1
git push origin main
BASH

成员协作

在多人协作开发场景下,为避免冲突和代码混乱,管理同学分支的合并可以采用以下流程和方法:

1. 使用代码托管平台的合并请求(Pull Request,简称 PR)功能

多数代码托管平台(如 GitHub、GitLab、Gitee 等)都提供了合并请求功能,这是管理分支合并的有效方式。

同学端操作

  • 完成开发并推送分支:同学在完成自己分支(如 feature-branch)的开发工作后,将该分支推送到远程仓库。
    1
    git push -u origin feature-branch
    BASH
  • 发起合并请求:同学登录代码托管平台,在仓库页面发起从 feature-branchmain 分支的合并请求。在发起合并请求时,通常需要填写合并请求的标题和描述,说明本次开发的功能和修改内容。

你端操作

  • 审核合并请求:当收到同学的合并请求通知后,你可以在代码托管平台上查看合并请求的详细信息,包括修改的文件、代码差异等。
  • 代码审查:仔细审查同学提交的代码,检查代码质量、功能实现、是否符合项目规范等。你可以在代码托管平台上对代码进行评论和反馈,提出修改建议。
  • 解决冲突(如果有):如果合并请求中存在冲突,代码托管平台会提示你。你可以选择在平台上直接解决冲突,或者将代码拉取到本地进行解决。
    1
    2
    3
    4
    5
    6
    7
    8
    # 拉取远程分支
    git fetch origin feature-branch
    # 创建本地分支并切换到该分支
    git switch -c feature-branch origin/feature-branch
    # 切换到 main 分支
    git switch main
    # 尝试合并分支
    git merge feature-branch
    BASH
    解决冲突后,提交修改并推送到远程仓库。
  • 批准并合并:在审核通过且解决了所有冲突后,你可以在代码托管平台上批准并合并该分支到 main 分支。

2. 定期沟通和同步

除了使用合并请求功能,定期与同学进行沟通和同步也非常重要。

  • 进度沟通:定期与同学交流各自的开发进度,了解他们是否完成了开发任务,是否准备好发起合并请求。
  • 问题讨论:在开发过程中,可能会遇到一些技术问题或设计问题。通过沟通和讨论,可以及时解决这些问题,避免在合并时出现更大的冲突。

3. 制定合并规则和流程

为了确保合并过程的顺利进行,建议制定明确的合并规则和流程。

  • 代码规范:制定统一的代码规范,要求团队成员在开发过程中遵循这些规范。这样可以减少代码风格不一致导致的冲突。
  • 测试要求:规定在发起合并请求之前,必须对代码进行充分的测试,确保代码的质量和稳定性。
  • 合并时间:确定合适的合并时间,避免在项目关键时期进行大规模的合并操作,以免影响项目进度。

总结:🚀 Git 快速指令手册(GitHub 协作)

一、初始化配置

  1. 安装 Git(已装跳过)

    1
    brew install git
    BASH

  2. 设置用户名/邮箱(全局)

    1
    2
    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"
    BASH

  3. 生成 SSH 密钥(自定义路径示例)

    1
    2
    ssh-keygen -t rsa -b 4096 -C "注释"  # 如:-C "macbook-work"
    # 保存路径:/Users/你/Desktop/gitkey/id_rsa(按提示回车)
    BASH

  4. 加载密钥到代理

    1
    2
    eval "$(ssh-agent -s)"
    ssh-add /Users/你/Desktop/gitkey/id_rsa # 替换实际路径
    BASH

  5. 复制公钥到 GitHub

    1
    pbcopy < /Users/你/Desktop/gitkey/id_rsa.pub  # 粘贴到 GitHub 设置
    BASH

二、创建 & 关联仓库

  1. 本地初始化仓库(默认 main 分支)

    1
    2
    mkdir 项目名 && cd 项目名
    git init -b main
    BASH

  2. 关联远程仓库

    1
    git remote add origin git@github.com:你的用户名/仓库名.git
    BASH

  3. 首次推送(解决远程已有文件冲突)

    1
    2
    git pull --rebase origin main  # 拉取远程(如 README)
    git push -u origin main # 推送本地 main
    BASH

三、分支开发(单人)

  1. 创建并切换分支

    1
    git switch -c 分支名  # 等价:git checkout -b 分支名
    BASH

  2. 提交代码

    1
    2
    git add .           # 添加所有改动
    git commit -m "描述提交"
    BASH

  3. 推送分支到远程

    1
    2
    git push -u origin 分支名  # 首次推送
    git push # 后续推送
    BASH

四、协作合并(负责人操作)

  1. 同学推送分支并提 PR
    同学:git push -u origin 他的分支名 → 在 GitHub 发起合并请求。

  2. 你审核并合并

    • 解决冲突(本地):
      1
      2
      3
      4
      5
      git fetch origin 他的分支名  # 拉取远程分支
      git switch main # 切回主分支
      git merge origin/他的分支名 # 合并,手动改冲突文件
      git add 冲突文件 && git commit -m "合并说明"
      git push origin main # 推送到远程
      BASH
    • 直接在 GitHub PR 界面点击 Merge(推荐)。
  3. 删除已合并分支(可选)

    1
    2
    git branch -d 他的分支名    # 删除本地分支
    git push origin --delete 他的分支名 # 删除远程分支
    BASH

五、常见问题

  1. 推送被拒(远程有更新)

    1
    git pull --rebase origin main  # 先拉取合并,再推送
    BASH

  2. 合并冲突解决
    手动修改文件中 <<<<<<< 标记的冲突部分 → git add 冲突文件git commit

📌 极简流程图

1
2
3
4
5
本地开发:
新建分支 → 写代码 → addcommit → push(分支)

协作合并:
同学提 PR → 你审查/解决冲突 → 点击 Merge(GitHub)→ 删除废分支
SQL

记住:永远不要直接在 main 分支开发! 🔥
(全文完,按场景查指令即可)

有时候push操作出现失败的话,可能需要重新加载密钥

1
2
3
4
5
6
7
8
9
有时候,SSH 代理可能没有正确加载私钥,这就会导致身份验证失败。
解决办法:
启动 SSH 代理:
bash
eval "$(ssh-agent -s)"

把私钥添加到 SSH 代理:
bash
ssh-add ~/.ssh/id_rsa
BASH


git协作开发指南
http://example.com/2025/03/22/cs/git笔记/
作者
bradin
发布于
2025年3月22日
许可协议