Вопрос по git-svn, git, gitignore – Как навсегда предотвратить фиксацию определенной части файла в git?

3

Я клонировал удаленный SVN-репозиторий с помощью git-svn. Я изменил файл pom.xml в этом клонированном репо таким образом, что код компилируется. Эта установка является эксклюзивной для меня. Таким образом, я не хочу отсылать изменения обратно на удаленный репозиторий.

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

Я смотрел на этовопрос и этоодин, но они для довольно временных изменений.

Обновление: я также знаю о возможностях .gitignore, но это будет означать полное исключение файла.

Может быть, вам следует разбить этот xml-файл на user_pom.xml, содержащий ваши эксклюзивные биты? Похоже, что члены вашей команды, если таковые имеются, будут иметь ту же проблему. В качестве альтернативы вы можете отследить файл pom.default.xml, содержащий неисключительные данные, и заставить git игнорировать настроенный вами файл pom.xml? mlatu
Невозможно игнорировать только части файла. CharlesB

Ваш Ответ

2   ответа
2

То, что вы спрашиваете, невозможно, я не вижу "частичное" часть. Я знаю, что вы можете зафиксировать только часть файлов, но вы не можете игнорировать некоторую часть файла. Вам нужно будет использовать трюк с обновлением индекса, чтобы избежать его в статусе & quot; и вам нужно будет хранить этот файл каждый раз, когда вы будете перебазировать / объединять с удаленного компьютера, а затем распаковать вашу модификацию и игнорировать вашу модификацию с помощью update-index. Я не знаю, можете ли вы создать псевдоним git для последовательности команд git, чтобы с помощью одной команды вы могли выполнить все эти 3 команды, чтобы избежать хлопот

используйте файл .gitignore и не передавайте его также в удаленное хранилище:Игнорировать сам файл .gitignore

в вашем .gitignore, вы должны иметь

 .gitignore
 path/to/pom.xml

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

Он хочет игнорировать только части файла
1

Начальная точка: Реализация пятна / очистки для этого фильтра:

git config --global filter.versionUpdate.smudge 'sed "s/<version>14.5.0<\/version>/<version>14.5.FEATURE-15<\/version>/"'
git config --global filter.versionUpdate.clean 'sed "s/<version>FEATURE-15<\/version>/<version>14.5.0<\/version>/"'

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

Проблема: все еще необходимо выяснить, как найти отфильтрованные файлы обратно. Это не так очевидно в рабочем каталоге.

Smudge clean filter

Похожие вопросы