Git 刚刚清除了我一半的本地存储库,在添加 .gitignore 后,随机的东西被拉到我的另一台机器上



编辑:所以有两种可能性 atm:

  1. 我在 .gitignore 文件中使用通配符的方式,即使用单独的父条目,揭示了意外行为

  2. 是个坏孩子,被推开了大约两周没有更新的机器:我运行 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/

相关内容

最新更新