2010-12-30 4 views
1

При работе с пользовательским интерфейсом моего проекта я тестирую его локально. Таким образом, я хочу, чтобы иметь возможность раскомментировать некоторые удаленные включения в голове HTML, немного поработать, а затем нажимать изменения без расколов, которые там просто позволяют быстрее протестировать его локально. Каков наилучший способ сделать это с помощью git?Git - воздержание от нажатия некоторых локальных изменений

+0

Одна вещь, которую вы могли бы сделать, просто никогда не совершает это изменение. Всегда добавляйте изменения (по крайней мере, в этом файле) с помощью 'git add -p' или не выполняйте эту строку перед фиксацией. – MatrixFrog

+0

Есть ли более чистые, более удобные для использования решения? Что-то вроде именованной записи stash, которую я мог бы просто удалить перед каждой фиксацией и применить после каждой фиксации, будет идеальным ... – Chetan

ответ

3

Вы могли бы создать отдельную ветку с вашим 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)), чтобы убедиться, что вы никогда не толкать изменение, которое включает в себя этот патч тестирования.

+0

Отлично! Это именно то, что я искал! Большое вам спасибо: D – Chetan

0

Не добавляйте файл в фиксацию. Добавьте & только файлы с изменениями, которые вы хотите нажать. Например ...

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 
0

Как насчет использования накладных на стороне клиента для автоматизации раскола при последующей проверке и комментирования предварительной фиксации?

Если комментарии, которые вы меняете, не всегда одинаковы, это может быть не лучшее решение.

Информация о крюках Git, см. Section 7.3 of the Pro Git book.