LINUX.ORG.RU

Обход gitignore

 


0

1

Почему работает такой механизм?

$ cat .gitignore:
DIR1/
$ git add DIR2/some_file
$ git commit -m "DIR2/some_file"
$ git push
$ git mv DIR2/some_file DIR1/
$ git commit -m "DIR2/some_file -> DIR1/some_file"
$ git push
$ git ls-files | grep some_file
DIR1/some_file

Так и задумано?

А разве gitignore работает с чистыми метками директорий, а не файлами?

bookman900 ★★★★★
()

The pattern foo/ will match a directory foo and paths underneath it, but will not match a regular file or a symbolic link foo (this is consistent with the way how pathspec works in general in Git)

A trailing «/**» matches everything inside. For example, «abc/**» matches all files inside directory «abc», relative to the location of the .gitignore file, with infinite depth.

формулировки, канеш, моё увожение…

aol ★★★★★
()
Последнее исправление: aol (всего исправлений: 1)
Ответ на: комментарий от aol

@t184256 вот ты чо палец вниз воткнул в мой комментарий и молчишь? Давай, поясни, раз такой профессор.

foo/ will match a directory foo and paths underneath it

«DIR1/some_file» из ОП подходит под это утверждение? Подходит! Однако, не работает.

Вариант с двумя звездочками (DIR1/**) я пробовать не стал. Мне лень/

aol ★★★★★
()

А в чём проблема? Можно просто имплицитно добавить в гит файл, который находитcя в gitignore и его git будет отслеживать так же как и все другие. gitignore всего лишь скрывает файл от git status.

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

можно явно, да. но тут это происходит неявно. (даже учитывая, что git mv == (git rm + git add), на самом деле)

aol ★★★★★
()
Ответ на: комментарий от aol

подходит под это утверждение? Подходит!

подходит

Однако, не работает.

работает

NAME

gitignore - Specifies intentionally untracked files to ignore

SYNOPSIS

$XDG_CONFIG_HOME/git/ignore, $GIT_DIR/info/exclude, .gitignore

DESCRIPTION

A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected; see the NOTES below for details.

Нет такого, что ты выбираешь из мана предложение, додумываешь все остальное, а реальность должна подчиняться твоим фантазиям..

формулировки, канеш, моё увожение…

Заслуживает пальца вниз как чистый шум.

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

see the NOTES below for details.

NOTES
       The purpose of gitignore files is to ensure that certain files not tracked by Git remain untracked.

Хитро́. Получается, что gitignore используется лишь во время git add.

A file gets tracked when it's added to the index--at which point a SHA-1 hash is created for it and an object entry is placed into the .Git\Objects folder.

i_am_not_ai
() автор топика
Ответ на: комментарий от t184256

ууу, какую портянку накатал ради одного предложения, а мне тут что-то про чистый шум вещает! :)

Да, действительно, «Files already tracked by Git are not affected»

aol ★★★★★
()
Ответ на: комментарий от i_am_not_ai

Хитро́. Получается, что gitignore используется лишь во время git add.

Более правильная такая точка зрения: файл .gitignore содержит исключения по умолчанию, и, естественно, он не учитывается, если файлы в операции заданы явно.

raspopov
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.