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"

7
Это случилось со мной и с именем файла. Использование git mv -f newFileCase oldFileCase исправит репозиторий
— Брайан ДиКаса

У меня была проблема с osx, к сожалению, хотя это файловая система * nux, она обычно настроена без учета регистра, что может вызвать проблемы с инструментами * nux, такими как git.
— Pellet

Спасибо, вы спасли мне день
— Женя

если у вас есть ожидающие изменения в файлах с «тем же именем», но с другим случаем, это также может вызвать ту же проблему
— Маурисио Грасиа Гутьеррес

Как можно узнать, какой oldFileCase ожидает git?
— diemo

24

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

git add -f path/to/file.ext

Большое спасибо! Это мне действительно помогло. По какой-то причине мой файл был исключен (не был, .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, и он сработал.


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

3

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

git add folder
git commit

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

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


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

3

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

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


2

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


2

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


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]


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 и именам каталогов, он также не будет добавлять файлы. Было бы нечего делать. Как только я наберу имена файлов с точным регистром, они будут добавлены и перечислены в списке изменений, которые должны быть зафиксированы, как я и предполагал.


0

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


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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.