Сведения о вопросе

HEIGTH

22:23, 28th August, 2020

Теги

Как "unversion" файл в любом из svn и / или git

Просмотров: 489   Ответов: 15

Это происходит со мной постоянно. Я случайно версирую файл, я не хочу быть версионным (т. е. разработчик/машина конкретных конфигурационных файлов).

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

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

Если я решу никогда не фиксировать файл, у меня всегда будет проверка "dirty" - я несчастлив.

Является ли чистым способом "unversion" файл из контроля версий, что приведет к тому, что никто не будет несчастен?

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

Ответ: если бы я мог принять второй ответ, это было бы так . Он отвечает на мой вопрос относительно git-принятый ответ-о svn.



  Сведения об ответе

VCe znayu

00:21, 6th August, 2020

В Git, чтобы удалить его из дерева, но NOT из рабочего каталога, который я думаю, что это то, что вы хотите, вы можете использовать флаг --cached, то есть:

git rm --cached <filename>


  Сведения об ответе

lesha

08:41, 23rd August, 2020

SVN версия 1.5 поддерживает удаление / удаление файла из репозитория без потери локального файла

взято из http://subversion.tigris.org/svn_1.5_releasenotes.html

Новый-сохранить-опция сохраняет траекторию после удаления..

Удаление (remove) теперь использует параметр --keep-local, чтобы сохранить свои цели локально, поэтому пути не будут удалены, даже если они не изменяются.


  Сведения об ответе

LAST

20:38, 3rd August, 2020

Если вы случайно 'add' файл в svn & вы не зафиксировали его, вы можете вернуть этот файл & он удалит add.


  Сведения об ответе

park

23:39, 19th August, 2020

Даже не попробовав его...

В git, если ваши изменения не были переданы в другой репозиторий, вы должны иметь возможность git rm изменить порядок фиксации удаления, чтобы она была сразу после фиксации, в которой вы случайно добавили файлы-нарушители, а затем скомбинировать эти два фиксации вместе.

Конечно, это не поможет, если кто-то другой вытащил ваши изменения.


  Сведения об ответе

JUST___

00:49, 3rd August, 2020

Похоже, что вы уже добавили и зафиксировали файл в subversion (я предполагаю, что вы используете Subversion). Если это так, то есть только два способа удалить этот файл:

  1. Отметьте файл как удаленный и зафиксируйте его.
  2. Выполните svnadmin dump, отфильтруйте ревизию, в которой вы случайно зафиксировали файл, и выполните svnadmin load .

Поверь мне, на самом деле ты не хочешь делать номер 2. Это приведет к аннулированию всех рабочих копий репозитория. Лучше всего сделать номер 1, отметить файл как проигнорированный и извиниться.


  Сведения об ответе

qwerty101

16:21, 14th August, 2020

Посмотрите на svn:ignore и .gitignore - эти функции позволяют вам иметь дополнительные файлы в вашем чеке, которые игнорируются вашим RCS (при выполнении операции "status" или любой другой).

Для файлов конфигурации, специфичных для конкретной машины, хорошим вариантом является возврат файла с именем с дополнительным расширением ".sample", т. е. config.xml.sample . Отдельные разработчики могли бы сделать копию этого файла в config.xml и настроить его для своей системы. С помощью svn:ignore или .gitignore вы можете гарантировать, что неверсионный файл config.xml не будет постоянно отображаться как грязный.

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


  Сведения об ответе

lourence

03:19, 15th August, 2020

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

git filter-branch --index-filter 'git update-index --remove filename' HEAD

Затем я думаю, что вы должны совершить коммит и нажать-f, если он находится в удаленных ветвях (помните, что это может раздражать людей, если вы начнете изменять историю репозитория.. и если они уже вытянули из вас информацию раньше, то они все еще могут иметь это досье)


  Сведения об ответе

screen

19:37, 7th August, 2020

Чтобы удалить файл, уже находящийся в системе управления версиями:

git rm <filename>

и затем

git commit -m ...

Вы должны добавить каждый файл, который вы хотите игнорировать, в файл .gitignore. Кроме того, я всегда проверяю файл .gitignore в своем репозитории, поэтому, если кто-то проверяет код на своей машине, и файл генерируется снова, он не будет 'see' его как 'dirty'.

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

Если файл уже находится в главном репозитории (git) или на сервере (svn), я не думаю, что есть лучшее решение, чем просто удалить файл в другом коммите.


  Сведения об ответе

SKY

07:40, 5th August, 2020

Для SVN вы можете вернуть файлы, которые вы еще не зафиксировали. В TortoiseSVN вы просто щелкните правой кнопкой мыши файл в окне фиксации и выберите команду восстановить...

В командной строке используйте svn revert [file]

Не знаю насчет GIT, так как я никогда им не пользовался.


  Сведения об ответе

appple

21:06, 1st October, 2020

Два простых шага в SVN:
1. Добавьте этот каталог в свойство svn:ignore родительского каталога:


svn propedit svn:ignore .  

2. Удалить каталог:


svn rm mydir

3. Совершать

Обратите внимание , что когда другие разработчики делают обновление svn, этот каталог не будет удален. SVN просто разворачивает его вместо этого.


  Сведения об ответе

lourence

03:19, 28th August, 2020

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

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

В конце концов, это система контроля версий... ;)


  Сведения об ответе

baggs

23:21, 19th August, 2020

Вы можете исключить файлы из subversion с помощью параметра global-ignore
http://svnbook.red-bean.com/en/1.1/ch07.html#svn-ch-7-секта-1.3.2
подробности смотрите в документации


  Сведения об ответе

davran

11:30, 13th August, 2020

Я ЕСТЬ, Я выбираю, чтобы никогда не совершать этот файл, у меня всегда есть "dirty" кассе - я недоволен.

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


  Сведения об ответе

qwerty101

19:20, 29th August, 2020

С помощью этой команды можно отменить преобразование всех файлов в текущем каталоге. Бит sed переворачивает порядок, чтобы svn мог его обработать:

find . | sed '1!G;h;$!d'| awk '{print "svn rm --keep-local " $1}'

Как уже говорилось в других ответах, один файл неверсирован с этим:

svn rm --keep-local yourFileNameXXX


  Сведения об ответе

screen

07:01, 7th August, 2020

В Windows, если то, что вы ищете, это копирование папки в другое место и удаление ее из git, так что вы больше не видите значки, вы просто удаляете папку .git. Папка .git скрыта, поэтому вам нужно перейти в раздел Organization / Folder and Search Options, Display hidden Files option, под вашей главной папкой. Это должно было бы его разворотить.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться