Расстановка приоритетов локальных изменений - PullRequest
0 голосов
/ 22 ноября 2018

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

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

Например, я загружаю v1 на странице A, удаляю недействительное "" и фиксирую свои изменения;позже я загружаю версию 2 страницы A, которая имеет новый контент, но все еще содержит функции "".Я хочу объединить новый контент с моей копией страницы А., но также применить свои локальные изменения.

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

Я экспериментировал со стратегиями слияния, перебазированием и другими подходами безрезультатно.Чего мне не хватает?

РЕДАКТИРОВАТЬ:

Чтобы прояснить мою проблему:

git init
wget -O page.html https://example.com/
git add page.html
git commit -a -m "w0"
git checkout -b ebook
sed -i -e 's/http:/https:/' page.html
git commit -a -m "e1"
git checkout master
git merge ebook
wget -O - https://example.com/ | sed -e 's/may/may not/' > page.html
git commit -a -m w1
git checkout ebook
git merge master

В конце последнее локальное редактирование сохраняется, но первое теряется.Я знаю, что делаю глупости, но ...

1 Ответ

0 голосов
/ 22 ноября 2018

Я бы поддерживал ветку, которая отслеживает только оригинальные веб-страницы, назовем ее web.Каждый раз, когда вы загружаете обновление, отправляйте его в ветку web.Тогда вам нужна ветка ebook для ваших изменений.После обновления ветки web объедините ее с веткой ebook, разрешив возникшие конфликты.ebook изначально создается как ответвление от начального web.

Сценарий: Предположим, вы начали с W0 в качестве начального состояния на веб-сервере, затем вы внесли локальные изменения в коммиты E1 и E2,Затем веб-сервер был обновлен до W1, который вы объединяете в ebook, чтобы получить E3.

Это даст вам историю, которая выглядит следующим образом:

W0 -------- W1    (web branch)
  \           \
   E1 - E2 --- E3   (ebook branch)

Когда вы загружаетеВ следующем обновлении для Web, W2, вы получите этот график фиксации, при условии, что у вас также есть E4 в качестве дополнительных изменений переформатирования, необходимых из-за W1:

W0 -------- W1 -------- W2    (web branch)
  \           \           \
   E1 - E2 --- E3 - E4 --- E5   (ebook branch)

Когда вы объединяете W2 с E4, чтобы получить E5, Gitследует применять только изменения между W1 и W2 к E4, которые должны делать то, что вы хотите.

Примечание: этот процесс только когда-либо сливается с web в ebook, никогда с ebook в web,Слияние с ebook обратно в web отменит желаемый эффект, как описано в комментариях ниже к этому ответу.

...