首页 > 解决方案 > .gitignore 不会忽略 CMakeLists 文件夹

问题描述

我的代码结构如下

cpppen
|
|-c++11-features
|  |
|  |-async_task
      | 
      | - async_task.cpp
      | - CMakeFiles/ 
      | - CMakeLists.txt

我想将CMakeFiles/文件夹添加到.gitignore

由于某种原因,它似乎不起作用。

*.o
*.cbp
*.cmake
CMakeCache.txt
cmake_install.cmake
bin/
build/
CMakeLists.txt.user
**/CMakeFiles/
venv
**/.idea
CMakeScripts
Testing
Makefile

install_manifest.txt
compile_commands.json
CTestTestfile.cmake

cmake-build-debug/

c++11-features/async_task/async_task.exe

有人可以指出为什么它没有CMakeFiles忽略async_task. 我犯了什么错误.gitignore

标签: c++c++11cmakegitignore

解决方案


如果该文件夹cpppen是 Git 的根文件夹(带有文件夹.git),它应该按照您**/CMakeFiles/.gitignore. 但.gitignore也必须在那里创建(当然可以在任何子目录中,但通常/默认.gitignore是在 git 的根文件夹中)。

cpppen
.gitignore
...

如果您CMakeFiles在之前的任何提交中跟踪过该文件夹,则必须首先从 Git 中取消跟踪该文件夹使用以下命令执行此操作:

# Execute from Git root folder
git rm -r --cached c++11/async_task/CMakeLists

之后,您可以添加 ( git add .) 您的更改并提交 ( git commit -m "No longer tracking CMakeLists to include in gitignore") 它们。现在您已准备好推送 ( git push),之后,您可以转到远程存储库,该文件夹CMakeLists将不再可见!


还有另一种方式(更专业/更清晰),如何将文件夹添加CMakeLists到您的.gitignore.

正如现在所指出的 ( **/CMakeFiles/)存储库中具有此文件夹名称 ( CMakeFiles ) 的所有文件夹都将被忽略。如果您突然创建另一个同名文件夹,但希望它在远程存储库中可用怎么办?因此,我将输入如下:.gitignore

c++11/async_task/CMakeLists/

这是您定义仅忽略您想要的文件夹(CMakeFilesin c++11/async_task)而不忽略任何其他同名文件夹的方式。是一件可以产生很大影响的小事;-)


推荐阅读