При работе с пользовательским интерфейсом моего проекта я тестирую его локально. Таким образом, я хочу, чтобы иметь возможность раскомментировать некоторые удаленные включения в голове HTML, немного поработать, а затем нажимать изменения без расколов, которые там просто позволяют быстрее протестировать его локально. Каков наилучший способ сделать это с помощью git?Git - воздержание от нажатия некоторых локальных изменений
ответ
Вы могли бы создать отдельную ветку с вашим master
, что только есть эти строки незакомментированных , например,
git checkout -b testing master
# edit foo/bar/baz.html
git commit -a -m "Enable local testing optimizations."
И затем оставьте эту ветку в покое. Вам редко приходилось прикоснуться к нему. Позже вы делаете какую-то работу вы хотите, чтобы проверить, так что вы проверить в вашей функции ...
# hack hack hack
git commit -m "Feature complete."
... и затем (временно) сливаются в ваших тестирования изменений.
git merge testing
Предполагая, что вы не изменяете заголовки, это редко вызывает конфликты и должно сливаться чисто. Вы закончите тестирование, а затем вы можете
git reset --hard HEAD^
выбросить слияние совершить, оставив свое дерево, где HEAD
указывает на ваш «функционален.» совершить.
Иногда вы можете переформировать ветку testing
против master
или переделать ее, чтобы иметь дело с любыми изменениями из этой части.
Другой вариант заключается в сохранении изменений просто в .patch
файле. Затем ...
# Feature complete!
# Apply testing code...
git apply testing.patch
# Test...
git apply -R testing.patch
# Remove testing code
Такая же идея, но обрабатывается отдельным файлом патча. Немного проще, возможно, позволяя немного меньше дисциплины, но также, возможно, немного рискованнее.
Вы также можете написать update
крючок (см githooks(5)), чтобы убедиться, что вы никогда не толкать изменение, которое включает в себя этот патч тестирования.
Отлично! Это именно то, что я искал! Большое вам спасибо: D – Chetan
Не добавляйте файл в фиксацию. Добавьте & только файлы с изменениями, которые вы хотите нажать. Например ...
Uncomment remote includes in foo.html
edit file1.html
edit file2.html
git add file1.html
git add file2.html
git commit -m "added feature"
git push origin master
Изменения, внесенные в foo.html, не будут нажаты.
Если вы хотите, чтобы сдуть ваши локальные изменения в файл, использование git checkout
...
git checkout path\to\foo.html
Как насчет использования накладных на стороне клиента для автоматизации раскола при последующей проверке и комментирования предварительной фиксации?
Если комментарии, которые вы меняете, не всегда одинаковы, это может быть не лучшее решение.
Информация о крюках Git, см. Section 7.3 of the Pro Git book.
Одна вещь, которую вы могли бы сделать, просто никогда не совершает это изменение. Всегда добавляйте изменения (по крайней мере, в этом файле) с помощью 'git add -p' или не выполняйте эту строку перед фиксацией. – MatrixFrog
Есть ли более чистые, более удобные для использования решения? Что-то вроде именованной записи stash, которую я мог бы просто удалить перед каждой фиксацией и применить после каждой фиксации, будет идеальным ... – Chetan