(一):前置准备 + 本地仓库初始化
对于 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 安装路径,若未识别需手动配置:
- 打开 AS → 顶部菜单栏「File」→「Settings」(Windows)/「Preferences」(Mac);
- 左侧找到「Version Control」→「Git」;
- 右侧「Path to Git executable」选择 Git 安装目录下的
bin/git.exe(默认路径:C:\Program Files\Git\bin\git.exe); - 点击「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 可视化):
- 选中项目根目录(如
GitAndroidDemo)→ 右键 →「New」→「File」; - 文件名输入
.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 可视化操作(推荐,无需记命令)
- 选中项目根目录 → 顶部菜单栏「VCS」→「Import into Version Control」→「Create Git Repository...」;
- 弹出窗口默认选中项目根目录(无需修改)→ 点击「OK」;
- 此时项目根目录会生成隐藏的
.git文件夹(本地仓库核心),AS 底部菜单栏会出现「Git」选项卡,说明初始化成功。
方式 2:终端命令操作(巩固之前学的命令)
在 AS Terminal 中执行:
bash
# 确保当前目录是项目根目录(AS Terminal 默认已在)
git init
- 输出
Initialized empty Git repository in ...即成功,效果和可视化操作一致。
四、首次提交:将 Android 项目代码纳入 Git 管理
提交流程:「工作区 → 暂存区 → 版本库」,AS 操作更直观,同时附上对应命令。
1. 暂存文件(选择要提交的文件)
-
AS 可视化:
- 选中项目根目录 → 右键 →「Git」→「Add」;
- 此时文件图标会变成「绿色对勾」,表示已加入暂存区(仅暂存未被
.gitignore忽略的文件,如app/src、build.gradle等核心文件)。
-
终端命令(对应操作): bash
git add . # 暂存所有未被忽略的文件(. 表示当前目录)
2. 提交到版本库(记录版本)
-
AS 可视化:
- 顶部菜单栏「VCS」→「Git」→「Commit...」(或快捷键 Ctrl+K / Command+K);
- 弹出提交窗口:
- 左侧:勾选要提交的文件(默认已勾选暂存的文件,无需修改);
- 右侧「Commit Message」:必须填写清晰的提交说明(如「首次提交:初始化 Android 项目,创建空活动」);
- 点击底部「Commit」(若弹出「Commit Successful」提示,说明提交成功)。
-
终端命令(对应操作): bash
git commit -m "首次提交:初始化 Android 项目,创建空活动"
3. 查看提交历史(验证提交结果)
-
AS 可视化:
- 顶部菜单栏「VCS」→「Git」→「Show History」;
- 弹出窗口会显示所有提交记录,包括提交者、时间、提交信息,点击某条记录可查看该版本的文件变更。
-
终端命令(对应操作): bash
git log # 查看详细提交历史 git log --oneline # 查看简洁版提交历史(哈希值+提交信息)
五、日常开发:修改代码后的提交流程(重复操作)
Android 开发中,每次完成一个小功能(如布局编写、逻辑实现)都要提交版本,养成「小步提交」的习惯。
示例:修改布局文件后提交
-
打开
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"/> -
保存文件(Ctrl+S),此时文件图标会变成「蓝色问号」(表示已修改但未暂存);
-
暂存:右键文件 →「Git」→「Add」(图标变绿色对勾);
-
提交:Ctrl+K → 提交信息写「添加测试按钮布局」→「Commit」。
六、小白避坑要点
- 绝对不要提交 .gitignore 中列出的文件 :若发现
build、.idea等文件被暂存(图标不是灰色),先检查.gitignore文件是否创建正确、路径是否在项目根目录; - 提交信息要清晰:不要写「修改代码」「更新文件」这种模糊描述,要具体(如「修复登录按钮点击无响应 bug」「新增用户注册功能布局」);
- 小步提交:不要积累大量修改后一次性提交,建议每完成一个独立功能 / 修复一个 bug 就提交一次,后续回退或协作更方便;
- 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 可视化:
- 底部菜单栏找到「Git」选项卡 → 点击分支名称(如当前已在
main,直接下一步); - 若不在
main,点击「Switch to Branch...」→ 选择「main」→ 点击「Switch」。
- 底部菜单栏找到「Git」选项卡 → 点击分支名称(如当前已在
-
终端命令(AS Terminal 中执行): bash
git switch main # 切换到 main 分支
步骤 2:创建并切换到功能分支(feature/login)
-
AS 可视化(推荐):
- 顶部菜单栏「VCS」→「Git」→「Branch...」(或快捷键 Ctrl+Shift+B / Command+Shift+B);
- 弹出窗口:
- 「Branch name」输入
feature/login; - 「Checkout branch」勾选(创建后直接切换);
- 点击「Create」,底部状态栏会显示「Switched to branch 'feature/login'」,切换成功。
- 「Branch name」输入
-
终端命令: bash
git switch -c feature/login # 创建并切换到 feature/login 分支
步骤 3:在功能分支开发登录功能(实际编码)
这一步是 Android 开发核心,我们做简单示例(创建登录布局 + 逻辑):
-
右键
app/src/main/res/layout→「New」→「Layout resource file」→ 文件名activity_login.xml→ 点击「OK」; -
粘贴登录布局代码(简单示例): 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> -
右键
app/src/main/java/你的包名→「New」→「Activity」→「Empty Views Activity」→ 活动名LoginActivity→ 勾选「Generate Layout File」(布局文件选已创建的activity_login.xml)→「Finish」; -
在
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 可视化:
- 选中项目根目录 → 右键 →「Git」→「Add」(暂存所有修改文件,图标变绿色对勾);
- 顶部菜单栏「VCS」→「Git」→「Commit...」(Ctrl+K);
- 提交信息写清晰:
feature/login:完成登录页面布局和按钮点击逻辑; - 点击「Commit」,提交成功。
-
终端命令: bash
git add . # 暂存所有修改 git commit -m "feature/login:完成登录页面布局和按钮点击逻辑" # 提交
步骤 5:将功能分支合并回 main 分支(功能开发完成)
功能测试通过后,将 feature/login 合并到 main 分支(稳定分支):
- 先切换回
main分支:- 可视化:底部「Git」→「Switch to Branch...」→ 选择「main」→「Switch」;
- 命令:
git switch main。
- 合并
feature/login分支:-
AS 可视化:
- 顶部菜单栏「VCS」→「Git」→「Merge Changes...」(或快捷键 Ctrl+Shift+M);
- 弹出窗口:「Branch to merge」选择
feature/login→ 点击「Merge」; - 若提示「Merge successful」,说明无冲突,合并完成。
-
终端命令: bash
git merge feature/login # 将 feature/login 合并到当前 main 分支
-
步骤 6:删除功能分支(合并后无用,清理环境)
-
AS 可视化:
- 底部「Git」→「Branch...」→ 选中
feature/login→ 点击「Delete」; - 弹出确认窗口 → 点击「Delete」(已合并的分支会直接删除)。
- 底部「Git」→「Branch...」→ 选中
-
终端命令: 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。
- 可视化:「VCS」→「Git」→「Branch...」→ 名称
步骤 2:修复 Bug 并提交
-
打开
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() } -
提交修复代码:
-
可视化:右键项目→「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 无法自动合并,需要手动解决。
冲突场景示例
- 你在
feature/login分支将登录按钮文本改为「登录账号」; - 同事在
main分支将同一按钮文本改为「立即登录」; - 你合并
feature/login到main时,触发冲突。
冲突解决步骤(AS 可视化操作,超简单)
-
合并时弹出「Conflicts detected」提示,点击「Show Conflicts」查看冲突文件;
-
冲突文件会显示红色标记,打开
activity_login.xml,冲突部分如下(Git 自动标记):xml
<<<<<<< HEAD // main 分支的代码(同事修改) android:text="立即登录" ======= // feature/login 分支的代码(你的修改) android:text="登录账号" >>>>>>> feature/login -
手动修改冲突内容:保留需要的文本(或合并),删除冲突标记(
<<<<<<<、=======、>>>>>>>),示例修改为:xml
android:text="登录账号" // 保留你的修改,或改为「立即登录」,按需调整 -
保存文件(Ctrl+S),右键冲突文件 →「Git」→「Add」(标记为已解决冲突);
-
点击 AS 顶部「Commit」按钮,提交冲突解决后的代码,完成合并。
冲突解决避坑
- 冲突只修改「冲突标记内的内容」,不要误删其他布局 / 代码;
- 解决后一定要运行项目测试,确保功能正常(避免解决冲突时误改逻辑);
- 多人协作时,尽量避免同时修改同一文件的同一部分(可分工负责不同模块)。
五、Android 项目分支管理小白避坑要点
- 绝对不要在 main 分支直接开发:main 是稳定分支,所有开发都在 feature/bugfix 分支进行,合并后再更新 main;
- 分支命名要规范 :按「类型 / 功能」命名,比如
feature/register(注册功能)、bugfix/et-null(输入框判空 Bug),后续查历史能快速识别; - 小步提交代码:开发功能时,每完成一个小模块(如布局、单一逻辑)就提交一次,避免冲突时丢失大量代码;
- 切换分支前提交本地修改 :若在 feature 分支开发到一半需要切换到 main 分支,先提交当前修改(或用
git stash暂存),否则修改会被带到目标分支; - 合并前拉取最新代码:多人协作时,合并分支前先拉取远程 main 分支的最新代码(后续讲远程协作时详细说),避免冲突。
(三):远程仓库协作(GitHub/GitLab 实战)
上一讲我们完成了 Android 项目的本地分支管理(功能开发、Bug 修复),这一讲聚焦 远程协作核心场景------ 把本地代码推送到 GitHub/GitLab 备份、多人协作同步代码、通过 PR/MR 合并远程分支,全程贴合 Android 开发团队实际工作流,小白可直接套用。
一、前置准备(必做)
- 已注册 GitHub/GitLab 账号 ,并创建了「空远程仓库」(仓库名建议和本地 Android 项目一致,如
GitAndroidDemo,创建时不要勾选 README,避免冲突); - 确认本地 Git 已配置连接方式 (二选一):
- SSH 方式(免密码,推荐):已配置 SSH 密钥到 GitHub/GitLab(之前远程协作教程讲过,验证
ssh -T git@github.com成功); - HTTPS 方式(新手友好):GitHub 需准备「个人访问令牌(PAT)」,GitLab 用账号密码;
- SSH 方式(免密码,推荐):已配置 SSH 密钥到 GitHub/GitLab(之前远程协作教程讲过,验证
- 本地 Android 项目已完成初始化 (有
.gitignore文件,本地仓库已创建,有main分支和提交记录)。
二、核心场景 1:本地 Android 项目推送到远程仓库(首次关联)
适合:本地已开发完部分功能,想把代码上传到远程备份,或开启团队协作。
步骤 1:本地仓库关联远程仓库(Android Studio 可视化)
- 打开 Android Studio → 顶部菜单栏「VCS」→「Git」→「Remotes...」;
- 弹出窗口点击「+」→「Add Remote」;
- 「Name」填
origin(远程仓库默认别名),「URL」粘贴远程仓库地址(HTTPS/SSH 二选一)→ 点击「OK」; - 再次点击「OK」关闭窗口,关联完成。
-
终端命令(对应操作,可选): bash
# 确保在项目根目录(AS Terminal 默认已在) git remote add origin https://github.com/你的用户名/GitAndroidDemo.git # 验证关联:输出远程仓库 fetch/push 地址即成功 git remote -v
步骤 2:推送本地 main 分支到远程
main 是稳定分支,首次推送需绑定本地与远程分支的跟踪关系:
-
AS 可视化(推荐):
- 顶部菜单栏「VCS」→「Git」→「Push...」(或快捷键 Ctrl+Shift+K / Command+Shift+K);
- 弹出推送窗口:
- 左侧「Branch」选择「main」(本地分支);
- 右侧「Remote Branch」自动填充「main」(远程分支名,与本地一致);
- 勾选「Set upstream」(绑定跟踪关系,后续可直接
git push); - 点击「Push」;
- 若用 HTTPS 方式:弹出登录窗口,GitHub 输入「账号 + PAT」,GitLab 输入「账号 + 密码」;若用 SSH 方式:无需登录,直接推送成功;
- 提示「Push successful」即完成。
-
终端命令(对应操作):
bash
# 首次推送 main 分支,-u 绑定跟踪关系 git push -u origin main
步骤 3:推送本地 feature 分支到远程(多人协作开发)
若你在本地 feature/register 分支开发注册功能,需把分支推到远程,让同事协作审核:
-
AS 可视化:
- 先切换到
feature/register分支(底部「Git」→「Switch to Branch...」→ 选择分支); - 「VCS」→「Git」→「Push...」;
- 左侧选择「feature/register」,右侧远程分支名自动填充「feature/register」→ 点击「Push」;
- 先切换到
-
终端命令: bash
git switch feature/register # 切换到功能分支 git push -u origin feature/register # 推送并绑定远程分支
步骤 4:验证推送结果
打开 GitHub/GitLab 远程仓库页面,刷新后可看到:
- 「main」分支下有 Android 项目核心文件(
app/src、build.gradle等),无build、.idea等忽略文件; - 「Branches」页面可看到推送的
feature/register分支。
三、核心场景 2:多人协作流程(拉取同事代码 + 推送自己的代码)
假设你和同事协作开发 Android 项目,同事已推送 feature/pay 分支(支付功能),你需要拉取他的分支参考,同时推送自己的 feature/register 分支,流程如下:
步骤 1:拉取远程最新分支信息(同步同事的分支)
-
AS 可视化:
- 顶部菜单栏「VCS」→「Git」→「Fetch」;
- 弹出窗口选择「origin」(远程仓库别名)→ 点击「Fetch」;
- 完成后,底部「Git」→「Branches」中可看到远程分支
origin/feature/pay。
-
终端命令: bash
git fetch origin # 同步远程所有分支信息(不合并代码)
步骤 2:拉取同事的 feature/pay 分支到本地(查看 / 复用代码)
-
AS 可视化:
- 底部「Git」→「Switch to Branch...」;
- 左侧选择「Remote Branches」→ 找到「origin/feature/pay」→ 点击「Checkout As...」;
- 「Branch name」默认
feature/pay→ 点击「OK」,本地会创建feature/pay分支并切换过去; - 此时可查看同事的支付功能代码(如
PayActivity.kt、activity_pay.xml),甚至复用逻辑。
-
终端命令: bash
# 创建并切换到本地 feature/pay 分支,同步远程 origin/feature/pay 的代码 git switch -c feature/pay origin/feature/pay
步骤 3:基于远程 main 分支开发自己的功能(避免落后)
多人协作时,本地 main 分支可能落后于远程,需先拉取远程 main 最新代码,再创建分支开发:
-
AS 可视化:
- 切换到本地
main分支:底部「Git」→「Switch to Branch...」→ 选择「main」→「Switch」; - 拉取远程
main最新代码:「VCS」→「Git」→「Pull...」→ 选择「origin/main」→ 点击「Pull」; - 创建自己的功能分支:「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 分支(保护分支,禁止直接推送):
- 推送本地
feature/register分支到远程(同场景 1 步骤 3); - 发起 PR/MR(平台操作,Android 项目协作核心):
- GitHub 操作:
- 打开远程仓库页面 → 点击「Pull requests」→「New pull request」;
- 「base」选择
main(目标分支),「compare」选择feature/register(你的分支); - 填写 PR 标题(如「新增注册功能:布局 + 逻辑」)和描述(如「完成注册页面、输入校验、接口调用」);
- 点击「Create pull request」,通知同事审核。
- GitLab 操作:
- 打开远程项目页面 → 点击「Merge requests」→「New merge request」;
- 「Source branch」选择
feature/register,「Target branch」选择main; - 填写 MR 标题和描述 → 点击「Create merge request」。
- GitHub 操作:
- 审核与合并:
- 同事查看代码(如
RegisterActivity.kt、布局文件),提出修改意见; - 若需修改:在本地
feature/register分支继续开发、提交,推送后 PR/MR 会自动更新; - 审核通过后,由管理员点击「Merge pull request」(GitHub)/「Merge」(GitLab),合并到远程
main分支。
- 同事查看代码(如
步骤 5:拉取合并后的远程 main 分支(同步最新代码)
PR/MR 合并后,本地 main 分支需同步远程最新代码:
-
AS 可视化:
- 切换到本地
main分支; - 「VCS」→「Git」→「Pull...」→ 选择「origin/main」→「Pull」;
- 切换到本地
-
终端命令: bash
git switch main git pull origin main
四、Android 项目远程协作小白避坑要点
-
绝对不要直接推送远程
main分支 :团队协作中,main是保护分支,需通过 PR/MR 审核合并,直接推送会被拒绝(平台可设置权限); -
推送前先拉取最新代码 :每次推送自己的分支前,先拉取远程目标分支(如
origin/main)的最新代码(git pull --rebase origin main),避免因本地代码落后导致冲突; -
确保
.gitignore生效 :推送后若在远程仓库看到build、.idea等文件,说明.gitignore未生效,需检查:-
文件是否在项目根目录(不是 app 目录);
-
文件名是否正确(
.gitignore,无后缀); -
若已误提交,执行命令删除远程的忽略文件: bash
git rm -r --cached build/ .idea/ # 移除已暂存的忽略文件 git commit -m "移除误提交的 build/.idea 文件" git push origin main
-
-
HTTPS 推送失败(GitHub) :提示「密码认证被禁用」,需用「个人访问令牌(PAT)」替代密码,PAT 生成路径:GitHub 头像 → Settings → Developer settings → Personal access tokens → 勾选
repo权限 → 生成后复制,推送时密码填 PAT; -
SSH 连接失败 :提示「Permission denied (publickey)」,重新配置 SSH 密钥(本地生成 → 复制公钥 → 粘贴到 GitHub/GitLab 的 SSH 配置页),验证
ssh -T git@github.com成功后再推送; -
远程冲突解决 :拉取代码时提示冲突(如同事修改了
activity_main.xml,你也修改了同一部分),解决步骤和本地冲突一致:- 打开冲突文件,删除 Git 标记(
<<<<<<<、=======、>>>>>>>); - 手动合并代码(保留需要的逻辑);
- 右键文件 →「Git」→「Add」(标记已解决);
- 提交代码(
git commit -m "解决远程合并冲突")→ 重新拉取 / 推送。
- 打开冲突文件,删除 Git 标记(
五、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/< 远程分支名 > |