repo根目录文件提交

简介

当一个工程非常大时,通常会拆分成多个小工程.小工程用git管理,由小工程整组成一个大工程,大工程用repo管理
比如Android SDK项目,通常总包大小会有20G以上,二级目录有30多个.

├── Android.bp -> build/soong/root.bp
├── Makefile
├── README.md
├── art
├── bionic
├── bootable
├── bootstrap.bash -> build/soong/bootstrap.bash
├── bsp
├── build
├── build.sh
├── compatibility
├── cts
├── dalvik
├── developers
├── development
├── device
├── external
├── frameworks
├── hardware
├── kernel
├── knc
├── libcore
├── libnativehelper
├── packages
├── pdk
├── platform_testing
├── prebuilts
├── sdk
├── system
├── test
├── toolchain
├── tools
└── vendor

需求

在一级根目录中,有时候需要放一些单个文件,比如放一些README或者编译脚本,但是根目录下没有git管理.比如上面列的目录中的文件README.md,build.sh及连接 bootstrap.bash, Android.bp.

实现

修改.repo/manifests/default.xml
文件用copyfile实现从子目录中拷贝,
连接用linkfile实现从子目录中连接出来.

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
    <remote  name="origin"
        fetch="ssh://git@git.xxxx.cn:33/xx" />

    <default revision="dev" remote="origin" />

    <project path="build" name="build">
        <copyfile src="make/core/root.mk" dest="Makefile" />
        <copyfile src="soong/benew.sh" dest="build.sh" />
        <linkfile src="soong/root.bp" dest="Android.bp" />
        <linkfile src="soong/bootstrap.bash" dest="bootstrap.bash" />
    </project>
    <project path="sdk" name="sdk" />
    <project path="dalvik" name="dalvik" />
    <project path="art" name="art" />
    <project path="toolchain" name="toolchain" />
    <project path="bionic" name="bionic" />
    <project path="tools" name="tools" />
    <project path="development" name="development" />
    <project path="system" name="system" />
    <project path="pdk" name="pdk" />
    <project path="bootable" name="bootable" />
    <project path="platform_testing" name="platform_testing" />
    <project path="compatibility" name="compatibility" />
    <project path="kernel" name="kernel" />
    <project path="test" name="test" />
    <project path="libcore" name="libcore" />
    <project path="hardware" name="hardware" />
    <project path="libnativehelper" name="libnativehelper" />
    <project path="knc" name="knc">
        <copyfile src="build/mk" dest="mk" />
    </project>
    <project path="developers" name="developers" />
    <project path="packages" name="packages" />
    <project path="cts" name="cts" />
    <project path="frameworks" name="frameworks" />
    <project path="device" name="device" />
    <project path="external" name="external" />
    <project path="vendor" name="vendor" />
    <project path="bsp" name="bsp" />
    <project path="prebuilts" name="prebuilts" />
</manifest>

修改完要提交
cd .repo/manifests/
然后用git命令提交
git add default.xml
git commit -m “copy new file”
git push origin default

作者:帅得不敢出门 谢绝转载

<think>好的,用户想知道如何在Git或其他版本控制工具中配置.gitignore文件来排除不必要的文件。首先,我需要回忆一下相关的知识,确保信息准确。 根据引用[2]和[5],.gitignore文件的作用是告诉Git哪些文件目录应该被忽略。用户可能刚开始接触版本控制,所以需要从基础开始解释。首先,应该说明如何创建这个文件,比如在项目根目录下新建一个名为.gitignore的文本文件,并添加规则。需要提到不同系统下的操作,比如在Linux下使用touch命令,或者在Windows资源管理器中创建。 接下来,需要解释忽略规则的语法。引用[5]提到了一些匹配语法,比如通配符*,目录斜杠/,以及注释符#。需要具体举例说明,比如*.log忽略所有日志文件,/target/忽略根目录下的target目录等。同时,用户可能需要了解如何排除特定文件但保留其他,比如!important.log。 然后,用户可能关心实际应用中的常见场景。引用[4]和[5]提到了忽略IDE生成的文件、编译产物、日志文件、敏感信息等。可以分点列出这些场景,并给出对应的规则示例,比如.idea/、*.class、*.log、application.yml等。 另外,需要注意.gitignore文件的位置。根目录下的.gitignore会影响整个项目,而子目录中的则只对该目录有效。这点需要明确说明,避免用户混淆。 还有,用户可能想知道配置完成后如何生效。需要提醒他们,如果文件已经被版本控制,需要先移除,比如使用git rm --cached命令。否则,即使添加到.gitignore,Git还是会继续跟踪这些文件。 最后,检查是否有遗漏点,比如如何验证.gitignore是否生效,或者如何处理已经提交文件。可能需要建议用户使用git status来检查忽略效果,或者提供相关命令的示例。 总结一下,回答的结构应该是:创建文件、语法规则、常见场景、注意事项,最后生成相关问题。需要确保每个部分清晰易懂,符合用户的实际需求,并正确引用提供的参考资料。</think>在版本控制系统中配置`.gitignore`文件是管理代码仓库的重要技能,以下分步骤说明具体操作方法: ### 一、创建与基础配置 1. **新建文件** 在项目根目录创建`.gitignore`文件: ```bash touch .gitignore # Linux/macOS ``` Windows可通过资源管理器右键新建文本文件并重命名 2. **基本语法规则** - `*.log`:忽略所有日志文件 - `/target/`:忽略根目录下的`target`目录 - `!important.log`:特殊排除(保留`important.log`) - `# 注释`:添加说明性文字[^5] ### 二、常见场景配置 | 场景类型 | 示例规则 | 作用说明 | |-----------------|-------------------------|-----------------------------| | IDE配置文件 | `.idea/` `*.iml` | 排除JetBrains IDE生成文件[^2] | | 编译产物 | `bin/` `*.class` | 忽略Java编译结果 | | 依赖目录 | `node_modules/` | 排除npm包目录 | | 敏感信息 | `config/application.yml` | 保护数据库密码等配置[^4] | | 系统文件 | `.DS_Store` `Thumbs.db` | 排除操作系统生成文件 | ### 三、高级配置技巧 1. **模式匹配** - `logs/**/*.tmp`:匹配`logs`目录下所有子目录的`.tmp`文件 - `temp?`:匹配`temp1`、`tempa`等4字符名称 2. **多级控制** 可在子目录创建`.gitignore`文件,仅作用于当前目录 ### 四、生效验证 ```bash git status --ignored # 查看被忽略文件列表 ``` 若文件已被追踪,需先解除: ```bash git rm --cached filename # 保留本地文件,仅从版本库删除 ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅得不敢出门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值