2017-01-11 11 views
-1

Мы использовали svn в течение многих лет и недавно перешли на Git. Мы использовали списки изменений в svn для определенной цели. Они похожи на глобальные игнорирования, но не совсем то же самое. Глобальное игнорирование говорит svn не добавлять файлы, которые соответствуют шаблону, но если файл уже добавлен в управление версиями, игнорирование ничего не сделает. Это то же самое в Гит. Git игнорировать файлы говорят Git игнорировать файлы, соответствующие данному шаблону, но только, если они еще не добавлены в контроль версий.Git - Список изменений (svn) Эквивалент

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

Git имеет концепцию закладок, которая снова отличается. Мы можем хранить дельта в тайнике в местном репо. Они могут свободно применяться, подталкиваться или выскакивать, что решает одну часть проблемы. Однако, когда мы совершаем фиксацию (через некоторый инструмент gui - tortoise git, gitkraken, VS), эти файлы все равно будут отображаться в списке файлов, которые Git хочет совершить. Я не хочу, чтобы они появлялись, потому что я, скорее всего, совершу ошибку и сделаю это случайно.

Есть ли способ получить список изменений, например, функциональность в Git?

Примечание: Я действительно не хочу, чтобы это делалось через командную строку. Я использую комбинацию Visual Studio, Git Kraken и Tortoise Git. Мне нравится система Gui. Я не хочу запускать команду в командной строке, которая автоматически фиксирует мои изменения, избегая файлов, которые я указываю.

+0

Ваше использование списка изменений на самом деле не является стандартной функцией SVN iirc. Специальный список изменений (что-то вроде ignore-on-commit?) Является особенностью TortoiseSVN, и он не работает во всех клиентах SVN (я помню, что какой-то клиент SVN выполнял одно и то же соглашение) –

+0

@Melbourne Developer, пожалуйста, отметьте ответ который поможет вам решить проблему. И это поможет другим, у кого есть подобные вопросы. –

ответ

0

Статья в ответ, что @Marina - отвечал MSFT привел меня к ответу: https://www.visualstudio.com/en-us/docs/git/tutorial/ignore-files

Это останавливает отслеживание файлов уже совершенных в Git:

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

Резюме, отслеживание файлов уже совершенных в Git:

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

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

1

В противном случае, если вы хотите проигнорировать файл, который уже добавлен в элемент управления версиями, вам необходимо использовать команду git rm --cached filename, чтобы помочь вам достичь своей цели, чтобы ее можно было игнорировать (вы можете сослаться на ignore files in vs). Таким образом, шаги, как:

  1. Добавление файла в .gitignore
  2. В командной строке, используйте git rm --cached filename
  3. Отредактируйте файл, так что изменения не могут быть отслежены

Команда git update-index --assume-unchanged filename является tepportarily игнорирует файл. Когда вы переключаетесь на другую ветку, сначала нужно git update-index --no-assume-unchanged filename. Это означает, что он работает только на короткое время, и файл на самом деле управляется версией git. Если это соответствует вашим потребностям, вы можете использовать его вместо этого.

Но если вам больше не нужно выполнять управление версиями для файла, необходим первый метод.

+0

Это не выглядело совершенно правильно, поэтому я сделал кое-какие работы по статье, которую вы опубликовали. Он рекомендует это: git update-index - без изменений . Почему бы вам не использовать эту команду? Это хорошо работает для меня. –

+0

Я обновляю разницу в ответе на ваш запрос. –