Я добавил файл с именем "file1.txt"
в репозиторий Git. После этого я зафиксировал его, добавил пару каталогов под названием dir1
и dir2
и зафиксировал их в репозитории Git.
Теперь в текущем репозитории есть "файл1.txt"
, dir1
и dir2
. Как я могу удалить "файл1.txt"
, не затрагивая другие, такие как dir1
и dir2
?
Используйте git rm
:
git rm file1.txt
git commit -m "remove file1.txt"
Но если вы хотите удалить файл только из репозитория Git и не удалять его из файловой системы, используйте:
git rm --cached file1.txt
git commit -m "remove file1.txt"
А чтобы перенести изменения в удаленное хранилище
git push origin branch_name
`ГИТ РМ file.txt удаляет файл из репозитория, но также удаляет его из локальной файловой системы.
Чтобы удалить файл из репозитория и не удалить его из локального использования файловой системы:<БР>
ГИТ РМ --кэшированные file.txt
Ниже точное положение, где я использовать Git, чтобы сохранить контроль версия для моего бизнеса'веб-сайт ы, но в "Микки" по каталогу в папке tmp поделиться собственным контентом с разработчиком САПР. Когда ему понадобились огромные файлы, я сделал собственный, каталог несвязанные и ftpd есть файлы для него, чтобы принести через браузер. Забываешь, что я сделал это, я выполнил добавить-козел
на сайте'базовый каталог С. Впоследствии, статус ГИТ показали новые файлы, нуждающиеся в фиксации. Теперь мне нужно, чтобы удалить их из Git'ы для отслеживания и контроля версий...
Ниже пример вывода из того, что только что случилось со мной, где я случайно удалил файл .003. К счастью, я не'т волнует, что случилось с локальной копией
.003`, но некоторые другие в настоящее время измененные файлы обновления, я просто на сайт и была бы эпичная были удалены из локальной файловой системы! "в локальной файловой системы" = живой сайт (не большая практика, но это реальность).
в
[~/www]$ git rm shop/mickey/mtt_flange_SCN.7z.003
error: 'shop/mickey/mtt_flange_SCN.7z.003' has local modifications
(use --cached to keep the file, or -f to force removal)
[~/www]$ git rm -f shop/mickey/mtt_flange_SCN.7z.003
rm 'shop/mickey/mtt_flange_SCN.7z.003'
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: shop/mickey/mtt_flange_SCN.7z.001
# modified: shop/mickey/mtt_flange_SCN.7z.002
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git rm --cached shop/mickey/mtt_flange_SCN.7z.002
rm 'shop/mickey/mtt_flange_SCN.7z.002'
[~/www]$ ls shop/mickey/mtt_flange_S*
shop/mickey/mtt_flange_SCN.7z.001 shop/mickey/mtt_flange_SCN.7z.002
[~/www]$
[~/www]$
[~/www]$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: shop/mickey/mtt_flange_SCN.7z.002
# deleted: shop/mickey/mtt_flange_SCN.7z.003
#
# Changed but not updated:
# modified: shop/mickey/mtt_flange_SCN.7z.001
[~/www]$
Обновление: этот ответ становится оживленным движением, так что я думал, что я'd не говоря уже о моем другой мерзавец ответ разделяет пару замечательных ресурсов: в этом разделе имеет рисунок, который поможет понять, Git для меня. В "и про ГИТ" и книга онлайн и мне очень помогает.
Во-первых, если вы используете ГИТ РМ
, особенно для нескольких файлов, рассмотрю любые подстановочные будут решены с помощью консоли, а не команда git
.
git rm -- *.anExtension
git commit -m "remove multiple files"
Но, если ваш файл уже есть на GitHub, вы можете (с июля 2013)]2 напрямую удалить его из веб-интерфейса!
просто просмотреть любой файл в вашем хранилище, нажмите на значок корзины в верхней, и совершить удаление как и любой другой веб-редактирование.
Потом "ГИТ тянуть
" на ваш локальный репозиторий, и что будет удалить файл слишком локально.
Что делает этот ответ (Пятерочка) как удалить файл из репозитория Git?
(Не говоря уже о том, что файл на GitHub ** в "Мои ГИТ РЕПО и")
(фиксация будет отражать удаление этого файла):
> и просто так, он ушел.
за помощь с этими функциями, обязательно прочитайте наши статьи справки о создании, перемещение, переименовать и удалить файлы.
Примечание: поскольку это система контроля версий, как Git всегда поддержит, если нужно восстановить файл позже.
Последнее предложение означает, что удаленный файл все еще является частью истории, и вы можете восстановить ее достаточно легко (но не через веб-интерфейс GitHub):
Посмотреть фильм "восстановить удаленный файл в репозиторий Git и".
Это единственный вариант, который работал для меня.
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch *.sql'
Примечание: Замените *.SQL с вашим именем файла или тип файла. Будьте очень осторожны, потому что это будет проходить через каждый коммит и разрывать этот тип файла.
Редактировать: обратите внимание - после этой команды вы не сможете толкать или тянуть - вы увидите отклонения от 'Нерассказанная история' вы можете использовать 'git толчок-силой -у происхождения мастер' толкать или тянуть
В более общем случае git help
поможет хотя бы с простыми вопросами вроде этого:
zhasper@berens:/media/Kindle/documents$ git help
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path] [-p|--paginate|--no-pager] [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE] [--help] COMMAND [ARGS]
The most commonly used git commands are:
add Add file contents to the index
:
rm Remove files from the working tree and from the index
Если вы хотите удалить файл из репозитория, но оставить его в файловой системе (будет прекращено):
bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"
Если вы хотите удалить файл из репозитория и из файловой системы, то есть два варианта:
Быкова@gitserver и:~/ТЭМП> ГИТ РМ file1.txt Быкова@gitserver и:~/темп> коммит в git'е -м "и удалить файл file1.тхт"и 2. Если файл изменений помещены в индекс:
Быкова@gitserver и:~/темп> ГИТ РМ -Ф file1.txt Быкова@gitserver и:~/темп> коммит в git'е -м "и удалить файл file1.тхт"и
`ГИТ РМ будет только удалить файл, на этой ветке теперь, но он остается в истории и Git будет помнить его.
Правильный способ сделать это с фильтр-ветку в Git, как уже упоминалось здесь. Его будут переписывать каждый коммит в истории ветви, чтобы удалить этот файл.
Но, даже после этого, Git может это помню, потому что там могут быть ссылки на него в reflog, пультов, теги и все такое.
Если вы хотите полностью уничтожить ее в один шаг, я рекомендую вам использовать Git и забыть-клякса
Это легко, просто сделать ГИТ забыть-клякса file1.txt
.
Это позволит удалить все ссылки, сделать фильтр-ветку в Git, и, наконец, запустите команду git сборщик мусора ГИТ ГХ
, чтобы полностью избавиться от этого файла в репозитории.
Примечание: Если вы хотите удалить файл только из использовать git ниже:
git rm --cached file1.txt
Если вы хотите также удалить с жесткого диска:
git rm file1.txt
Если вы хотите удалить папку(папка может содержать несколько файлов) таким образом, вы должны удалить, используя рекурсивную команду, как показано ниже:
git rm -r foldername
Если вы хотите удалить папку внутри другой папки
git rm -r parentFolder/childFolder
Затем вы можете commit
и толкать
, как обычно. Однако, если вы хотите восстановить удаленные папки, вы можете следовать этому: восстановить удаленные файлы из Git можно.
от док:
ГИТ РМ [-ф | --Сила] [-н] [р] [--кэшированные] [--игнорировать-разъединить] [--тихий] [ -- ] в <Файл>...
параметры
в
<Файл>...
файлы для удаления. Fileglobs (например,*.C) может быть дано, чтобы удалить все найденные файлы. Если вы хотите, чтобы Git, чтобы расширить символов Глоб файл, вы может потребоваться оболочки-защитить их. Ведущий имя каталога (напр. dir для удалить команду dir/file1 и реж/файл2) может быть дано, чтобы удалить все файлы в каталог и рекурсивно по всем каталогам, но это требует опцию-R, чтобы быть явно заданы.
-Ф
- сила
переопределить вверх-к-дата регистрации.
-Н
-- "сухой ход"
на самом деле не удалить любой файл(ы). Вместо этого, просто показать, если они есть в индексе, а в противном случае были бы удалены командой.
-Р
допускает рекурсивное удаление, когда ведущий название каталогу.
--
этот параметр может быть использован для разделения параметров командной строки из списка файлов (полезно, когда имена файлов могут быть ошибочно приняты за параметры командной строки).
--кэшированные
и GT; используйте этот параметр, чтобы отменить добавление и удаление дорожек только из индекса. Рабочие файлы дерево, будь то с изменениями или без них, оставят в покое. --игнорировать-разъединить
выход с нулевым статусом, даже если файлы не совпадают.
-Щ
--тихо
ГИТ РМ нормально выводит одну строку (в форме команды RM) для каждого файл удален. Эта опция подавляет вывод.
В моем случае я пытался удалить файл на GitHub после нескольких коммитов, но и сохранить на компьютер
git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master
и позже этот файл был проигнорирован
Если у вас есть приложение GitHub для Windows, вы можете удалить файл за 5 простых шагов:
ГИТ РМ -Р файл-название
или, удалить файлы только с локального репозитория, а из файловой системы
ГИТ РМ --кэшированные файлы-название
коммит в git'е -м "и ненужные файлы или некоторые встроенные комментарии и"
ГИТ пуш
Я перепробовала много вариантов и никто не явился на работу (я выиграл't список различных проблем). Я решил, что работал, был простым и интуитивно понятным (для меня) было:
После того как вы удалили файл из репозитория с помощью Git РМ` вы можете использовать БФГ РЕПО-чистильщик полностью и легко стереть файл из истории РЕПО.
У меня есть obj и Bin файлы, что случайно сделал это в репо, что я Дон'т хотим, загрязняешь мой 'измененные файлы' список
After я заметил, что они отправились в отдаленные, я проигнорировал их, добавляя это.гитюдного`
/*/obj
/*/bin
Проблема в том, что уже в пульте, и когда они изменяются, они выскакивают как изменилось и загрязняют изменен список файлов.
Чтобы не видеть их, нужно удалить всю папку с удаленного репозитория.
В командной строке:
C:\repos\MyRepo
)C:\repos\MyRepo\SSIS
) РМ -Р-Ф в obj
Я получил тревожное сообщение, что файлы 13 изменен 315222 deletions
Затем, потому что я ничего'т хотим, чтобы взглянуть вверх линию УМК, я пошел в Visual Sstudio и сделал синхронизацию, чтобы применить его к удаленному
Если вам нужно удалить файлы определенного расширения (например, скомпилированные файлы) вы можете сделать следующее, Чтобы удалить их все сразу:
git remove -f *.pyc
В случае если вы Don't файл в ваш локальный репозиторий, но в Git РЕПО, то просто откройте файл в Git РЕПО через веб-интерфейс и найти кнопку "Удалить" в правом углу интерфейса. Нажать здесь, чтобы просмотреть параметр Удалить интерфейс