【问题标题】:Use git to extend changes使用 git 扩展更改
【发布时间】:2020-06-07 20:07:51
【问题描述】:

我有一组文件(file1..fileN),它们都有相同的结构,但是这个结构每次都可以不同(json, xml, text...是未定义的,但总是相同的类型信息) 我需要对所有这些进行更改,所以如果我在 xml 中添加一个字段,它必须在所有这些中。当我在纯文本中添加新行时也是如此。 我正在考虑为此目的使用 git,我可以在其中一个文件中进行更改,然后将此文件合并到其他文件中。

文件1:

{name: "Harry", 
 lastname: "Potter"}

改变:

{name: "Harry", 
 lastname: "Potter",
 age: 12}

文件2:

{name: "Hermion", 
 lastname: "Granger"}

bing 处理后的文件 2:

{name: "Hermion", 
 lastname: "Granger",
 age: 12}

我知道您可以使用 json 解析器来执行此操作,但由于信息可以是纯文本或其他不同类型的信息,在这种情况下它是无效的,我需要一种方法来在结构相同时进行更改不基于信息编码。

有可能吗? 我该怎么做?

【问题讨论】:

  • Git 根本不是这个合适的工具。您需要为每种格式编写一些内容。 (或者使用单一格式并编写一个工具将其转换为您需要的所有其他格式。)

标签: git


【解决方案1】:

我想出了一个办法:

你可以得到一个 git diff 并在以后应用它:

https://stackoverflow.com/a/1191449/4670625

另外,你可以获取之前的 git 提交的 id:

https://stackoverflow.com/a/32324539/4670625

当文件不同或在不同分支时可以使用:

Git: How to diff two different files in different branches?

这里有一个关于 diff 和 patch 的很好的解释:

https://www.pair.com/support/kb/paircloud-diff-and-patch/

总而言之,您将获得前 2 次提交的 id,然后在它们之间进行差异并稍后应用它。

编辑:

您可以使用以下方法获得差异:

git diff file1 file1Modified > changes.patch

然后你使用它来应用它:

patch file2 changes.patch

【讨论】:

  • 如果它周围的上下文像您的示例中那样发生变化,则该补丁将不会应用(根本,或不干净)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 2016-03-31
  • 2015-10-04
  • 1970-01-01
相关资源
最近更新 更多