Git только что уничтожил половину моего локального репо со случайными вещами, перенесенными на мою другую машину, после добавления .gitignore - PullRequest
0 голосов
/ 02 июня 2019

РЕДАКТИРОВАТЬ: так что есть две возможности atm:

  1. То, как я использовал подстановочные знаки в файле .gitignore, то есть с одиночной родительской записью, показало неожиданное поведение

  2. Я был плохим парнем и столкнулся с машиной, которая не обновлялась примерно две недели: я запускаю Arch, и это портативная машина, поэтому я использую ее только в приключениях.Я сделал полное обновление системы, и он не обновил git, так что не уверен, atm.

Я собираюсь протестировать ноутбук с несколькими фиктивными репозиториями, а также попробую разбить git с помощью .gitignore.Я вернусь утром, теперь спать.

ВТОРОЕ РЕДАКТИРОВАНИЕ:

Я не могу воспроизвести эту проблему ни на старой машине, ни на внешне ненормальном .gitignore.Единственный расплывчатый вывод, который я могу сделать, состоит в том, что моя слегка устаревшая машина вызывала проблемы.Однако, поскольку я не могу доказать это, я не могу сказать наверняка.Я думаю, что это случай ошибки пользователя.

ОРИГИНАЛЬНАЯ ПОЧТА:

Я только что добавил файл .gitignore со следующим содержимым

build
build/*
CMSIS
CMSIS/*
FreeRTOS
FreeRTOS/*
tags

Затем я нажализменения и вытащил их на мой другой ноутбук.Случайные вещи не были извлечены, например, половина файла и тому подобное ... затем я пошел посмотреть на свой make-файл и обнаружил следующее:

#
# makefile
# <username>, 2019-06-02 16:16
#

all:
     @echo "makefile needs your attention"

#vim: ft=make
#

Затем, когда я пошел к cat, содержимое вставилосьэто здесь, файл теперь исчез.Я сделал глупость или 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

Ответы [ 2 ]

1 голос
/ 02 июня 2019

Во-первых, ваш gitignore может быть просто:

build/
CMSIS/
FreeRTOS/

Не требуется подстановочный знак.

Во-вторых, если эти папки уже отслежены, их необходимо отследить.
Например:

git rm --cached -r build/

В-третьих, сделайте git status в своем исходном хранилище, чтобы увидеть, не появился ли какой-либо файл.
Сделайте git show, чтобы увидеть, что именно было записано в последнем коммите.

0 голосов
/ 05 июня 2019

Вы также можете попробовать следующее, которое будет игнорировать уже совершенные вещи:

git update-index --assume-unchanged build/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...