git 带子仓库与.gitignore 实践 You‘ve added another git repository inside your current repository.

git带子仓库的实现

遇到“You've added another git repository inside your current repository."问题的同学直接看最后

一个git仓库有时候会需要引用另一个仓库,来确保能跟踪到仓库的更新。

操作方法:

在仓库目录下启动命令行,执行:
git submodule add url url就算要添加的子仓库的地址。执行完成后,目录下会克隆好子仓库,同时会出现一个.gitsubmodules的文件,这个文件保存的是该目录下所有子仓库的信息:

[submodule "log"]	//子仓库名称
	path = log		//子仓库所在目录
	url = https://gitee.com/killerp/log.git	//子仓库地址

然后执行git status可以发现有.gitsubmoduleslog需要commit,所以 执行git commit -m "add log";提交更新。这样一个子仓库就添加完成了。

.gitignore 实现忽略文件的版本管理

在一个项目中,有一些文件是不需要进行版本管理的,如编译生成的中间文件,临时文件等。这时候可以用.gitignore文件来实现对这些文件的管理忽略。也就是以后git add .git commit都与.gitignore中指示的文件无关。

操作方法

项目目录下创建.gitignore文件
这里介绍一些常用的规则:

/dir/ 忽略整个dir文件夹
*.zip 忽略所有.zip
/dir/file 忽略dir下file文件

创建文件添加规则,例如:忽略了cJSON.h文件。

.gitignore:

cJSON.h

然后执行git add 和 git commit 后,发现.gitignore并未生效。推送到远程仓库中仍然有cJSON.h,这是因为.gitignore只能忽略那些没有被track(跟踪)的文件,cJSON.h文件已经被track了,所以.gitignore对它无效。
解决办法:执行以下:取消对所有文件的track。

git rm -r --cached .
git commit -m "delete cjson.h"

提交commit,仓库就删除了对cJSON.h的管理,最后恢复对其他文件的管理:

git add .
git commit -m "release"

此后所有的git操作均与cJSON.h无关。

特殊情况

当你想加入.gitignore文件对某个文件忽略时,如果你的仓库中带有子仓库,这时候需要注意了。
当你按以上步骤执行到git add .时,会出现如下信息:

在这里插入图片描述
该信息提示你的仓库中有子仓库,不能直接add。解决办法:执行:

git rm -r --cached log
git submodule add url

url是子仓库地址。这两句目的是删除对log的track,然后再添加log到子仓库。最后执行:

git add .
git commit -m "update .gitignore"

大功告成!你可以试试推送到远程仓库,看看文件是否已被忽略。
辛苦打字不容易,点个赞呗。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44821644/article/details/108268630