2015-06-25 3 views
1

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

Давайте положить реальный пример:

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

Я читал о припрятать, но, насколько я понимаю, это в основном означает:

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

Этот процесс должен выполняться каждый раз, когда вы совершаете или обновляете.

Хммм ... Я имею в виду, они серьезны? В SVN вы просто совершаете (подразумеваете push) то, что хотите совершить, и оставляете все остальное в одиночку. Законченный. Если вы обновите свою рабочую копию, измененный файл, конечно, будет объединен. Если конфликт при слиянии (происходит в 1 из 10000 случаев), вы должны быть уведомлены и должны его решить. После того, как вы решили конфликт в своем локальном обновлении, работа снова прекратится. Готово.

Таким образом, похоже, что SVN позволяет вам решать, что принадлежит общему репозиторию, тогда как git требует, чтобы все репозитории всегда находились в одном и том же состоянии или после вашего фиксации/нажатия. Если вам нужны разные данные, вы должны использовать сложные работы все время.

Это правда или мне что-то не хватает?

+0

Ну, вы также можете использовать ветви. Создайте ветку для своих изменений, удалите строки кода, которые вы хотите удалить для своего тестирования, и вы также можете нажать эти ветви, пока не закончите свой материал. После того, как вы закончите, вы добавите строки кода, который вы удалили ранее, а затем снова слейте обратно в master. Простой рабочий процесс. Ах, прежде чем я забуду. Не пытайтесь сравнивать SVN и git. Это невозможно. – ckruczek

+0

Не решает мою проблему. Я хочу сохранить изменения в течение нескольких месяцев, не нажимая его, но я хочу, чтобы у меня были другие изменения. – LazyCoder

+0

Почему не сравнивать системы управления версиями? Инструменты, которые мы используем каждый день для решения проблемы сотрудничества, больше ничего. – LazyCoder

ответ

2

Если я неправильно понял, что вы просите, просто воздержитесь от выполнения git add файлов, которые вы не хотите совершать (так же, как вы воздерживались бы от их совершения в SVN). В качестве альтернативы сделайте git update-index --assume-unchanged <file>, и ваш файл не будет добавлен, когда вы выполните git add --all.

+0

Эти файлы уже находятся в репо. Я просто хочу постоянно сохранять локальные изменения внутри этих файлов. – LazyCoder

+0

Да, это нормально; 'git add' предназначен не только для добавления файлов в репо, но и для добавления в индекс _latest_ версии файла, что и происходит. Поэтому не вызывать 'git add' в файле в git так же, как не передавать файл в SVN. Я знаю, что полностью противостоят интуитивному; git не велик, когда дело доходит до интуитивного. –

+1

И если вы действительно будете хранить свой локальный файл в течение нескольких месяцев, я бы определенно предложил перейти к 'git update-index -assume-unchanged ' route. Это делает его фактически _easier_, чем SVN, так как вам не нужно забывать воздерживаться от добавления (фиксации) файла каждый раз. –

Смежные вопросы