编辑:所以有两种可能性 atm:
-
我在 .gitignore 文件中使用通配符的方式,即使用单独的父条目,揭示了意外行为
我 是个坏孩子,被推开了大约两周没有更新的机器:我运行 Arch,这是一台便携式机器,所以我只在冒险中使用它。我确实做了一个完整的系统更新,但它没有更新 git,所以不确定 atm。
我将用一些虚拟存储库测试笔记本电脑,并尝试使用 .gitignore 打破 git。早上会回来报告,现在睡觉时间。
第二次编辑:
我无法用旧机器或看似异常的 .gitignore 复制此问题。我能得出的唯一模糊的结论是,我的机器有点过时了,不知何故引起了问题。但是,由于我实际上无法证明这一点,因此我不能肯定地说。我认为这是用户错误的情况。
原文:
我刚刚添加了一个包含以下内容的 .gitignore 文件
build
build/*
CMSIS
CMSIS/*
FreeRTOS
FreeRTOS/*
tags
然后我推送更改并将它们拉到我的另一台笔记本电脑上。随机的东西没有被拉出来,比如半个文件之类的东西......然后我去查看我的makefile,发现这个:
#
# makefile
# <username>, 2019-06-02 16:16
#
all:
@echo "makefile needs your attention"
#vim: ft=make
#
然后当我去猫内容粘贴到这里时,文件现在已经消失了。我做了一个愚蠢的事情还是 Git 现在只是处于不连贯的状态?
这也是我的项目结构:
$ tree
.
|-- CMSIS
| `-- efm32zg
| |-- Source -> /usr/include/sdks/gecko_sdk/platform/Device/SiliconLabs/EFM32ZG/Source
| `-- system_efm32zg.d
|-- FreeRTOS
| `-- efm32zg
| `-- Source -> /usr/include/sdks/gecko_sdk/util/third_party/freertos/Source
|-- README
|-- build
| |-- debug
| | |-- CMSIS
| | | `-- efm32zg
| | | |-- subdir.mk
| | | `-- system_efm32zg.d
| | |-- FreeRTOS
| | | `-- efm32zg
| | | `-- subdir.mk
| | |-- efm32zg.ld
| | |-- makefile
| | |-- objects.mk
| | `-- sources.mk
| `-- release
| |-- STK3200_config.o
| |-- config_dw1000.o
| |-- config_efm32zg222f32.o
| |-- config_example.o
| |-- config_venus638.o
| |-- dw1000_adaptor.o
| |-- dw1000_buildMAC.o
| |-- dw1000_commRxTx.o
| |-- dw1000_decodeMAC.o
| |-- dw1000_nodeMgmt.o
| |-- dw1000_tofCalcs.o
| |-- dw1000_types.o
| |-- efm32zg222f32_adaptor.o
| |-- efm32zg_cmu_HAL.o
| |-- efm32zg_gpio_HAL.o
| |-- efm32zg_gpio_IO_HAL.o
| |-- efm32zg_interrupts_HAL.o
| |-- efm32zg_timer_HAL.o
| |-- efm32zg_types_HAL.o
| |-- efm32zg_usart_HAL.o
| |-- efm32zg_usart_IO_HAL.o
| |-- entertainment_IPS.axf
| |-- entertainment_IPS.bin
| |-- entertainment_IPS.hex
| |-- main.o
| |-- mpi_cmu.o
| |-- mpi_ext_dev.o
| |-- mpi_gpio.o
| |-- mpi_timer.o
| |-- mpi_usart.o
| |-- spongecake.axf
| |-- spongecake.bin
| |-- spongecake.hex
| |-- startup_efm32zg.o
| |-- system_efm32zg.o
| |-- venus638.o
| `-- venus638_adaptor.o
|-- src
| |-- HAL
| | |-- host
| | | `-- efm32zg222f32
| | | |-- efm32zg_cmu_HAL.c
| | | |-- efm32zg_cmu_HAL.h
| | | |-- efm32zg_gpio_HAL.c
| | | |-- efm32zg_gpio_HAL.h
| | | |-- efm32zg_gpio_IO_HAL.c
| | | |-- efm32zg_gpio_IO_HAL.h
| | | |-- efm32zg_interrupts_HAL.c
| | | |-- efm32zg_interrupts_HAL.h
| | | |-- efm32zg_timer_HAL.c
| | | |-- efm32zg_timer_HAL.h
| | | |-- efm32zg_types_HAL.c
| | | |-- efm32zg_types_HAL.h
| | | |-- efm32zg_usart_HAL.c
| | | |-- efm32zg_usart_HAL.h
| | | |-- efm32zg_usart_IO_HAL.c
| | | `-- efm32zg_usart_IO_HAL.h
| | `-- slave
| | |-- README
| | |-- dw1000
| | | |-- README
| | | |-- dw1000_buildMAC.c
| | | |-- dw1000_buildMAC.h
| | | |-- dw1000_commRxTx.c
| | | |-- dw1000_commRxTx.h
| | | |-- dw1000_decodeMAC.c
| | | |-- dw1000_decodeMAC.h
| | | |-- dw1000_nodeMgmt.c
| | | |-- dw1000_nodeMgmt.h
| | | |-- dw1000_regs.h
| | | |-- dw1000_tofCalcs.c
| | | |-- dw1000_tofCalcs.h
| | | |-- dw1000_types.c
| | | |-- dw1000_types.h
| | | `-- dw1000_version.h
| | `-- venus638
| | |-- README
| | |-- venus638.c
| | `-- venus638.h
| |-- README
| |-- application
| | |-- README
| | |-- configs
| | | |-- README
| | | |-- _app_config.h
| | | |-- config_dw1000.c
| | | |-- config_dw1000.h
| | | |-- config_efm32zg222f32.c
| | | |-- config_efm32zg222f32.h
| | | |-- config_example.c
| | | |-- config_example.h
| | | |-- config_venus638.c
| | | `-- config_venus638.h
| | `-- main.c
| |-- board
| | |-- README
| | `-- STK3200
| | |-- STK3200_config.c
| | `-- STK3200_config.h
| |-- middleware
| | |-- README
| | |-- mpi_cmu.c
| | |-- mpi_cmu.h
| | |-- mpi_ext_dev.c
| | |-- mpi_ext_dev.h
| | |-- mpi_gpio.c
| | |-- mpi_gpio.h
| | |-- mpi_port.h
| | |-- mpi_timer.c
| | |-- mpi_timer.h
| | |-- mpi_types.h
| | |-- mpi_usart.c
| | `-- mpi_usart.h
| `-- port_adaptors
| |-- README
| |-- dw1000_adaptor.c
| |-- dw1000_adaptor.h
| |-- efm32zg222f32_adaptor.c
| |-- efm32zg222f32_adaptor.h
| |-- venus638_adaptor.c
| `-- venus638_adaptor.h
|-- tags
`-- tools
`-- openocd
`-- jlink
`-- openocd.cfg
首先,你的 gitignore 可以是:
build/
CMSIS/
FreeRTOS/
无需通配符。
其次,如果这些文件夹已被跟踪,则需要取消跟踪它们。
例如:
git rm --cached -r build/
第三,在原始存储库中执行git status
,以查看是否有任何文件显示为已删除。
做一个 git show 来准确查看上次提交中记录的内容。
您可能还想尝试以下将忽略已提交内容的操作:
git update-index --assume-unchanged build/