Git add не добавляет файлы

Обновлено: 05.07.2024

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

  • Рабочий каталог: локальный репозиторий, где вы будете выполнять всю работу, такую как создание, редактирование, удаление и организация файлов проекта.
  • Промежуточная область: отслеживаемый локальный репозиторий, где вы будете перечислять изменения, внесенные в рабочий каталог.
  • Репозиторий: удаленный репозиторий, в котором Git постоянно хранит изменения в виде различных версий проекта.

Эта статья полностью посвящена работе с локальным репозиторием и отслеживаемыми / не отслеживаемыми изменениями. Мы будем охватывать следующие команды git:

  • Git add
  • Git status
  • Git remove

Прежде чем использовать вышеперечисленные команды, мы должны создать некоторые файлы в проекте репозитория git.

После этого репозиторий git будет выглядеть следующим образом:

Добавление и отслеживание изменений в Git

Git Status

Git Status — это еще одна обязательная команда, которая возвращает информацию о текущем состоянии репозитория. Например, список измененных файлов, список отслеживаемых изменений на промежуточном этапе, неотслеживаемые изменения на локальном уровне и информация о текущей ветви и коммитах.

  • Промежуточная область: Git имеет концепцию промежуточной области, где отслеживаются все обновления/изменения. Здесь хранятся изменения, которые вы хотели бы зафиксировать. Изменения могут представлять собой одну строку, файлы или части файлов.
  • Неотслеживаемые изменения: Изменения/файлы в локальном каталоге, которые не перемещаются на промежуточную стадию, называются неотслеживаемыми изменениями.
  • Отслеживаемые изменения: Изменения / файлы на промежуточном этапе называются отслеживаемыми изменениями.

Git Status

1) Теперь откройте командную строку и перейдите в репозиторий git

 введите git status в командной строке.

2) Просто введите git status в командной строке.

branch master: говорит о том, что рабочее дерево является главной ветвью.

no commits yet: дает информацию о коммитах, на данный момент их еще нет.

Untracked files: говорит о том, что Git видит файлы, но еще не начал отслеживать изменения и отметил их красным цветом.

Status messages: дает соответствующие инструкции для промежуточных / нестагнирующих файлов.

Git add

Команда git add добавляет изменение в рабочий каталог в промежуточную область. Она сообщает Git, что в проекте есть несколько обновлений, которые пользователь хочет зафиксировать. Здесь следует отметить, что git add не влияет на удаленный репозиторий, так как изменения фактически не записываются до тех пор, пока вы не выполните git commit.

1) Давайте просто начнем с добавления одного файла к заявке. Чтобы использовать команду git add, просто введите git add filename. Слово filename здесь относится к имени файла, который вы редактировали, например CustomerData_IND.txt. Кроме того, используйте команду git status, чтобы увидеть, что git теперь может рассказать нам о состоянии репозитория.

git add

Changes to be comitted: здесь отображается информация о отслеживаемых файлах, хранящихся на промежуточном этапе. Это тот самый, который мы добавили с помощью команды git add.

Untracked files: здесь отображается информация о неотслеживаемых файлах. Это те самые, которые добавили в проект раньше, но до сих пор не подтолкнули к постановке.

Команда Git Remove

Чтобы практиковать эту команду, давайте попробуем удалить тот же CustomerData_IND.txt, который был добавлен ранее.

git rm

Untracked files: CustomerData_IND.txt файл вернулся к списку игнорируемых изменения.

Добавление различных измененных файлов в промежуточную среду

Выше мы просто добавили один файл в staging. Что делать, если там будет несколько файлов для добавления. Это может быть легко достигнуто с помощью git add <file> <file>.

Чтобы добавить несколько файлов, введите

git add CustomerData_IND.txt CustomerData_UK.txt

git add <file> <file>.

Удаление различных файлов из промежуточного состояния

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

Чтобы удалить несколько файлов, введите

git rm - -cached <file> <file>.

Вывод: упомянутые два файла в команде теперь удаляются из промежуточного состояния и возвращаются в неотслеживаемый список.

Добавим все измененные файлы в промежуточную версию

Выше мы добавили несколько файлов в staging, но что делать, если там будет много файлов для добавления? Это может быть легко достигнуто с помощью git add *.

Чтобы добавить все измененные файлы, введите git add *

git add *

Все измененные файлы теперь перемещаются в промежуточный режим.

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

В последнем уроке мы познакомились с командой Git fetch и Read more

В одной из последних статей мы узнали о команде Git Read more

Мы уже знаем, как вносить изменения в локальное хранилище и Read more

Команда git push при выполнении перемещает изменения, внесенные пользователем на Read more

"Клонирование" означает создание идентичных особей естественным или искусственным путем. Клонирование Read more

Сегодня мы узнаем, как скопировать чужой репозиторий в наш аккаунт Read more

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

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

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

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

С моей стороны это была какая-то глупая ошибка, я использую черепаховый git, и когда вы фиксируете какие-либо изменения, есть флажок , он не был отмечен на моей стороне, и у меня есть некоторые новые файлы только локально, так что будьте осторожны с этим! @Jacksonkr, об этом решении уже сообщалось в ответе gaoagong ниже.

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

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

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

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

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

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

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

Убедитесь, что вы не изменили регистр имени папки в 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"
Это случилось со мной и с именем файла. Использование git mv -f newFileCase oldFileCase исправит репозиторий У меня была проблема с osx, к сожалению, хотя это файловая система * nux, она обычно настроена без учета регистра, что может вызвать проблемы с инструментами * nux, такими как git. если у вас есть ожидающие изменения в файлах с «тем же именем», но с другим случаем, это также может вызвать ту же проблему

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

Большое спасибо! Это мне действительно помогло. По какой-то причине мой файл был исключен (не был, .gitignore поэтому не знаю почему!), И это устранило мою проблему!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Я создал учетную запись на GitHub-я новичок в ней - и я столкнулся с проблемой добавления файлов. Я добавил readme.txt . Кроме того, у меня есть 3 других файла PHP и папка, включая изображения.

как добавить файлы и папки? Я попробовал с git pull , потому что git push origin -u master показали мне ошибку.

вы можете добавлять файлы с помощью git add , например git add README , git add <folder>/* , или даже git add *

затем использовать git commit -m "<Message>" для фиксации файлов

наконец-то git push -u origin master для нажимаем файлы.

когда вы делаете изменения run git status который дает вам список измененных файлов, добавьте их с помощью git add * для всего или вы можете указать каждый файл по отдельности, то git commit -m <message> и наконец, git push -u origin master

пример-скажем, вы создали файл README, запустив git status дает вам

выполнить git add README , файлы расположены для фиксации. Затем запустите git status опять же, он должен дать вам-файлы были добавлены и готовы к фиксации.

затем запустите git commit -m 'Added README'

наконец, git push -u origin master нажать на удаленную ветку master для репозитория origin .

файлы были успешно перемещены в удаленный репозиторий.

под управлением git pull origin master чтобы убедиться, что вы впитали любые изменения вверх по течению

если вы не хотите объединять восходящие изменения с локальным репозиторием, запустите git fetch чтобы получить изменения, а затем git merge для слияния изменений. git pull это просто комбинация fetch и merge .

для пользователей Linux и MacOS:

отметим, что с начала декабря 2012 года, вы можете создать новые файлы непосредственно из GitHub:

Create new File

ProTip™: вы можете предварительно заполнить поле filename, используя только URL.
Набрав ?filename=yournewfile.txt в конце URL будет предварительно заполнить поле Имя файла с именем yournewfile.txt .

d

вам нужно проверить репозиторий на локальном компьютере. Затем вы можете изменить эту папку на локальном компьютере.

эта команда выделит все файлы в репо.

это подтолкнет все изменения в вашей главной ветви (которая, я полагаю, является той, которую вы используете) к удаленному источнику репозитория (в данном случае github)

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

если вы хотите добавить папку в существующий РЕПО ..затем добавьте папку в локальный код проекта

после этого

"или, еще лучше, просто "перетащите" папку в свой репозиторий, открытый в браузере git.

откройте свой репозиторий на веб-портале, вы увидите список всех ваших файлов. Если вы только что создали РЕПО и инициировали его с помощью README,вы увидите только список README.

откройте папку, которую вы хотите загрузить. сопротивление и падение на список в браузере. Смотрите изображение здесь."

Для добавления файлов в локальное хранилище в Git используется несколько команд:

  • git add - добавление файлов в стадию ожидания;
  • git commit - добавление файлов в локальное хранилище;
  • git rm - отмена действий.

Получение статуса

Для отслеживания статуса всех файлов необходимо использовать команду git status .

Это одна из важнейших команд, так как система отслеживает изменения, а с ее помощью мы узнаем о результатах этого отслеживания. Если мы наберем git status в терминале, то система должна выдать следующее:

Добавление файлов

Перед добавлением файлов в локальное хранилище их необходимо подготовить. Для этого используется команда git add .

Через команду можно указать какие файлы необходимо добавить. Можно добавить всё, прописав git add . или git add -A , а также можно добавлять лишь некоторые файлы. Для их выбора можно воспользоваться различными командами:


Коммит

При коммите данных их необходимо комментировать, чтобы в дальнейшем каждое изменение в проекте было с комментарием (описанием действий).

Отмена действий

Если вы добавили файлы в стадию ожидания, но передумали и не хотите добавлять некоторые из них, то вам пригодиться команда git rm -cached "file" .

В ней укажите какой файл необходимо «выкинуть» из стадии ожидания на коммит.

Игнорирование файлов

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

  • Логи;
  • Артефакты систем сборки;
  • Папки node_modules в проектах node.js;
  • Папки, созданные IDE, например, Netbeans или IntelliJ;
  • Разнообразные заметки разработчика.

Работает функция .gitignore очень просто:

  • Создаем вручную файл под названием .gitignore и сохраняем его в директорию проекта.
  • Внутри файла перечисляем названия файлов/папок, которые нужно игнорировать, каждое с новой строки.
  • Файл .gitignore добавляем, коммитим и отправляем на сервер, как любой другой файл в проекте. Пример исключения перечисленных выше файлов выглядит так:

Слэш обозначает игнорирование директорий и всего их содержимого, звездочка – шаблон.

Задание к уроку

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

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Читайте также: