我这里有一块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”;其中..是通配符,两个字符串定义代码块的开头和结尾。
答案 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块。
使用这种方法,您必须为每个先前的提交运行上面的一行。对于四次提交,这不是一项非常大量的工作。