Git - файлы не добавляются?

80

У меня возникают проблемы, когда я не могу добавлять файлы в свой репозиторий.

Я использую GIT в Windows в Aptana Studio для разработки на Ruby.

Мне удалось отправить несколько файлов на GitHub, но после этого все перестало работать. Например, у меня есть новая подпапка в моем главном каталоге с двумя рубиновыми файлами внутри. Если я вызываю «git add.», А затем «git status», он продолжает говорить «рабочий каталог чист» и мне нечего фиксировать.

Я пробовал "git add folder / myfile.rb" и все равно ничего.

Кто-нибудь знает, что я могу попробовать?

Мартин Блор
источник
2
Не шучу, но попробуйте перезагрузить машину
manojlds
С моей стороны это была какая-то глупая ошибка, я использую черепаховый git, и когда вы фиксируете какие-либо изменения, есть флажок , он не был отмечен на моей стороне, и у меня есть некоторые новые файлы только локально, так что будьте осторожны с этим!
BotanMan 01
1
Я был в подкаталоге проекта smh
Jacksonkr
@Jacksonkr, об этом решении уже сообщалось в ответе gaoagong ниже.
questionto42

Ответы:

145

Я оказался в ситуации, похожей на плакат:

Если я вызываю «git add.», А затем «git status», он продолжает говорить «рабочий каталог чист» и мне нечего фиксировать.

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

Из приведенных выше ответов и того, что я видел в другом месте, обычные решения этой проблемы:

  • Убедитесь, что в рассматриваемом файле действительно сохранены изменения.
  • Убедитесь, что файл не соответствует вашим правилам исключения в .gitignoreи.git/info/exclude
  • Убедитесь, что вы не пытаетесь добавить пустую папку. Git их не отслеживает. Стандартное решение - поместить пустой файл с именем- .gitkeepзаполнителем, чтобы git отслеживал папку.

В моем случае я изначально пытался создать репозиторий git вокруг существующего репо (не зная, что он там был). .gitНекоторое время назад я удалил папку из этого вспомогательного репо, но я не осознавал, что было слишком поздно, и git уже отслеживал его как подмодуль . Вы можете узнать больше о том, как они себя ведут и как их удалить, здесь , но

  • решение для меня было просто бежать git rm --cached path_to_submodule.
зришер
источник
29
Спасатель! Мне просто нужно было ввести, git rm --cached name_of_former_submoduleи путь был получен автоматически.
leymannx
8
что такое подмодуль
Мухаммад Умер
как мне узнать, что это моя проблема? Я не знаю , как признать , что
PlayHardGoPro
1
@MuhammadUmer На странице подмодулей официального файла readme Git более подробно объясняется, что они из себя представляют.
зришер
30

Чтобы добавить к возможным решениям для других пользователей:

Убедитесь, что вы не изменили регистр имени папки в Windows:

У меня была аналогичная проблема, когда папка, называемая Setupуправляемой Git и размещенная на GitHub, вся разработка выполнялась на машине Windows.

В какой-то момент я изменил папку на setup(нижний регистр S). С этого момента, когда я добавил новые файлы в папку установки, они хранились в setupпапке, а не в Setupпапке, но я предполагаю, что, поскольку я разрабатывал на машине Windows, существующая Setupпапка в git / github не была изменена на setup.

В результате я не мог видеть все файлы setupв GitHub. Я подозреваю, что если бы я клонировал проект на машине * nix, я бы увидел две папки Setupи setup.

Поэтому убедитесь, что вы не изменили регистр содержащейся в папке папки на компьютере с Windows, если да, то я бы предложил:

  • Переименование папки во что-то вроде setup-temp
  • git add -A
  • git commit -m "Whatever"
  • Переименуйте папку обратно в то, что вы хотите
  • git add -A
  • git commit -m "Whatever"
antfx
источник
7
Это случилось со мной и с именем файла. Использование git mv -f newFileCase oldFileCase исправит репозиторий
Брайан ДиКаса
У меня была проблема с osx, к сожалению, хотя это файловая система * nux, она обычно настроена без учета регистра, что может вызвать проблемы с инструментами * nux, такими как git.
Pellet
Спасибо, вы спасли мне день
Женя
если у вас есть ожидающие изменения в файлах с «тем же именем», но с другим случаем, это также может вызвать ту же проблему
Маурисио Грасиа Гутьеррес
Как можно узнать, какой oldFileCase ожидает git?
diemo
24

Если файл исключен .gitignoreи вы все равно хотите добавить его, вы можете принудительно добавить его:

git add -f path/to/file.ext
Mobiusloopy
источник
Большое спасибо! Это мне действительно помогло. По какой-то причине мой файл был исключен (не был, .gitignoreпоэтому не знаю почему!), И это устранило мою проблему!
benmaq
13

Странно, но я всю ночь боролся с git, чтобы добавить файл. Оказывается, он уже был добавлен. Git не улавливал мои изменения, поскольку изменения не сохранялись, так как файл был недоступен для моей учетной записи, и моя IDE не сообщала об этом через SSH.

Короче говоря, убедитесь, что он еще не добавлен в репозиторий.

Брэд
источник
1
... думая об этом, gitможно было бы добавить сообщение, если какой-либо из указанных путей полностью уже находится в репозитории ... это сэкономило бы не менее 13 человек на несколько минут.
jjmontes
13

Дважды проверьте свой .gitignoreфайл, чтобы убедиться, что он доступен для просмотра Git. Точно так же есть файл, .git/info/excludeкоторый «исключает» файлы / каталоги из проекта, как и .gitignoreфайл.

воробей
источник
Я бы также добавил, чтобы дважды проверить, что файлы каким-то образом не «уже добавлены» или нет ...
rogerdpack 02
9

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

Гаоагонг
источник
2
Я уверен, что мог бы использовать git add ..или все необходимое, чтобы добраться до уровня, на котором существовали мои изменения, и это тоже сработало бы. Это просто проблема (моя ошибка пользователя).
gaoagong
8

Лучше всего скопировать вашу папку. Удалите оригинал. Клонируйте проект из github, скопируйте новые файлы в новую клонированную папку и повторите попытку.

Крис Г.
источник
Это сработало для меня, используя git на CygWin и получая некоторые сообщения «разрешения не в порядке». Мне даже не нужно было клонировать и копировать измененные файлы, я просто продублировал каталог как есть. Я думаю, что принуждение Windows к перезаписи всего означает, что это исправляет проблемы с разрешениями.
RoG
5

У меня была такая проблема с первой программой в папке. Я сделал «git add», затем «git commit». "git status" выдает описанную ошибку, т.е. "ничего не фиксировать, рабочий каталог чист"

В итоге я удалил файл .git из папки программы. Затем я сделал новый git init, git add и git commit, и он сработал.

codelearner336
источник
Для меня все было наоборот. У меня был конфликт слияния (перебазирования), и мне пришлось перейти cdв папку с git addфайлом.
LosManos
3

Как насчет стандартной процедуры:

git add folder
git commit

Это добавит папку и все файлы с помощью одной команды.
Обратите внимание, что git не может хранить пустые папки.

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

Андрей Каиников
источник
6
Обратите внимание, что git не может хранить пустые папки. ТЫ!
Blundell
3

Вот вы можете найти ответ на ту же проблему:

в основном в этом случае проблема заключалась в игнорировании global_git

Max_Power89
источник
2

В моем случае проблема заключалась в включенной опции SafeCrLf. Я нахожусь в окнах с черепаховым мерзавцем. После отключения опции добавление файлов больше не было проблемой.

код
источник
2

Другой проблемой могут быть права доступа к файлам. Попробуйте выдать: chmod 755 file1

MAQ
источник
2

Глупое решение с моей стороны, но я думал, что он не добавляет и не отправляет новые файлы, потому что github.com не показывает файлы, которые я только что отправил. Я забыл, что добавленные мной файлы находились в другой ветке. Файлы прошли нормально. Мне пришлось переключиться с моей основной ветки на новую ветку в github, чтобы увидеть их. Потерял на это несколько минут :)

Дэвид Петерсон
источник
1

Невозможно (для меня) добавить первый файл в пустой репозиторий, клонированный с GitHub . Вам нужно перейти по ссылке README, которую предлагает создать GitHub. После того, как вы создадите свой первый файл в Интернете , вы сможете нормально работать с git.

Это случилось со мной 17 ноября 2016 года.

Ярекчек
источник
1

Я все еще новичок в git, и это была просто глупая ошибка, которую я сделал, длинная история в одном предложении. Я был не во вложенной папке, как сообщил @gaoagong, а, наоборот, в родительской папке. Как ни странно, я не понял эту идею из этого ответа, вместо этого идея возникла во время тестирования git add --all, см. Длинную историю ниже.

Пример в деталях. Фактическое репо:

введите описание изображения здесь

Родительская папка, которую я по ошибке открыл на родительском уровне (в моем случае vscode_git):

введите описание изображения здесь

Я клонировал репо, но у меня была родительская папка над этим репо, которую я вместо этого открыл, а затем я попытался добавить файл репозитория подпапки git add 'd:\Stack Overflow\vscode_git\vscode-java\.github\ISSUE_TEMPLATE.md', который просто ничего не сделал, без предупреждающего сообщения, а git statusзатем сказал:

ничего не добавлено для фиксации, но присутствуют неотслеживаемые файлы (для отслеживания используйте "git add")

введите описание изображения здесь

Бег git add --allдал мне желтые записки:

предупреждение: добавление встроенного репозитория git: vscode-java встроенный репозиторий и не будет знать, как его получить.

Подсказка: если вы хотели добавить подмодуль, используйте: git submodule add vscode-java

совет: если вы добавили этот путь по ошибке, вы можете удалить его из индекса с помощью git rm --cached vscode-java

См. "Подмодуль git help" для получения дополнительной информации. Git

введите описание изображения здесь

Чтобы это исправить, я вернула git add --allс git rm --cached -r -f -- "d:\Stack Overflow\vscode_git\vscode-java" rm 'vscode-java':

введите описание изображения здесь

Затем, просто открыв вместо этого фактическую папку репо,

введите описание изображения здесь

git снова работал, как ожидалось. Конечно, тогда можно удалить папку ".git" родительской папки:

введите описание изображения здесь

вопрос
источник
1

Вы можете рекурсивно удалить репозиторий, инициализированный git $cd repo added $git rm -rf git

Вы можете создать отдельную ветку и связать подмодули с основной веткой. Документация по подмодулям действительно полезна. Документация [https://git-scm.com/book/en/v2/Git-Tools-Submodules]

Также см. Некоторые решения в [/programming/36236484/mainpting-a-git-repo-inside-another-git-repo]

Сумы
источник
0

Я поискал некоторое время и в конце концов обнаружил, что заблокировал порт SSH, из-за чего перестала работать команда git add. В итоге я сменил источник с помощью https с помощью следующей команды: git remote set-url origin [url-to-git-repo]

топпер 9
источник
0

Я знаю, что это действительно старый вопрос, но я знаю, что это может случиться и с кем-то, оказывается, я работал с файлом с именем AUX.JS, и это зарезервированное имя файла для Windows, это привело к следующей ошибке

фатальный: невозможно stat 'src / hoc / Aux.js': нет такого файла или каталога

так что вы можете удалить файл или переименовать его, тогда он будет работать.

Окончательный вывод, в дополнение ко всем остальным действительным ответам, если вы работаете на компьютере с Windows, обратите внимание на вывод команды «git add», он также может предоставить дополнительную информацию.

Вистон Коронелл
источник
Это происходит и со мной в Windows, я использовал git bash в этой ОС для обычного создания файла Aux.js
Alex
0

Была такая же проблема с репо, которое я клонировал из SiteGround Git на свой Mac. В недавно клонированном репо был список измененных файлов,git status говорилось что необходимо добавить в коммит, но попытка добавить или извлечь любой из них вообще ничего не дала.

По какой-то причине в именах файлов был изменен регистр (например, .jpg -> .JPG). Решение заключалось в том, чтобы просто git mvимя файла, которое использовала ОС, использовалось git, например:

git mv File_That_Wont_Add.txt File_THAT_WONT_Add.txt
Дуглас Кругман
источник
0

Недавно я столкнулся с этой проблемой на своем компьютере под управлением Windows 7. Я использую интерфейс окна командной строки git. Решением было быть очень осторожным с чувствительностью к регистру в именах файлов и каталогов при выполнении git add. Хотя git не будет жаловаться, если случай не совсем соответствует регистру файлов файловой системы Windows и именам каталогов, он также не будет добавлять файлы. Было бы нечего делать. Как только я наберу имена файлов с точным регистром, они будут добавлены и перечислены в списке изменений, которые должны быть зафиксированы, как я и предполагал.

jsim
источник
0

У меня была эта проблема в Visual Studio, что сработало для меня: 1 - Щелкните правой кнопкой мыши добавленный файл, который не распознается git. 2- Выберите «Добавить исключенный файл в систему контроля версий».

AlexGH
источник
0

У меня была такая же проблема, потому что была программа, использующая какой-то файл, и git выдает ошибку, в этом случае Visual Studio заблокировала этот файл.

Мехиа Перес Нестор
источник
0

У меня возникла проблема, когда файлы из одной папки не добавлялись в исходный элемент Github. Чтобы решить эту проблему, я удалил папку .git, которая была создана в этой папке.

Вайбхав Горпаде
источник
0

У меня была аналогичная проблема.

Проблема заключалась в том, что в Windows в индекс файл был добавлен в случае, отличном от того, что было в неустановленной области. Например, в индексе файл был именем, xx.txtа в неустановленной области файл был именами Xx.txt.

Из индекса ( xx.txt) удален файл с неправильным регистром . Затем я смог добавить файл с правильным регистром ( Xx.txt).

гигад
источник
0

Ошибка git не добавляла измененный файл. Используя git bash, я изменил папку, ограничив имя папки двойными кавычками. ls правильно отобразил содержимое папки, но git не будет добавлять измененные файлы.

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

например, CD "Имя папки" git status ничего не фиксировать, рабочее дерево очистить CD .. ls 'Имя папки' CD 'Имя папки' git status изменен: ModifiedFileName.bat

Девлин
источник
0

Я пробовал все вышеперечисленное, но ничего не работало. Позже я запустил свою командную строку как администратор и повторил все этапы, то есть постановку -> фиксацию -> удаленное добавление -> нажатие. Это сработало как по волшебству. Изменения были отражены в желаемом удаленном репозитории.

Надеюсь, это поможет :) Сохраняйте спокойствие и продолжайте кодировать.

PS Я новичок и пытаюсь извлечь уроки из ошибки.

скалистый
источник
0

Подобное случилось со мной, когда я переименовал файл в Uppercase/Lowercase. Таким образом, временное переименование файла может решить проблему.

Т. Тодуа
источник
0

В таких случаях проверьте правила в глобальном файле .gitignore и убедитесь, что ваша папка не помещается в них.

Приянка Сингх
источник
0

Вот как я заставил свою работать:

Я начал

git init 

внутри каталога со всеми файлами / папками, которые я хотел включить.

Я побежал

git add --all
git add .
git commit -m "uploaded fixed sources 3"
git push origin master

ТОГДА

Я создал другой каталог за пределами источника, я перешел в этот каталог, затем я клонировал существующее репозиторий git, используя файл http: //../../.git, как указано на странице в github.

Как только он клонировал исходный код (у которого не было ничего, кроме readme.md), я скопировал все файлы из старого каталога в новый с помощью

cp -rf ../../* .

Затем я добавил еще раз, а затем зафиксировал и продвинул эти правки.

git add --all
git add .
git commit -m "uploaded fixed sources 4"
git push origin master

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

Daemondave
источник