我正在从一个网站上抓取页面,对它们进行处理,然后将它们编译成电子书。我对代码和HTML内容都使用Git。
我必须对一些页面进行手动编辑,它们经常在上游更新。这给我留下了一个问题,即如何在网站更新时保留我的本地编辑。
例如,我下载了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
最后,保留了最后一个本地编辑,但丢失了第一个。我知道我在做一些愚蠢的事情,但是。。。
我将维护一个仅跟踪原始网页的分支,称之为web
。每次下载更新时,请将其提交到web
分支。然后您需要一个ebook
分支来进行更改。更新web
分支后,将其合并到ebook
分支中,以解决出现的任何冲突。CCD_ 6最初被创建为初始CCD_。
场景:假设您在web服务器上以W0作为初始状态开始,然后在提交E1和E2中进行本地更改。然后,web服务器被更新为W1,您将其合并到ebook
中以获得E3。
这将给你一个看起来像这样的历史:
W0 -------- W1 (web branch)
E1 - E2 --- E3 (ebook branch)
当你下载下一个更新到网络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
将撤消所需的效果,正如本答案下面的评论中所讨论的那样。