自从我从事创造性编码以来,困扰我的一件事就是管理我用来创建图像和动画(或其他任何东西)的代码。当然,标准的源代码控制管理在很大程度上发挥了作用。我已经使用 git 多年了。我记得和同事争论过,他们拒绝看到 git 比 SVN 更好的地方(至少他们已经离开了 CVS)。所以是的,你把你的代码放在一个 repo 中,然后你检查你的更改等等。但是大多数源代码控制工作流实际上是为构建应用程序而设计的。你决定一个特性,你创建一个分支,你在几个小时或几天内完成工作,然后合并你的代码。或者同样的错误。但在创意编码中,更新/渲染周期比这快几个数量级。啊!我喜欢那一个。将图像发布到 Twitter、网站或任何地方。问题是,明天或下周或六个月后,您想重新创建您发布的第一张图片。您用来创建它的确切变量值是什么?谁知道?即使您没有更改代码,也几乎不可能重新发现精确参数以重新创建特定图像。 Git 分支对于这个快速的工作流程来说太麻烦了。当您找到一些您喜欢的参数时,您可以创建一个新分支,但是一旦您更改了其他一些值,该分支就不再代表第一个图像。有很多方法可以解决这个问题,但同样,它变得很麻烦。但我终于想出了一个很好的解决方案,以及一个我非常满意的自定义快捷方式:标签。 git 标签是对代码库中特定时间点的永久、不变的引用。在某个点标记你的代码,你总是可以回到那个确切的点。除非您删除标签并创建一个同名的新标签,否则它永远不会改变。
因此,当您想出要保存和发布的图像时,请执行以下操作: 一切顺利,但这仍然是五个步骤。还是有点麻烦。所以我制作了一个 bash 脚本,一次性完成所有这些:我将此文件命名为 tagit,使其可执行 (chmod +x tagit) 并将其放入我的路径中。如果您不完全了解 shell 语法,$1 代表调用脚本时给出的第一个参数。所以现在,当我想保存我的工作状态时,我跳到一个 shell 并输入 tagit coolpicture 或任何我想给它的标签名称。这会添加文件,使用coolpicture 作为提交消息提交它们,使用相同的标签标记提交并推送到主存储库,然后将标签推送到主存储库。现在,六个月后,当您想查看用于该酷图片的设置时,您只需说 git checkout coolpicture 就可以了。显然,您想为标签命名一些更令人难忘的东西。某种时间戳或序列是个好主意。我通常将图像或动画文件命名为与标签名称相同的名称,因此 210801a.png 是在标签 210801a 中创建的图像。如果需要,您甚至可以自动执行此操作,以生成该图像/标签名称并在创建标签时重命名该图像。如果你愿意,你可以。它将将此标签中的当前代码推送到主存储库。但它不会将当前分支中的当前代码推送到该远程分支。因此,您的远程主分支(或您所在的任何分支)不会与您的本地分支对齐。但您的标签仍会按预期保存。取决于您想要哪种行为。也许你只想推送标签,而不是在那个时候提交到分支。或者你想每次都保存到分支和标签。这只会推送您刚刚创建的特定标签。这在速度方面可能略有优势。我怀疑不是。但是,如果您有其他本地标签可能不想推送,则应该走这条路。
无论如何,按原样使用此脚本,或更改它以满足您的需要。希望有一天它可以为您节省一些时间和挫折。