优先考虑本地更改
Prioritising Local Changes
我正在从网站上抓取页面,修改它们,然后将它们编译成电子书。我对代码和 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
分支中,解决出现的任何冲突。 ebook
最初创建为初始 web
.
的分支
场景:假设您开始时将 W0 作为 Web 服务器上的初始状态,然后在提交 E1 和 E2 中进行了本地更改。然后将 Web 服务器更新为 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
会取消预期的效果,如本答案下方的评论中所讨论的那样。
我正在从网站上抓取页面,修改它们,然后将它们编译成电子书。我对代码和 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
分支中,解决出现的任何冲突。 ebook
最初创建为初始 web
.
场景:假设您开始时将 W0 作为 Web 服务器上的初始状态,然后在提交 E1 和 E2 中进行了本地更改。然后将 Web 服务器更新为 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
会取消预期的效果,如本答案下方的评论中所讨论的那样。