【Git】Git06:Git 管理 Android 项目教程(含GitHub)

(一):前置准备 + 本地仓库初始化

对于 Android 小白来说,用 Git 管理项目的核心是「结合 Android Studio(AS)可视化操作 + 基础 Git 命令」,既不用死记硬背命令,又能保证版本管理规范。本教程全程贴合 Android 开发实际场景(如忽略编译文件、AS 集成操作),分步骤带你上手。

一、前置准备(必做)

1. 确认 Git 已安装并配置

之前已经学过 Git 安装和基础配置,这里快速验证:

  • 打开 Android Studio → 底部菜单栏「Terminal」(AS 内置终端,等同于 Git Bash);

  • 执行命令验证: bash

    复制代码
    git --version  # 输出 git version 2.51.1.windows.1 即成功
    git config --list  # 确认 user.name 和 user.email 已配置(没有则补配置)
  • 若未配置用户身份,在 Terminal 中执行(替换为你的信息): bash

    复制代码
    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"

2. Android Studio 配置 Git 路径(自动识别为主,手动补全为辅)

AS 一般会自动识别 Git 安装路径,若未识别需手动配置:

  1. 打开 AS → 顶部菜单栏「File」→「Settings」(Windows)/「Preferences」(Mac);
  2. 左侧找到「Version Control」→「Git」;
  3. 右侧「Path to Git executable」选择 Git 安装目录下的 bin/git.exe(默认路径:C:\Program Files\Git\bin\git.exe);
  4. 点击「Test」,弹出「Git executed successfully」即配置成功。

3. 创建 / 打开 Android 项目

  • 新建项目:AS →「Start a new Android Studio project」→ 选模板(如 Empty Views Activity)→ 填写项目名(如 GitAndroidDemo)、保存路径 → 完成;
  • 打开已有项目:「File」→「Open」→ 选择项目目录。

二、核心第一步:配置 .gitignore 文件(Android 项目专属)

Android 项目编译会生成大量临时文件(如 build.idea),这些文件无需纳入版本控制(占空间、易冲突),必须通过 .gitignore 告诉 Git 忽略它们。

1. 创建 .gitignore 文件

  • 方法 1(AS 可视化):

    1. 选中项目根目录(如 GitAndroidDemo)→ 右键 →「New」→「File」;
    2. 文件名输入 .gitignore(注意开头有小数点,无后缀)→「OK」。
  • 方法 2(终端命令):在 AS Terminal 中执行: bash

    复制代码
    cd 你的项目路径  # 若已在项目根目录则跳过(AS Terminal 默认在项目根目录)
    touch .gitignore

2. 粘贴 Android 项目专用 .gitignore 模板(直接复制用,无需修改)

打开 .gitignore 文件,粘贴以下内容(覆盖 Android 项目所有需忽略的文件):

plaintext

复制代码
# 编译产物
/build/
/app/build/
/*/build/
*.apk
*.ap_
*.aab
*.dex
*.class
*.so
/.gradle/
gradle/wrapper/gradle-wrapper.jar
!gradle/wrapper/gradle-wrapper.properties

# IDE 配置文件
.idea/
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/caches
*.iml
*.iws
*.ipr
.DS_Store  # Mac 系统临时文件
Thumbs.db  # Windows 系统临时文件

# 本地配置文件
local.properties
.env
.env.local
.env.dev
.env.prod

# 日志和缓存
*.log
*.tmp
.cache/
.navigation/
captures/
output.json

# 其他无用文件
*.bak
*.tmp
*.swp
  • 保存文件(Ctrl+S / Command+S),Git 会自动识别该文件并生效。

3. 验证 .gitignore 效果(后续提交时会体现)

配置后,build.idea 等文件夹在 AS 中会显示「灰色」,表示已被 Git 忽略,不会纳入暂存和提交。

三、初始化本地仓库(两种方式,小白选 AS 可视化)

方式 1:Android Studio 可视化操作(推荐,无需记命令)

  1. 选中项目根目录 → 顶部菜单栏「VCS」→「Import into Version Control」→「Create Git Repository...」;
  2. 弹出窗口默认选中项目根目录(无需修改)→ 点击「OK」;
  3. 此时项目根目录会生成隐藏的 .git 文件夹(本地仓库核心),AS 底部菜单栏会出现「Git」选项卡,说明初始化成功。

方式 2:终端命令操作(巩固之前学的命令)

在 AS Terminal 中执行:

bash

复制代码
# 确保当前目录是项目根目录(AS Terminal 默认已在)
git init
  • 输出 Initialized empty Git repository in ... 即成功,效果和可视化操作一致。

四、首次提交:将 Android 项目代码纳入 Git 管理

提交流程:「工作区 → 暂存区 → 版本库」,AS 操作更直观,同时附上对应命令。

1. 暂存文件(选择要提交的文件)

  • AS 可视化:

    1. 选中项目根目录 → 右键 →「Git」→「Add」;
    2. 此时文件图标会变成「绿色对勾」,表示已加入暂存区(仅暂存未被 .gitignore 忽略的文件,如 app/srcbuild.gradle 等核心文件)。
  • 终端命令(对应操作): bash

    复制代码
    git add .  # 暂存所有未被忽略的文件(. 表示当前目录)

2. 提交到版本库(记录版本)

  • AS 可视化:

    1. 顶部菜单栏「VCS」→「Git」→「Commit...」(或快捷键 Ctrl+K / Command+K);
    2. 弹出提交窗口:
      • 左侧:勾选要提交的文件(默认已勾选暂存的文件,无需修改);
      • 右侧「Commit Message」:必须填写清晰的提交说明(如「首次提交:初始化 Android 项目,创建空活动」);
      • 点击底部「Commit」(若弹出「Commit Successful」提示,说明提交成功)。
  • 终端命令(对应操作): bash

    复制代码
    git commit -m "首次提交:初始化 Android 项目,创建空活动"

3. 查看提交历史(验证提交结果)

  • AS 可视化:

    1. 顶部菜单栏「VCS」→「Git」→「Show History」;
    2. 弹出窗口会显示所有提交记录,包括提交者、时间、提交信息,点击某条记录可查看该版本的文件变更。
  • 终端命令(对应操作): bash

    复制代码
    git log  # 查看详细提交历史
    git log --oneline  # 查看简洁版提交历史(哈希值+提交信息)

五、日常开发:修改代码后的提交流程(重复操作)

Android 开发中,每次完成一个小功能(如布局编写、逻辑实现)都要提交版本,养成「小步提交」的习惯。

示例:修改布局文件后提交

  1. 打开 app/src/main/res/layout/activity_main.xml,添加一个按钮:

    xml

    复制代码
    <Button
        android:id="@+id/btn_test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="测试按钮"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>
  2. 保存文件(Ctrl+S),此时文件图标会变成「蓝色问号」(表示已修改但未暂存);

  3. 暂存:右键文件 →「Git」→「Add」(图标变绿色对勾);

  4. 提交:Ctrl+K → 提交信息写「添加测试按钮布局」→「Commit」。

六、小白避坑要点

  1. 绝对不要提交 .gitignore 中列出的文件 :若发现 build.idea 等文件被暂存(图标不是灰色),先检查 .gitignore 文件是否创建正确、路径是否在项目根目录;
  2. 提交信息要清晰:不要写「修改代码」「更新文件」这种模糊描述,要具体(如「修复登录按钮点击无响应 bug」「新增用户注册功能布局」);
  3. 小步提交:不要积累大量修改后一次性提交,建议每完成一个独立功能 / 修复一个 bug 就提交一次,后续回退或协作更方便;
  4. AS 中 Git 图标含义 (快速识别文件状态):
    • 绿色对勾:已暂存;
    • 蓝色问号:已修改未暂存;
    • 红色感叹号:未跟踪(未被 Git 管理,且不在 .gitignore 中);
    • 灰色:已被 .gitignore 忽略。

(二):分支管理实战(功能开发 + Bug 修复)

上一讲我们完成了 Android 项目的本地仓库初始化和首次提交,这一讲聚焦 Android 开发核心场景的分支管理------ 用分支隔离不同开发任务(新功能、Bug 修复),避免代码混乱。全程结合 Android Studio 可视化操作(小白友好)+ 对应 Git 命令,兼顾实操性和知识点巩固。

一、Android 项目分支规范(小白直接套用)

在 Android 开发中,分支命名和用途有固定规范,避免团队协作时混乱,新手直接按以下规则命名:

分支类型 命名格式 用途示例
主分支 main(或 master 存放可上线的稳定代码,禁止直接开发和推送
功能分支 feature/功能名称 开发新功能(如 feature/login 开发登录功能)
Bug 修复分支 bugfix/问题描述 修复开发中的 Bug(如 bugfix/btn-crash 修复按钮崩溃)
紧急修复分支 hotfix/问题描述 修复线上紧急 Bug(基于 main 分支创建)

本讲重点讲解 功能分支Bug 修复分支 的完整流程。

二、场景 1:功能分支开发(如开发登录功能)

核心流程:切换到 main 分支 → 创建 feature 分支 → 开发功能 → 提交代码 → 合并回 main 分支 → 删除功能分支

步骤 1:切换到 main 分支(确保基于最新稳定代码创建)

  • Android Studio 可视化:

    1. 底部菜单栏找到「Git」选项卡 → 点击分支名称(如当前已在 main,直接下一步);
    2. 若不在 main,点击「Switch to Branch...」→ 选择「main」→ 点击「Switch」。
  • 终端命令(AS Terminal 中执行): bash

    复制代码
    git switch main  # 切换到 main 分支

步骤 2:创建并切换到功能分支(feature/login

  • AS 可视化(推荐):

    1. 顶部菜单栏「VCS」→「Git」→「Branch...」(或快捷键 Ctrl+Shift+B / Command+Shift+B);
    2. 弹出窗口:
      • 「Branch name」输入 feature/login
      • 「Checkout branch」勾选(创建后直接切换);
      • 点击「Create」,底部状态栏会显示「Switched to branch 'feature/login'」,切换成功。
  • 终端命令: bash

    复制代码
    git switch -c feature/login  # 创建并切换到 feature/login 分支

步骤 3:在功能分支开发登录功能(实际编码)

这一步是 Android 开发核心,我们做简单示例(创建登录布局 + 逻辑):

  1. 右键 app/src/main/res/layout →「New」→「Layout resource file」→ 文件名 activity_login.xml → 点击「OK」;

  2. 粘贴登录布局代码(简单示例): xml

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center"
        android:padding="20dp">
    
        <EditText
            android:id="@+id/et_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入用户名"/>
    
        <EditText
            android:id="@+id/et_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入密码"
            android:inputType="textPassword"
            android:layout_marginTop="10dp"/>
    
        <Button
            android:id="@+id/btn_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="登录"
            android:layout_marginTop="20dp"/>
    
    </LinearLayout>
  3. 右键 app/src/main/java/你的包名 →「New」→「Activity」→「Empty Views Activity」→ 活动名 LoginActivity → 勾选「Generate Layout File」(布局文件选已创建的 activity_login.xml)→「Finish」;

  4. LoginActivity.kt(或 Java)中添加简单点击逻辑:

    kotlin

    复制代码
    class LoginActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_login)
    
            val btnLogin = findViewById<Button>(R.id.btn_login)
            btnLogin.setOnClickListener {
                Toast.makeText(this, "登录按钮点击", Toast.LENGTH_SHORT).show()
            }
        }
    }

步骤 4:提交功能分支的代码(小步提交)

开发完核心逻辑后,提交版本(遵循「小步提交」原则):

  • AS 可视化:

    1. 选中项目根目录 → 右键 →「Git」→「Add」(暂存所有修改文件,图标变绿色对勾);
    2. 顶部菜单栏「VCS」→「Git」→「Commit...」(Ctrl+K);
    3. 提交信息写清晰:feature/login:完成登录页面布局和按钮点击逻辑
    4. 点击「Commit」,提交成功。
  • 终端命令: bash

    复制代码
    git add .  # 暂存所有修改
    git commit -m "feature/login:完成登录页面布局和按钮点击逻辑"  # 提交

步骤 5:将功能分支合并回 main 分支(功能开发完成)

功能测试通过后,将 feature/login 合并到 main 分支(稳定分支):

  1. 先切换回 main 分支:
    • 可视化:底部「Git」→「Switch to Branch...」→ 选择「main」→「Switch」;
    • 命令:git switch main
  2. 合并 feature/login 分支:
    • AS 可视化:

      1. 顶部菜单栏「VCS」→「Git」→「Merge Changes...」(或快捷键 Ctrl+Shift+M);
      2. 弹出窗口:「Branch to merge」选择 feature/login → 点击「Merge」;
      3. 若提示「Merge successful」,说明无冲突,合并完成。
    • 终端命令: bash

      复制代码
      git merge feature/login  # 将 feature/login 合并到当前 main 分支

步骤 6:删除功能分支(合并后无用,清理环境)

  • AS 可视化:

    1. 底部「Git」→「Branch...」→ 选中 feature/login → 点击「Delete」;
    2. 弹出确认窗口 → 点击「Delete」(已合并的分支会直接删除)。
  • 终端命令: bash

    复制代码
    git branch -d feature/login  # 安全删除已合并的功能分支

三、场景 2:Bug 修复分支开发(如修复登录按钮崩溃 Bug)

核心流程:切换到 main 分支 → 创建 bugfix 分支 → 修复Bug → 提交代码 → 合并回 main 分支 → 删除修复分支

步骤 1:切换到 main 分支,创建 bugfix 分支

假设 main 分支的登录功能存在 Bug(点击按钮崩溃,原因是未判空用户名),需要修复:

  • 切换到 main 分支(同场景 1 步骤 1);
  • 创建并切换到 bugfix/login-btn-crash 分支:
    • 可视化:「VCS」→「Git」→「Branch...」→ 名称 bugfix/login-btn-crash → 勾选「Checkout」→「Create」;
    • 命令:git switch -c bugfix/login-btn-crash

步骤 2:修复 Bug 并提交

  1. 打开 LoginActivity.kt,修改点击逻辑(添加判空):

    kotlin

    复制代码
    btnLogin.setOnClickListener {
        val username = findViewById<EditText>(R.id.et_username).text.toString()
        if (username.isEmpty()) {
            Toast.makeText(this, "用户名不能为空", Toast.LENGTH_SHORT).show()
            return@setOnClickListener
        }
        Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show()
    }
  2. 提交修复代码:

    • 可视化:右键项目→「Git」→「Add」→「Commit...」→ 提交信息 bugfix/login-btn-crash:修复登录按钮崩溃,添加用户名判空 →「Commit」;

    • 命令: bash

      复制代码
      git add .
      git commit -m "bugfix/login-btn-crash:修复登录按钮崩溃,添加用户名判空"

步骤 3:合并回 main 分支并删除 bugfix 分支

  • 切换回 main 分支:git switch main(可视化同前);
  • 合并 bugfix 分支:git merge bugfix/login-btn-crash(可视化同前);
  • 删除 bugfix 分支:git branch -d bugfix/login-btn-crash(可视化同前)。

四、关键:Android 项目中的冲突解决(小白必看)

分支合并时最容易遇到「冲突」------ 比如两人同时修改了 activity_login.xml 的同一部分(如按钮文本),Git 无法自动合并,需要手动解决。

冲突场景示例

  1. 你在 feature/login 分支将登录按钮文本改为「登录账号」;
  2. 同事在 main 分支将同一按钮文本改为「立即登录」;
  3. 你合并 feature/loginmain 时,触发冲突。

冲突解决步骤(AS 可视化操作,超简单)

  1. 合并时弹出「Conflicts detected」提示,点击「Show Conflicts」查看冲突文件;

  2. 冲突文件会显示红色标记,打开 activity_login.xml,冲突部分如下(Git 自动标记):

    xml

    复制代码
    <<<<<<< HEAD  // main 分支的代码(同事修改)
    android:text="立即登录"
    =======  // feature/login 分支的代码(你的修改)
    android:text="登录账号"
    >>>>>>> feature/login
  3. 手动修改冲突内容:保留需要的文本(或合并),删除冲突标记(<<<<<<<=======>>>>>>>),示例修改为:

    xml

    复制代码
    android:text="登录账号"  // 保留你的修改,或改为「立即登录」,按需调整
  4. 保存文件(Ctrl+S),右键冲突文件 →「Git」→「Add」(标记为已解决冲突);

  5. 点击 AS 顶部「Commit」按钮,提交冲突解决后的代码,完成合并。

冲突解决避坑

  • 冲突只修改「冲突标记内的内容」,不要误删其他布局 / 代码;
  • 解决后一定要运行项目测试,确保功能正常(避免解决冲突时误改逻辑);
  • 多人协作时,尽量避免同时修改同一文件的同一部分(可分工负责不同模块)。

五、Android 项目分支管理小白避坑要点

  1. 绝对不要在 main 分支直接开发:main 是稳定分支,所有开发都在 feature/bugfix 分支进行,合并后再更新 main;
  2. 分支命名要规范 :按「类型 / 功能」命名,比如 feature/register(注册功能)、bugfix/et-null(输入框判空 Bug),后续查历史能快速识别;
  3. 小步提交代码:开发功能时,每完成一个小模块(如布局、单一逻辑)就提交一次,避免冲突时丢失大量代码;
  4. 切换分支前提交本地修改 :若在 feature 分支开发到一半需要切换到 main 分支,先提交当前修改(或用 git stash 暂存),否则修改会被带到目标分支;
  5. 合并前拉取最新代码:多人协作时,合并分支前先拉取远程 main 分支的最新代码(后续讲远程协作时详细说),避免冲突。

(三):远程仓库协作(GitHub/GitLab 实战)

上一讲我们完成了 Android 项目的本地分支管理(功能开发、Bug 修复),这一讲聚焦 远程协作核心场景------ 把本地代码推送到 GitHub/GitLab 备份、多人协作同步代码、通过 PR/MR 合并远程分支,全程贴合 Android 开发团队实际工作流,小白可直接套用。

一、前置准备(必做)

  1. 已注册 GitHub/GitLab 账号 ,并创建了「空远程仓库」(仓库名建议和本地 Android 项目一致,如 GitAndroidDemo,创建时不要勾选 README,避免冲突);
  2. 确认本地 Git 已配置连接方式 (二选一):
    • SSH 方式(免密码,推荐):已配置 SSH 密钥到 GitHub/GitLab(之前远程协作教程讲过,验证 ssh -T git@github.com 成功);
    • HTTPS 方式(新手友好):GitHub 需准备「个人访问令牌(PAT)」,GitLab 用账号密码;
  3. 本地 Android 项目已完成初始化 (有 .gitignore 文件,本地仓库已创建,有 main 分支和提交记录)。

二、核心场景 1:本地 Android 项目推送到远程仓库(首次关联)

适合:本地已开发完部分功能,想把代码上传到远程备份,或开启团队协作。

步骤 1:本地仓库关联远程仓库(Android Studio 可视化)

  1. 打开 Android Studio → 顶部菜单栏「VCS」→「Git」→「Remotes...」;
  2. 弹出窗口点击「+」→「Add Remote」;
  3. 「Name」填 origin(远程仓库默认别名),「URL」粘贴远程仓库地址(HTTPS/SSH 二选一)→ 点击「OK」;
  4. 再次点击「OK」关闭窗口,关联完成。
  • 终端命令(对应操作,可选): bash

    复制代码
    # 确保在项目根目录(AS Terminal 默认已在)
    git remote add origin https://github.com/你的用户名/GitAndroidDemo.git
    # 验证关联:输出远程仓库 fetch/push 地址即成功
    git remote -v

步骤 2:推送本地 main 分支到远程

main 是稳定分支,首次推送需绑定本地与远程分支的跟踪关系:

  • AS 可视化(推荐):

    1. 顶部菜单栏「VCS」→「Git」→「Push...」(或快捷键 Ctrl+Shift+K / Command+Shift+K);
    2. 弹出推送窗口:
      • 左侧「Branch」选择「main」(本地分支);
      • 右侧「Remote Branch」自动填充「main」(远程分支名,与本地一致);
      • 勾选「Set upstream」(绑定跟踪关系,后续可直接 git push);
      • 点击「Push」;
    3. 若用 HTTPS 方式:弹出登录窗口,GitHub 输入「账号 + PAT」,GitLab 输入「账号 + 密码」;若用 SSH 方式:无需登录,直接推送成功;
    4. 提示「Push successful」即完成。
  • 终端命令(对应操作):

    bash

    复制代码
    # 首次推送 main 分支,-u 绑定跟踪关系
    git push -u origin main

步骤 3:推送本地 feature 分支到远程(多人协作开发)

若你在本地 feature/register 分支开发注册功能,需把分支推到远程,让同事协作审核:

  • AS 可视化:

    1. 先切换到 feature/register 分支(底部「Git」→「Switch to Branch...」→ 选择分支);
    2. 「VCS」→「Git」→「Push...」;
    3. 左侧选择「feature/register」,右侧远程分支名自动填充「feature/register」→ 点击「Push」;
  • 终端命令: bash

    复制代码
    git switch feature/register  # 切换到功能分支
    git push -u origin feature/register  # 推送并绑定远程分支

步骤 4:验证推送结果

打开 GitHub/GitLab 远程仓库页面,刷新后可看到:

  • 「main」分支下有 Android 项目核心文件(app/srcbuild.gradle 等),无 build.idea 等忽略文件;
  • 「Branches」页面可看到推送的 feature/register 分支。

三、核心场景 2:多人协作流程(拉取同事代码 + 推送自己的代码)

假设你和同事协作开发 Android 项目,同事已推送 feature/pay 分支(支付功能),你需要拉取他的分支参考,同时推送自己的 feature/register 分支,流程如下:

步骤 1:拉取远程最新分支信息(同步同事的分支)

  • AS 可视化:

    1. 顶部菜单栏「VCS」→「Git」→「Fetch」;
    2. 弹出窗口选择「origin」(远程仓库别名)→ 点击「Fetch」;
    3. 完成后,底部「Git」→「Branches」中可看到远程分支 origin/feature/pay
  • 终端命令: bash

    复制代码
    git fetch origin  # 同步远程所有分支信息(不合并代码)

步骤 2:拉取同事的 feature/pay 分支到本地(查看 / 复用代码)

  • AS 可视化:

    1. 底部「Git」→「Switch to Branch...」;
    2. 左侧选择「Remote Branches」→ 找到「origin/feature/pay」→ 点击「Checkout As...」;
    3. 「Branch name」默认 feature/pay → 点击「OK」,本地会创建 feature/pay 分支并切换过去;
    4. 此时可查看同事的支付功能代码(如 PayActivity.ktactivity_pay.xml),甚至复用逻辑。
  • 终端命令: bash

    复制代码
    # 创建并切换到本地 feature/pay 分支,同步远程 origin/feature/pay 的代码
    git switch -c feature/pay origin/feature/pay

步骤 3:基于远程 main 分支开发自己的功能(避免落后)

多人协作时,本地 main 分支可能落后于远程,需先拉取远程 main 最新代码,再创建分支开发:

  • AS 可视化:

    1. 切换到本地 main 分支:底部「Git」→「Switch to Branch...」→ 选择「main」→「Switch」;
    2. 拉取远程 main 最新代码:「VCS」→「Git」→「Pull...」→ 选择「origin/main」→ 点击「Pull」;
    3. 创建自己的功能分支:「VCS」→「Git」→「Branch...」→ 输入 feature/register →「Create」。
  • 终端命令: bash

    复制代码
    git switch main  # 切换到 main 分支
    git pull origin main  # 拉取远程 main 最新代码(合并)
    # 或用 rebase 保持历史整洁:git pull --rebase origin main
    git switch -c feature/register  # 创建功能分支

步骤 4:推送自己的功能分支到远程,发起 PR/MR(合并到 main)

开发完成后,需通过「Pull Request(GitHub)」/「Merge Request(GitLab)」让团队审核代码,审核通过后合并到远程 main 分支(保护分支,禁止直接推送):

  1. 推送本地 feature/register 分支到远程(同场景 1 步骤 3);
  2. 发起 PR/MR(平台操作,Android 项目协作核心):
    • GitHub 操作:
      1. 打开远程仓库页面 → 点击「Pull requests」→「New pull request」;
      2. 「base」选择 main(目标分支),「compare」选择 feature/register(你的分支);
      3. 填写 PR 标题(如「新增注册功能:布局 + 逻辑」)和描述(如「完成注册页面、输入校验、接口调用」);
      4. 点击「Create pull request」,通知同事审核。
    • GitLab 操作:
      1. 打开远程项目页面 → 点击「Merge requests」→「New merge request」;
      2. 「Source branch」选择 feature/register,「Target branch」选择 main
      3. 填写 MR 标题和描述 → 点击「Create merge request」。
  3. 审核与合并:
    • 同事查看代码(如 RegisterActivity.kt、布局文件),提出修改意见;
    • 若需修改:在本地 feature/register 分支继续开发、提交,推送后 PR/MR 会自动更新;
    • 审核通过后,由管理员点击「Merge pull request」(GitHub)/「Merge」(GitLab),合并到远程 main 分支。

步骤 5:拉取合并后的远程 main 分支(同步最新代码)

PR/MR 合并后,本地 main 分支需同步远程最新代码:

  • AS 可视化:

    1. 切换到本地 main 分支;
    2. 「VCS」→「Git」→「Pull...」→ 选择「origin/main」→「Pull」;
  • 终端命令: bash

    复制代码
    git switch main
    git pull origin main

四、Android 项目远程协作小白避坑要点

  1. 绝对不要直接推送远程 main 分支 :团队协作中,main 是保护分支,需通过 PR/MR 审核合并,直接推送会被拒绝(平台可设置权限);

  2. 推送前先拉取最新代码 :每次推送自己的分支前,先拉取远程目标分支(如 origin/main)的最新代码(git pull --rebase origin main),避免因本地代码落后导致冲突;

  3. 确保 .gitignore 生效 :推送后若在远程仓库看到 build.idea 等文件,说明 .gitignore 未生效,需检查:

    • 文件是否在项目根目录(不是 app 目录);

    • 文件名是否正确(.gitignore,无后缀);

    • 若已误提交,执行命令删除远程的忽略文件: bash

      复制代码
      git rm -r --cached build/ .idea/  # 移除已暂存的忽略文件
      git commit -m "移除误提交的 build/.idea 文件"
      git push origin main
  4. HTTPS 推送失败(GitHub) :提示「密码认证被禁用」,需用「个人访问令牌(PAT)」替代密码,PAT 生成路径:GitHub 头像 → Settings → Developer settings → Personal access tokens → 勾选 repo 权限 → 生成后复制,推送时密码填 PAT;

  5. SSH 连接失败 :提示「Permission denied (publickey)」,重新配置 SSH 密钥(本地生成 → 复制公钥 → 粘贴到 GitHub/GitLab 的 SSH 配置页),验证 ssh -T git@github.com 成功后再推送;

  6. 远程冲突解决 :拉取代码时提示冲突(如同事修改了 activity_main.xml,你也修改了同一部分),解决步骤和本地冲突一致:

    • 打开冲突文件,删除 Git 标记(<<<<<<<=======>>>>>>>);
    • 手动合并代码(保留需要的逻辑);
    • 右键文件 →「Git」→「Add」(标记已解决);
    • 提交代码(git commit -m "解决远程合并冲突")→ 重新拉取 / 推送。

五、Android Studio 远程操作快捷入口总结

操作目的 Android Studio 操作路径 对应终端命令
关联远程仓库 VCS → Git → Remotes → Add Remote git remote add origin <远程地址>
推送本地分支到远程 VCS → Git → Push(Ctrl+Shift+K) git push -u origin <分支名>
拉取远程分支到本地 VCS → Git → Pull(Ctrl+T) git pull origin <分支名>
同步远程分支信息(不合并) VCS → Git → Fetch git fetch origin
查看远程分支 底部 Git → Branches → Remote Branches git branch -r
切换远程分支到本地 底部 Git → Switch to Branch → 选择远程分支 → Checkout As git switch -c <本地分支名> origin/< 远程分支名 >
相关推荐
安卓理事人2 小时前
安卓多种通知ui更新的方式(livedata,rxjava,eventbus等)
android·ui·echarts
BS_Li2 小时前
【Linux系统编程】Ext系列文件系统
android·linux·ext系列文件系统
zhangphil2 小时前
Android宽高不均等Bitmap缩放为指定宽高FitCenter到正方形Bitmap,Kotlin
android·kotlin
别或许3 小时前
13.用户管理
android
q***96584 小时前
springboot3整合knife4j详细版,包会!(不带swagger2玩)
android·前端·后端
艾莉丝努力练剑5 小时前
【Git:多人协作】Git多人协作实战:从同分支到多分支工作流
服务器·c++·人工智能·git·gitee·centos·项目管理
巧克力芋泥包8 小时前
前端使用阿里云图形验证码;并且与安卓进行交互
android·前端·阿里云
Just_Paranoid11 小时前
【MQTT】基于 Android 设备接入物联网平台最佳实践
android·mqtt·eclipse·iot·paho·mqtt.fx
alexhilton14 小时前
深入理解withContext和launch的真正区别
android·kotlin·android jetpack