我有一个丑陋的SCSS文件。我想将其拆分为多个其他文件,以便更轻松地使用。
如果我的文件是,
file.scss
我想完成类似的事情,
file.scss
file-sm.scss
file-md.scss
file-lg.scss
sm
,md
和lg
都将包含原始files.scss
的重要部分,因此我希望保留/复制其中的历史记录,以便将来更轻松开发和未来的开发人员。
如何将文件重构为多个新文件,并将历史记录保存或复制到新文件中?
答案 0 :(得分:3)
Git基于文件相似性内置重命名/复制检测。为确保启动,请首先对file.scss
的所有file-{sm,md,lg}.scss
执行file.scss
的纯文本复制并提交这些文件。然后从这些文件中删除不需要的部分,删除git log --follow --find-copies file-sm.scss
,然后再次提交。现在例如file-sm.scss
应显示file.scss
的历史记录,包括nodejs
的历史记录。
答案 1 :(得分:1)
您需要进行一次涉及旧文件和新文件的提交,以便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 用于在重构时保留历史记录-未来的开发人员将感谢您。