优先考虑本地更改

  • 本文关键字: git git-merge epub epub3
  • 更新时间 :
  • 英文 :


我正在从一个网站上抓取页面,对它们进行处理,然后将它们编译成电子书。我对代码和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将撤消所需的效果,正如本答案下面的评论中所讨论的那样。

相关内容

  • 没有找到相关文章

最新更新