Git 分支管理与远程仓库协作完整指南

本文将介绍如何使用 Git 进行本地克隆,分支管理、远程仓库连接、代码推送以及分支合并的完整流程。

1. 克隆仓库到本地

1.1克隆命令

git clone https://github.com/<your-org-or-username>/<your-repo>.git

1.2 克隆步骤

步骤1: 在自己需要克隆的仓库主页中复制链接,如图所示:
在这里插入图片描述
步骤2:github clone后面的仓库链接换成自己所复制的仓库链接,例如:

git clone https://github.com/zlsbksdxl/DRL-MCPO.git

步骤3:git命令粘贴到终端,在自己存储该项目的目录下按回车执行命令(前提是已经安装好Git)

在这里插入图片描述


2. 检查远程仓库连接

接着,确认本地仓库是否已连接到远程 GitHub 仓库。

2.1 查看当前远程连接

通过一下命令查看当前是否连接上了远程仓库

git remote -v

输出示例:

origin  https://github.com/yorkeyao/Awesome-Aerial-Embodied-AI.git (fetch)
origin  https://github.com/yorkeyao/Awesome-Aerial-Embodied-AI.git (push)

2.2 如果需要修改远程仓库地址

# 修改 origin 的地址
git remote set-url origin <your-repository-address>

# 例如:
git remote set-url origin https://github.com/<your-org-or-username>/<your-repo>.git

2.3 添加新的远程仓库

如果想保留原作者的仓库(upstream)以便同步更新:

# 添加上游仓库
git remote add upstream https://github.com/<your-org-or-username>/<your-repo>.git

# 查看所有远程连接
git remote -v

3. 创建本地分支

3.1 查看当前分支

使用以下命令可以查看当前在本地的哪个分支,例如我目前在本地的zmk分支

git branch

在这里插入图片描述

3.2 创建并切换到新分支

在进行代码修改前,通常需要新建一个分支,并在该分支上进行开发,使用 git checkout -b 命令可以一步完成“创建分支”和“切换分支”的操作:

创建分支命令:

git checkout -b <your_branch_name>

示例:

# 创建并切换到名为 zmk 的新分支
git checkout -b zmk

提示:该命令等同于执行了以下两条命令:

  1. git branch zmk (创建分支)
  2. git checkout zmk (切换分支)

3.3 验证远程分支

# 查看远程分支列表
git branch -r

# 查看所有分支(本地+远程)
git branch -a

4. 修改文件并提交

4.1 查看文件修改状态

git status

输出示例:

On branch zmk
Changes not staged for commit:
  modified:   README.md

4.2 添加修改到暂存区

# 添加单个文件
git add README.md

# 或添加所有修改的文件
git add .

4.3 提交修改

git commit -m "添加20篇协同感知相关论文到 Perception 部分"

提交信息编写建议:

  • 使用清晰、简洁的描述
  • 说明"做了什么"而不是"怎么做的"
  • 可以使用中文或英文
  • 重要修改可以添加详细说明

4.4 查看提交历史

# 简洁查看
git log --oneline

# 详细查看
git log

5. 将本地分支推送到远程仓库

5.1 首次推送(已建立追踪关系)

分支创建并切换成功后(或者在本地进行了一些提交后),需要将这个新分支推送到远程仓库:

推送远程命令:

git push -u origin <your_branch_name>

示例:

# -u 参数会建立本地分支与远程分支的追踪关系
git push -u origin zmk

参数说明:

  • checkout -b: 创建并立即切换到新分支
  • push -u (或 --set-upstream): 将本地分支推送到远程,并建立“追踪关系”。
  • 建立追踪关系的好处:以后在该分支下只需要输入 git pushgit pull,Git 就知道是往 originzmk 分支推送或拉取,无需再输入完整的命令。

输出示例:

Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 2.45 KiB | 2.45 MiB/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To https://github.com/yorkeyao/Awesome-Aerial-Embodied-AI.git
   abc1234..def5678  zmk -> zmk

5.2 后续推送(简化命令)

因为已经用 -u 建立了追踪关系,以后只需:

git push

快速提交推送流程

# 一次性完成:添加 → 提交 → 推送
git add .
git commit -m "更新说明"
git push

6. 合并分支到主分支

将本地分支更新到远程分支之后,如果觉得修改完成,需要将远程功能分支合并到主分支,有两种方式可以将功能分支合并到主分支:

方式一:通过 GitHub Pull Request(推荐)⭐

这是最安全、最常用的方式,适合团队协作。

步骤:
  1. 访问仓库页面

  2. 创建 Pull Request

  • 点击 “Pull requests” 标签

在这里插入图片描述

  • 点击 “New pull request” 按钮

在这里插入图片描述

  • 选择分支:
    • base: main (目标分支)
    • compare: zmk (你的功能分支)
  1. 填写 PR 信息

    标题:添加协同感知相关论文
    
    描述:
    - 添加了 20 篇协同感知相关论文
    - 包括多智能体协同检测、语义分割等任务
    - 重新组织了 Perception 部分的表格结构
    
  2. 审查与合并

    • 点击 “Create pull request”
    • 检查文件变更
    • 确认无误后点击 “Merge pull request”
    • 选择合并方式:
      • Merge commit: 保留所有提交历史
      • Squash and merge: 合并为一个提交(推荐)
      • Rebase and merge: 线性历史
  3. 删除功能分支(可选)

    • 合并后可以安全删除远程分支

方式二:通过命令行直接合并

适合个人项目或紧急修复。

步骤:
  1. 切换到主分支

    git checkout main
    
  2. 拉取最新代码

    git pull origin main
    
  3. 合并功能分支

    git merge zmk
    
  4. 推送到远程

    git push origin main
    
  5. 删除本地功能分支(可选)

    git branch -d zmk
    
  6. 删除远程功能分支(可选)

    git push origin --delete zmk
    

📝 完整工作流程示例

以下是一个完整的开发流程示例:

# 1. 克隆仓库
git clone https://github.com/yorkeyao/Awesome-Aerial-Embodied-AI.git
cd Awesome-Aerial-Embodied-AI

# 2. 创建并切换到功能分支
git checkout -b feature-add-papers

# 3. 修改文件(例如:编辑 README.md)
# ... 在编辑器中修改文件 ...

# 4. 查看修改状态
git status

# 5. 添加修改到暂存区
git add README.md

# 6. 提交修改
git commit -m "添加协同感知相关论文"

# 7. 推送到远程(首次)
git push -u origin feature-add-papers

# 8. 在 GitHub 创建 Pull Request

# 9. 合并后拉取最新的主分支
git checkout main
git pull origin main

# 10. 删除功能分支
git branch -d feature-add-papers
git push origin --delete feature-add-papers

7. 推送单个文件到远程

有时候当本地分支和远程分支的版本不一样时,又不希望pull远程分支来破坏本地分支,只想commit单个文件又推送不上去的时候,就可以使用这个方法
只推这个单文件的正确思路是: 基于远程最新 master 新建一个临时分支,再从本地只带这个文件的改动,再把这个提交推到远程 master。这样不会把你本地其他提交一起推上去,也不会让远程分支改变你当前想要的本地分支

# 0) 确认远程名(你现在看起来是 other)
git remote -v

# 1) 拉远程最新
git fetch [确认好的远程分支名]
# 我这里的远程分支名在本地叫other
git fetch other

# 2) 从远程 master 开一个临时分支(关键)
git switch -c push-one-file other/master

# 3) 把你本地 master 上这个文件的版本取过来
git checkout master -- scripts/fill_training_samples.py

# 4) 只提交这一个文件
git add scripts/fill_training_samples.py
git commit -m "feat: update training sample generation script"

# 5) 推到远程 master(只带这一个新提交)
git push other HEAD:master

⚠️ 常见问题与解决

1. 推送被拒绝(远程有新提交)

# 错误信息
! [rejected]        main -> main (fetch first)

# 解决方法
git pull origin main --rebase
git push origin main

2. 合并冲突

# 查看冲突文件
git status

# 手动解决冲突后
git add <已解决的文件>
git commit -m "解决合并冲突"

3. 误提交敏感信息

# 撤销最后一次提交(保留修改)
git reset HEAD~1

# 撤销最后一次提交(丢弃修改)
git reset --hard HEAD~1

# 如果已推送到远程(慎用)
git push origin main --force

🔗 相关资源

Happy Coding! 🚀

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐