Могу ли я зафиксировать файл с помощью git, но автоматически игнорировать его при выполнении git svn dcommit?
Сейчас я начинаю использовать 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 ответ
Да, ты можешь.
Как вы заметили, вы не можете gitignore
файлы, которые уже отслежены. Но то, что вы можете сделать, это сказать вашему индексу, что он должен делать вид, что для определенных файлов не существует никаких изменений:
git update-index --assume-unchanged <file>
Если вы хотите прекратить игнорировать изменения для этого файла (например, потому что вы внесли изменение в build.xml
что вы должны поделиться с другими членами команды), а затем используйте:
git update-index --no-assume-unchanged <file>
Предупреждение: если вы добавляете файл напрямую git add <file>
, это будет предполагать, что вы действительно имеете в виду, что вы хотите добавить этот файл, и --assume-unchanged
директива будет игнорироваться.