Я был пойман тем, что кажется довольно распространенной проблемой для git новичков.
Я забыл .gitignore конкретный файл и добавив его в .gitignore после того, как он совершил ошибку, не имеет значения.
Я нашел эту страницу на gitready, в которой объясняется, как удалить файл из репозитория, не удаляя его из рабочего дерева (с помощью команды git rm --cached <file>
, который работает нормально, за исключением того, что если я попытаюсь объединить это обратно в другую ветку, файлы в рабочем дереве будут удалены.
Шаги для воспроизведения в пустой папке:
git init
touch want.txt
touch wantnot.txt
git add .
git commit -m "Initial"
git checkout -b BranchForIgnore
git rm --cached wantnot.txt
cat > .gitignore
wantnot.txt [Ctrl-D Ctrl-D here to exit cat]
git add .
git commit -m "Ignoring file"
До сих пор все нормально
git checkout master
git merge BranchForIgnore
В этот момент мои файлы wantnot.txt больше не находятся в моем хозяине, и, очевидно, проверка BranchForIgnore тоже не поможет.
Что делать?