Git удалить файл из отслеживания: Как в GIT удалить файл из отслеживания? — Хабр Q&A
Удаление папки из отслеживания git
мне нужно исключить папку (имя загрузки) из отслеживания. Я пытался бежать
git rm -r --cached wordpress/wp-content/uploads
и после этого я добавил путь .gitignore
/wordpress/wp-content/uploads
но когда я побежал git status
они отображаются как удаленные. Если я попытаюсь зафиксировать изменения, файлы будут удалены, а не только удалены из отслеживания.
что я делаю не так?
Я также пробовал
git update-index --assume-unchanged <file>
но это, кажется, отследить только файлы. Но мне нужно удалить целый папка (включая подпапки) из отслеживания.
210
автор: ROMANIA_engineer
5 ответов
я столкнулся с этим вопросом, когда гуглил для «Git удалить папку из отслеживания». Вопрос операции привел меня к ответу. Я резюмирую его здесь для будущих поколений.
вопрос
Как удалить папку из репозитория git, не удаляя ее с локального компьютера (т. е. среды разработки)?
ответ
Шаг 1. Добавьте путь к папке в корневой каталог РЕПО .gitignore
файл.
path_to_your_folder/
Шаг 2. Удалите папку из локального отслеживания git, но сохраните ее на диске.
git rm -r --cached path_to_your_folder/
Шаг 3. Толкать свои изменения в Git РЕПО.
папка будет считаться «удаленной» с точки зрения Git (т. е. они находятся в прошлой истории, но не в последней фиксации, и люди, вытаскивающие из этого РЕПО, удалят файлы из своих деревьев), но оставайтесь в своем рабочем каталоге, потому что вы использовали --cached
.
463
автор: Tod Birdsall
это работает для меня:
git rm -r --cached --ignore-unmatch folder_name
, без этой опции git выйдет с ошибкой в первом файле не в индексе.
из документации git:
еще одна полезная вещь, которую вы можете сделать, это сохранить файл в рабочем дереве, но удалить его из промежуточной области. Другими словами, вы можете сохранить файл на жестком диске, но больше не отслеживать его. Это особенно полезно, если вы забыли что-то добавить в свой .файл gitignore и случайно поставил его, как большой файл журнала или кучу .скомпилированный файл. Для этого используйте —cached вариант:
$ git rm --cached readme.txt
Так, может быть, не включать «- r»?
2
автор: user3750325
шаг 2.5: зафиксируйте изменения:
>git commit
Если вы нажимаете, не делая этого сначала, он ничего не делает!
Игнорирование отслеживания файлов, которые уже есть в удаленном репозитории / Песочница / Хабр
Если внести файл в .gitignore, то он не будет отслеживаться гитом лишь в том случае, если этого файла нет в удаленном репозитории.
Но если в репозитории уже есть (к примеру конфиги сайта), а мы не хотим, чтобы наши локальные конфиги отслеживались, то можно выполнить команду:git update-index --assume-unchanged application/config/database.php
либо всю папкуgit update-index --assume-unchanged application/config/*
Чтобы перестать игнорировать изменения, нужно использовать параметр —no-assume-unchanged.git update-index --no-assume-unchanged application/config/*
Update: Если конфиг изменили
Если всё же кто-то изменил структуру файла конфига, то git не даст сделать pull, т.к. все-равно будет считать, что файл конфига с нашими паролями отличается от того, что прийдет с командой pull.
Чтобы все-таки получить новые изменения, но и свои пароли сохранить в конфиге нужно сделать следующее:
1. Сохранить текущие конфиги (с нашими локальными паролями) в отдельную папку например.
2. Отменить игнорирование изменений (параметр --no-assume-unchanged
).git update-index --no-assume-unchanged application/config/database.php
3. На данном шаге команда git status
покажет, что файл application/config/database.php был изменен, но еще не проиндексирован. Именно эти изменения и мешают нам забрать командой git pull
новые изменения. Учитывая, что на шаге 1 мы сохранили наши конфиги в отдельную папку — мы можем сейчас отменить эти изменения.git checkout application/config/database.php
4. Сейчас git status
покажет, что изменений нет (nothing to commit, working tree clean
). Забираем новые изменения:git pull
5. Опционально: Если мы привыкли работать в отдельной ветке (не в master), то переходим в эту ветку (например: dev-branch) для последующей работы:git checkout dev-branch
и вливаем в ветку dev-branch новые изменения из ветки master (куда мы их уже получили командой git pull
):git merge master
6. Изменяем теперь наши обновленные конфиги, возвращая туда наши локальные пароли и все то, что мы желаем там видеть, но не хотим это хранить в репозитории (для этого мы сохранили все в шаге 1). После чего команда git status
естественно покажет, что конфиги изменены, но не проиндексированы.
7. И только теперь мы можем снова включить игнорирование (--assume-unchanged
):git update-index --assume-unchanged application/config/database.php
После чего git status
покажет, что все чисто (nothing to commit, working tree clean
) и мы сможем снова работать, делать коммиты и переключаться между ветками.
P.S. Разумеется автор не рекомендует хранить конфиги с паролями в репозитории. Это лишь наглядный пример.
Модератору: Данный 2do list писал ранее для себя в жж (https://pashakiz.livejournal.com/183468.html)
Если для хабра это важно — могу скрыть свою пост в жж под ключ.
Как заставить Git «забыть» о файле, который был отслежен, но теперь находится.гитюдного?
Я думаю, что, возможно, git не может полностью забыть о файле из-за его концепции (раздел «снимки, а не различия»).
эта проблема отсутствует, например, при использовании CVS. Хранит информацию CVS, как список файловое изменения. Информация для CVS представляет собой набор файлов и изменений, внесенных в каждый файл с течением времени.
но в Git каждый раз, когда вы совершаете или сохраняете состояние вашего проекта, он в основном делает снимок того, что все ваши файлы выглядеть в этот момент и сохраняет ссылку на этот снимок. Таким образом, если вы добавили файл один раз, он всегда будет присутствовать в этом снимке.
эти 2 статьи были полезны для меня:
git предположим-без изменений vs skip-worktree
и как игнорировать изменения в отслеживаемых файлах с Git
основываясь на этом, я делаю следующее, если файл уже отслеживается:
git update-index --skip-worktree <file>
от в этот момент все локальные изменения в этом файле будут проигнорированы и не перейдут на удаленный. Если файл изменен на удаленном, конфликт произойдет, когда git pull
. Тайник не сработает. Чтобы разрешить его,скопируйте содержимое файла в безопасное место и выполните следующие действия:
git update-index --no-skip-worktree <file>
git stash
git pull
содержимое файла будет заменено удаленным содержимым. Вставьте изменения из безопасного места в файл и выполните еще раз:
git update-index --skip-worktree <file>
если все, кто работает с проектом, будет выполнять git update-index --skip-worktree <file>
, проблемы с pull
должен отсутствовать. Это решение подходит для файлов конфигураций, когда каждый разработчик имеет свою собственную конфигурацию проекта.
это не очень удобно делать каждый раз, когда файл был изменен на удаленном, но может защитить его от перезаписи удаленным контентом.
Как удалить отслеживание Git из проекта?
Я хочу удалить отслеживание Git из каталога проекта. Каков правильный метод для этого? Могу ли я выполнить команду оболочки, такую как
rm -rf .git
из моего каталога проектов или есть способ сделать это как команда Git?
я использовал этот проект, чтобы узнать Git и понять, что я сделал некоторые ошибки в начале проекта с перемещенными, переименованными и удаленными файлами. Я хотел бы удалить все отслеживание Git и начать все заново с git init
.
467
автор: Peter Mortensen
9 ответов
все данные, используемые Git для информации, хранятся в .git/
, поэтому удаление должно работать нормально. Конечно, убедитесь, что ваша рабочая копия находится именно в том состоянии, в котором вы ее хотите, потому что все остальное будет потеряно. .git
папка скрыта, поэтому убедитесь, что вы включите .
оттуда, вы можете запустить git init
для создания нового репозитория.
rm -rf .git
должно хватить. Это уничтожит всю информацию, связанную с Git.
288
автор: Kevin Ballard
это не умный выбор, чтобы переместить все .git*
вручную, особенно когда эти .git
файлы скрыты в подпапках, как и мое условие: когда я установил Skeleton Zend 2 от composer+git, существует довольно много .git
файлы, созданные в папках и подпапках.
пробовал rm -rf .git
на моей оболочке GitHub, но оболочка не может распознать параметр -rf
of Remove-Item.
www.montanaflynn.me вводит следующее раковины команда удалить все .git
файлы, рекурсивно! Это действительно работает!
find . | grep "\.git/" | xargs rm -rf
в дополнение к ниже шаги, вы можете также удалить .файла.gitignore
рассмотрим удаление .gitignore файл, если вы хотите удалить любые следы Git в вашем проекте.
* * подумайте об уходе .файл gitignore, если вы когда-нибудь захотите реинкорпорировать Git в проект.
некоторые фреймворки могут автоматически производить .файл gitignore, поэтому вы можете оставить он.
откройте терминал и перейдите в каталог вашего проекта, т. е. — cd path_to_your_project
.
выполните следующую команду:
rm -rf .git*
это удалит отслеживание Git и метаданные из вашего проекта. Если вы хотите сохранить метаданные (например .gitignore and .gitkeep), вы можете удалить только отслеживание, запустив rm -rf .git
.
С помощью командной строки
на rmdir
или rd
команда не будет удалять / удалять любые скрытые файлы или папки в указанном каталоге, поэтому вы должны использовать del
команда, чтобы убедиться, что все файлы удалены из .
открыть командную строку
выберите
Start
затемRun
или ударить и r в то же время.тип
cmd
и
перейдите в каталог проекта, т. е. —
cd path_to_your_project
выполните следующие команды
del /F /S /Q /A .git
rmdir .git
первая команда удаляет все файлы и папки внутри на . Второй удаляет .git
саму папку.
нет командной строки
Откройте проводник и перейдите в проект
Показывать скрытые файлы и папки — см. в этой статье для визуального руководства
в меню Вид на панели инструментов, выберите
Options
на найти
Hidden files and Folders
подFiles and Folders
список и выберитеShow hidden files and folders
закройте меню опций, и вы должны увидеть все скрытые папки и файлы, включая .
удалить
Удалить.gitignore
file * * (см. Примечание в верхней части этого ответа)
43
автор: Matthew Cliatt
6
автор: Martin v. Löwis
Я работаю со средой Linux. Я удалил все файлы и папки git рекурсивным способом:
rm -rf .git
rm -rf .gitkeep
3
автор: Nitya Kumar
пользователь командной строки Windows (cmd):
вы можете удалить ‘.git ‘ рекурсивно внутри исходной папки проекта с помощью одной команды строки.
FOR /F "tokens=*" %G IN ('DIR /B /AD /S *.git*') DO RMDIR /S /Q "%G"
0
автор: SridharKritha
в среде Windows вы можете удалить отслеживание Git из каталога проекта, просто введя ниже.
rd .git /S/Q
0
автор: Rukshan Dangalla
самый простой способ решить эту проблему-использовать командную строку.
Введите эту команду rm -R .git/
Затем Введите… Или rm -rf .git/
Нажмите Enter…
0
автор: Emeka Augustine
Проблема удаления файла из отслеживания с помощью Git — git
У меня странная проблема с распаковкой файлов.
У меня есть отслеживаемый файл index.css
. Затем я добавляю его к .gitignore
. Затем я выполняю следующее И получаю вывод:
$ git rm --cached build/development/css/index.css
rm 'build/development/css/index.css'
Запуск git status
дает следующее:
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: build/development/css/index.css
При попытке зафиксировать изменения я получаю следующую ошибку:
Error:On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
during executing git commit --only -F C:\Users\dtv\AppData\Local\Temp\git-commit-msg-7154374096157077481.txt -- build/development/css/index.css
Если я попытаюсь зафиксировать изменения в index.css
вместе с изменениями outher, фиксация пройдет без ошибок. Но изменения в файле все равно обнаруживаются. Что я делаю не так?
git
Поделиться
Источник
Max Koretskyi aka Wizard
24 сентября 2014 в 13:07
3 Ответа
1
Проблема заключается в том, что --only
вариант для git commit
. От git-commit
странице :
Сделайте коммит только из путей, указанных в командной строке,
игнорируя любое содержание, которое было поставлено до сих пор.
Он пытается зафиксировать этот файл, игнорируя предыдущую команду git rm --cached
из before.
Поделиться
Jean Waghetti
24 сентября 2014 в 14:10
1
- по моим наблюдениям, если мы используем эту команду
git rm --cached filename
, она игнорирует только это время. если вы добавляете этот файл в .gitignore, то git полностью игнорирует(не отслеживает) этот файл. После добавления имени файла или пути к .gitignore мы должны выполнить следующие команды, чтобы распаковать эти файлы в следующий раз
Сначала зафиксируйте все оставшиеся изменения кода, а затем выполните следующую команду
git rm -r --cached .
— > это удаляет все измененные файлы из индекса (промежуточная область)git add .
git commit -m ".gitignore is now working"
-> для фиксации изменений
Поделиться
Anjaneyulu Battula
24 сентября 2014 в 14:21
1
А вы пробовали:
git update-index —предположим-неизмененный path_to_file
Это пометит файл в индексе, и git перестанет отслеживать файл для любых изменений. В сочетании с добавлением этого файла в .gitignore он перестанет показывать его как измененный при использовании
git статус
Вы также можете проверить документы на наличие update-index
Поделиться
Ivan Kovachev
24 сентября 2014 в 15:28
Похожие вопросы:
Убедитесь, что git удаленную ветку отслеживания остается в синхронизации с удаленным
У меня есть РЕПО с источником и восходящим пультом дистанционного управления. Обычно в моем рабочем процессе Я вытягиваю изменения из своего восходящего потока, а затем толкаю их к своему источнику…
Git-автоматическая перемотка вперед всех ветвей отслеживания на вытягивание
Я настроил отслеживание ветвей с параметром —track , и когда я делаю git pull на master , он извлекает все ветви в origin/branchname , но не сливается с локальными ветвями отслеживания. Это…
как восстановить статус отслеживания из git rm —cached .?
Я только что изменил 10 файлов в своем проекте и хочу зафиксировать все эти 10 файлов. То, что я сделал-это: git add -A Затем я обнаружил, что эта команда добавляет много неотслеженных файлов,…
Удаление файла из истории Git без удаления самого файла
Я использовал инструкции GitHub для очистки файла из истории фиксации , но он удалил соответствующий файл из моей системы. Это было удивительно для меня, потому что сама команда git rm —cached…
Может ли git fetch и git pull настроить отношение отслеживания?
git push -u может настроить связь отслеживания между восходящей ветвью и локальной ветвью отслеживания, см. Почему в этом примере используется `git push` без ` — u`, а в другом примере-нет? Может ли…
Концепция отслеживания git и постановки git
Когда вы изменяете файл в своем рабочем каталоге, git говорит вам использовать git add для этапа. Когда вы добавляете новый файл в свой рабочий каталог, git говорит вам использовать git add для…
Git: что такое ветвь отслеживания?
Может ли кто-нибудь объяснить tracking branch, как это относится к git? Вот определение из git-scm.com : А ‘tracking branch’ в Git-это местный филиал, подключенный к удаленному компьютеру ветка….
GIT удаление FETCH ссылок из удаленного отслеживания
Я новичок в использовании GIT в eclipse я играл с инструментом, и я сделал несколько толчков и слияний с сервером, однако я вижу в опции удаленного отслеживания , когда я делаю выборку , я получаю…
Удалить из git файлов отслеживания в соответствии с новым gitignore
Я развертываю приложение Rails на VPS. Я использую свой РЕПО git на bitbucket для синхронизации файлов на моем рабочем и домашнем компьютерах, поэтому он разбивается на ненужные в производстве…
Как удалить дубликат отслеживания файлов в Git
Один из моих файлов отслеживается дважды после того, как я изменил имя своей папки. Git теперь отслеживает следующие два файла, которые на самом деле являются одним и тем же файлом….
Как удалить файл из отслеживания git? — git
У меня есть файл config-dev.php , который будет использоваться в качестве конфигурации версии dev.
Теперь другой разработчик хочет внести свои собственные изменения в этот файл.
Когда он совершает коммит, этот файл записывается, и мой config-dev.php перезаписывается файлом от моего коллеги.
этот файл находится в .gitignore , но он все еще не работает.
Как удалить этот файл из индекса git, чтобы каждый мог иметь свою собственную конфигурацию-dev.php?
Я попробовал git rm --cached config-dev.php
, но это все еще не работает. Должна ли эта команда быть выполнена всеми сотрудниками? или мне следует синхронизировать после git rm??
git
github
Поделиться
Источник
MilMike
06 ноября 2015 в 10:51
1 Ответ
5
удалите файл из отслеживания:
git rm --cached config-dev.php && git commit -m "config-dev.php"
добавьте его к
.gitignore
echo config-dev.php >> .gitignore git add .gitignore git commit -m "adding config-dev.php to .gitignore"
Публикации этих изменений
git push
На вашем компьютере коллеги получите новую конфигурацию
git pull
Сделано
Когда ваш другой разработчик получает ошибки на pull
из-за изменений в ее config-dev.php
, она должна скопировать свои локальные изменения и затем переименовать файл обратно после нажатия:
cp config-dev.php my-config-dev.php
git checkout config-dev.php
git pull
mv my-config-dev.php config-dev.php
Поделиться
eckes
06 ноября 2015 в 11:03
Похожие вопросы:
удаление файлов из git
Я знаю, что могу удалить файл из отслеживания и удалить его с помощью git rm <file> или если я хочу сохранить файл и просто удалить его из отслеживания, я могу использовать git rm —cached…
Удалить файл по указанному пути из git отслеживания
Возможный Дубликат : git-удаление файла из системы управления версиями (но не из источника ) У меня есть.DS_Store файл, который находится в пути project/app/assets/javascripts. Как удалить из этого…
Как удалить файл » .project » из Git?
По ошибке я совершил .project файл в git из Eclipse. Поскольку это имя файла начинается с точки, оно не отображается в git файлах в Eclipse. Как удалить его из git с помощью Eclipse?
Как удалить отслеживание Git из проекта?
Я хочу удалить отслеживание Git из каталога проекта. Каков правильный метод для этого? Могу ли я выполнить команду shell, такую как rm -rf .git из моего каталога проектов или есть способ сделать это…
GIT — Как удалить локальный файл из отслеживания, но оставить копию на удаленном репозитории?
У меня есть следующий сценарий, в моем приложении Rails, но сценарий может быть принят в любом другом приложении, где вы не хотите отправлять свои учетные данные разработки в публичный репозиторий,…
Удалить файл из Git-путаница
Я пытаюсь научиться использовать Git, и я вроде как получаю основы вытягивания и нажатия и т. д., Но я запутался в удалениях. Это то, что я сделал (с fortrabbit и laravel): Создал проект Laravel…
GIT удаление FETCH ссылок из удаленного отслеживания
Я новичок в использовании GIT в eclipse я играл с инструментом, и я сделал несколько толчков и слияний с сервером, однако я вижу в опции удаленного отслеживания , когда я делаю выборку , я получаю…
Удалить из git файлов отслеживания в соответствии с новым gitignore
Я развертываю приложение Rails на VPS. Я использую свой РЕПО git на bitbucket для синхронизации файлов на моем рабочем и домашнем компьютерах, поэтому он разбивается на ненужные в производстве…
Как удалить дубликат отслеживания файлов в Git
Один из моих файлов отслеживается дважды после того, как я изменил имя своей папки. Git теперь отслеживает следующие два файла, которые на самом деле являются одним и тем же файлом….
Удалить старый зафиксированный файл из git
Я пытаюсь изменить свой РЕПО с CloudForge на Github. Я уже сделал необходимые изменения. $git remote set-url origin GITHUB_REPO_URL Однако, когда я попытался перейти к новому источнику в Github,…
Список команд для работы с git
Это краткая инструкция по работе с git, я здесь собрал список команд, чтобы не забывать, да и чтобы была возможность их быстро найти.
Все команды будут постоянно обновляться. Если вы найдете ошибки, пишите, буду исправлять.
0. Добавление README файла и .gitignore:
touch README.md
touch .gitignore
Инициалиализация git
git init
Добавление отдельных файлов для отслеживания, например README файла и .gitignore:
git add README.md
git add .gitignore
Добавление всех файлов в git для отслеживания:
git add .
Первый коммит:
git commit -m «first commit» [-m -сообщение; «first commit» — описание того, что было сделано]
Проверка статуса изменения файлов в git
git status
Просмотр истории коммитов в git
git log
gitk
Публиция файлов на удаленном сервере:
git push -u repos branch [repos — название репозитория, branch — это ветка]
Получение изменений на удаленном сервере
git fetch repos [repos — имя удал. сервера]
Клонирование удаленого репозитория git
git clone git://github.com/schacon/ticgit.git
Удалние файлов из отслеживаемых в git:
git rm file_name [file_name — название файла]
Удаление файлов из индекса git
git rm —cached path_to_file [path_to_file — путь к файлу или папке]
Добавление нового удаленного репозитория:
git remote add short_rep_name https://github.com/path_to_rep [short_rep_name — название репозитория; https://github.com/path_to_rep — ссылка к перзиторию]
Получение информации об удаленном сервере
git remote show server_name [server_name — имя удал. сервера]
Получение всех удаленных серверов git(имеется ввиду серверов, с которыми вы работаете.)
git remote
git remote -v [-v — доп. параметр, показывает ссылки на удаленный сервер]
Переименовать удаленный реп.
git remote rename old_name new_name [old_name — старое название; new_name — новое название]
Удалить удаленный реп.
git remote rm rep_name [rep_name — название реп. который следует удалить]
Создание новой ветки в git
git branch branch_name [branch_name — имя ветки]
Переход на нужную ветку в git
git checkout branch_name [branch_name — имя ветки]
Создание новой ветки в git и моментальное переключение на нее
git checkout -b branch_name [branch_name — имя ветки]
Слияние(merge) веток в git
git merge branch_name [branch_name — имя ветки]
Удаление ветки в git
git branch -d branch_name [branch_name — имя ветки]
Изменение последнего коммита в git [все три команды вместе дают один коммит — второй коммит заменяет результат первого.]
git commit -m ‘initial commit’
git add forgotten_file
git commit —amend
Отмена индексации файла в git
git reset HEAD file_name [file_name — название файла]
Отмена изменений файла в git
git checkout file_name [file_name — название файла]
cd /path/to/my/repo
git remote add origin … — путь
git push -u origin —all # pushes up the repo and its refs for the first time
git push -u origin —tags # pushes up any tags
Git удаление удаленных файлов из отслеживания
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира
.
Удалите файл из git с помощью инструмента графического интерфейса пользователя Git-Extension
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
.
Удаление файлов из хранилища больших файлов Git
Документы GitHub
Все продукты
- GitHub.com
Начиная
- Быстрый старт
- Настроить Git
- Создать репо
- Форк репо
- Быть социальным
- Изучение GitHub
- Продукты GitHub
- Изучение выпусков раннего доступа с предварительным просмотром функций
- Типы аккаунтов GitHub
- Часто задаваемые вопросы об изменениях в планах GitHub
- GitHub CLI
- GitHub Desktop
- GitHub для мобильных устройств
- Разрешения на доступ на GitHub
- Глоссарий GitHub
- Шпаргалка по Git
- Быстрый старт
.
github — удалить файл из запроса на извлечение Git
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.