Можно ли зафиксировать файл с помощью git, но автоматически игнорировать его при выполнении git svn dcommit? - PullRequest
3 голосов
/ 08 марта 2012

Сейчас я начинаю применять Git для моего личного рабочего процесса в офисе SVN, поэтому git-svn - это инструмент, на который я буду сильно полагаться. Одна проблема, с которой я столкнулся, которую я не знаю, как решить, это как игнорировать в одном направлении.

Конкретный вариант использования для меня заключается в том, что наш файл сборки ant ссылается на такие вещи, как svn и svnversion. Очевидно, что если я использую git-svn, я не планирую использовать ни один из них. Я заменил их в своем локальном build.xml эквивалентами git, которые работают просто отлично.

Однако я явно не хочу фиксировать это изменение в git svn dcommit. Я хочу сохранить это изменение локально и зафиксировать его локально, чтобы не потерять его, но я не хочу, чтобы оно когда-либо было возвращено к основному репозиторию SVN, потому что оно в значительной степени нарушит использование SVN всей компанией. , если я сделаю. Аналогичный случай с использованием только SVN представлен в этом вопросе .

Есть ли какое-либо решение, которое позволило бы мне фиксировать build.xml локально, продолжать принимать изменения build.xml из SVN (в котором есть много вещей, не связанных также с SVN), и никогда не фиксировать его обратно с помощью dcommit без прыжков через обручи каждый раз, когда я пытаюсь совершить коммит?

1 Ответ

5 голосов
/ 08 марта 2012

Да, вы можете.

Как вы заметили, вы не можете gitignore файлы, которые уже отслежены. Но то, что вы можете сделать, это сказать вашему индексу, что он должен делать вид, что для определенных файлов не существует никаких изменений:

git update-index --assume-unchanged <file>

Если вы хотите прекратить игнорировать изменения для этого файла (например, потому что вы внесли изменение в build.xml, которым вам нужно поделиться с другими членами команды), используйте:

git update-index --no-assume-unchanged <file>

Предупреждение: если вы добавите файл напрямую с помощью git add <file>, это будет означать, что вы действительно хотите добавить этот файл, и директива --assume-unchanged будет проигнорирована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...