Git diff显示提交中CSS块的变化

时间:2017-08-21 12:55:43

标签: css git

我这里有一块CSS,是一个较大文件的一部分:

.card-container {
  font-family: "Open Sans", sans-serif;
  display: flex;
  justify-content: flex-start;
  flex-wrap: wrap;
  display: inline-block;
  width: 12.92em;
  height: auto;
  margin-right: 2em;
  margin-bottom: 4em;
  border-radius: 0.5em;
  background-color: #fff;
  box-shadow: 6px 6px 6px rgba(0,0,0,0.3);
  position: relative;
  padding-bottom: 5vh;
}

我想仅显示此特定代码块中最后2-4次提交的更改。

git diff HEAD HEAD ^ ./assets/css/app.css

让我查看整个文件

我还想展示CSS的每个版本,而不只是两个。所以HEAD,HEAD ^,HEAD ^^等。

输出应该显示4个不同的代码块,理想情况下是每个提交的日期和消息。

我需要能够使用“.card-container”关注该代码块。“padding-bottom:5vh”;其中..是通配符,两个字符串定义代码块的开头和结尾。

2 个答案:

答案 0 :(得分:1)

显示添加或删除与<regex>匹配的行的提交:

git log -G'<regex>'

显示最后<n>个条目:

git log -<n>

显示在<path>引入文件更改的提交:

git log <path>

回到您的需求:

  

我需要能够专注于该代码块   “.card-container”..“padding-bottom:5vh”;哪里..是通配符,和   这两个字符串定义了代码块的开始和结束。

git log -4 -G'\.card-container {.*?}' ./assets/css/app.css

这应记录在.card-container中引入./assets/css/app.css规则更改的最后四个提交中的所有提交。

答案 1 :(得分:1)

您可以尝试以下单行:

git show HEAD~2:path/to/your/file.css | sed -n '/^.card-container \{$/,/^\}$/p'

命令

git show HEAD~2:path/to/your/file.css

将从两个提交前(HEAD~2)返回有问题的整个CSS文件的内容。然后,我们可以将此输出传递到sed,以仅提取您在问题中描述的CSS块。

使用这种方法,您必须为每个先前的提交运行上面的一行。对于四次提交,这不是一项非常大量的工作。