我有一个 SCSS 文件,很丑陋。我想将其拆分为多个文件,以便更容易处理。
如果我的文件是这样的,
file.scss
我希望最终的结论是这样的:
file.scss
file-sm.scss
file-md.scss
file-lg.scss
sm
、md
和lg
将会保留files.scss
中的大部分内容,因此我希望在未来的开发和开发人员方便性方面能够保留/复制它们的历史记录。
我该如何将一个文件重构为多个新文件,并将历史记录保留或复制到新文件中?
我有一个 SCSS 文件,很丑陋。我想将其拆分为多个文件,以便更容易处理。
如果我的文件是这样的,
file.scss
我希望最终的结论是这样的:
file.scss
file-sm.scss
file-md.scss
file-lg.scss
sm
、md
和lg
将会保留files.scss
中的大部分内容,因此我希望在未来的开发和开发人员方便性方面能够保留/复制它们的历史记录。
我该如何将一个文件重构为多个新文件,并将历史记录保留或复制到新文件中?
Git内置了基于文件相似性的重命名/复制检测功能。为了确保它可以起作用,首先将file.scss
普通复制到所有file-{sm,md,lg}.scss
文件中,并提交这些文件。然后从这些文件中删除不需要的部分、删除file.scss
,再次提交。现在,例如git log --follow --find-copies file-sm.scss
应该显示包括file.scss
在内的file-sm.scss
的历史记录。
为了让 git 在未来将它们关联起来,您需要进行一个包含旧文件和新文件的提交。
复制原始文件,但现在先不要更改新文件:
cp file.scss file-sm.scss
cp file.scss file-md.scss
cp file.scss file-lg.scss
对原始内容进行轻微的临时更改,以便将其与新的更改一起提交:
echo "// refactoring: split the file" >> file.scss
git add .
git commit -m "Refactor: splitting up file.scss"
现在,当你使用--follow
和-C1
标志时,你可以查看旧文件的历史记录:
git log --follow file-lg.scss
git blame -C1 file-lg.scss
清理 "// 重构 .." 注释并继续进行重构。
+1 保留历史记录,未来的开发者会感谢你进行重构。