2016-09-05 2 views
0

Мне нравится применять некоторые изменения к моему проекту, которые помогают с моим эксцентричным рабочим процессом (например, я делаю некоторые изменения в структуре проекта, удаляю некоторые чрезмерные строки ведения журнала и т. Д.), Но я не хочу, чтобы изменения отображались в моей истории git, когда Я создаю ветку для слияния. Усилия вручную переписать историю слишком много для количества раз, когда я должен это делать.git применить патч и игнорировать историю?

Есть ли способ применить файл diff (например, произведенный от format-diff), так что файлы редактируются на диске, но история и индекс не замечают различий?

Единственный хак я могу придумать, чтобы применить не-мерзавец .diff файлы с patch и добавить файлы в git update-index --assume-unchanged foo/bar, но есть лучше - больше «мерзавец» - путь?

+1

Внесите изменения в другую ветку. Филиалы в основном бесплатны, но если вы просто хотите попробовать их временно, используйте отдельную головку, которая снижает даже стоимость самой ветви (проверьте ветвь снова и любые фиксации, которые вы сделали, используя отсоединенный HEAD дрейф и получите gc ' в течение 30 дней). Если вам нужно делать это часто, просто держите ссылку на фиксацию с этими изменениями в ней, чтобы вы могли отделить + вишневый выбор + тест + вычеркивание до отказа в любое время, когда вы хотите протестировать этот путь. – torek

+0

Привет, Торак, вот что я пробовал. Я ищу лучший способ, который не требует такого ручного управления ветвями, не выходя из git. Я перешел на скрипт, который устанавливает/unsets неизменный статус и применяет патч, но он не идеален. – fommil

ответ

-1

Усилия вручную переписать историю слишком много для числа раз. Я должен это сделать.

Но это не должно быть никакой работой вообще. С вашей крошечной дисциплиной с вашей стороны это фактически может быть полуавтоматизировано.

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

pick fdbd12a Mininmal main.c 
pick 21e3d6f hello world with arg support 
pick a62ebac ========= DEBUG: print argc ======== 
pick 3160605 Use EXIT_SUCCESS 
pick 0ec0ac6 constify message 

(см. this answer для получения более подробного объяснения).

Для удаления неконечное совершает я могу в редакторе VI фильтра с "!grep -v =======" и они ушли, без умственных усилий требуется . Таким образом, вам нужно лишь немного дисциплинировать и пометить сообщения о фиксации очевидным образом.

При таком подходе вы можете продолжать работать в одной ветке со всеми вашими отладочными/окончательными исключениями, включенными при разработке. Филиал может, кстати, быть переустановлен без каких-либо дополнительных проблем.


Без учета совершает может вызвать конфликты слияния, в этом случае I recommend с помощью KDiff3 для их разрешения.

+0

Извините, это не отвечает на вопрос, который я задал. Вы слышали фразу «рассказывать бабушке, как сосать яйца»? – fommil

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