我正在从网站上抓取页面,将它们弄糊涂,然后将它们编译成电子书。我正在将Git用于代码和HTML内容。
我必须对某些页面进行手动编辑,并且通常会在上游对其进行更新。这给我留下了一个问题,即在网站更新时如何保留我的本地编辑。
例如,我下载了页面A的v1,删除了一个无效的“”,然后提交了更改;稍后,我下载页面A的v2,该页面具有新内容,但仍带有“”字样。我想将新内容合并到页面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
最后,将保留最后的本地编辑,但第一次丢失。我知道我在做一些愚蠢的事情,但是...
答案 0 :(得分:0)
我将维护一个仅跟踪原始网页的分支,我们将其称为web
。每次下载更新时,请将其提交到web
分支。然后,您需要一个ebook
分支来进行更改。更新web
分支后,将其合并到您的ebook
分支中,以解决出现的所有冲突。最初将ebook
创建为初始web
的分支。
方案:假设您从W0开始作为Web服务器上的初始状态,然后在提交E1和E2中进行了本地更改。然后,Web服务器更新为W1,您将其合并到ebook
中以获得E3。
这将为您提供如下所示的历史记录:
W0 -------- W1 (web branch)
\ \
E1 - E2 --- E3 (ebook branch)
当您将下一个更新下载到Web W2时,您将获得此提交图,并假设由于W1还需要使用E4作为其他重新格式化的更改:
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
的合并会撤消预期的效果,如该答案下方的注释中所述。