Visual Studio Code:自动提交Git

8
许多时候,我会忘记将我的编辑提交到git上。如果我关闭了VSCode,我就不能再使用ctrl-Z了。因为我已经设置好了git,所以我想每30秒自动提交一次更改。
我看过这个扩展,但它不是开源的,所以我不想使用它。我还找到了这个,但我的编程技能不足以实现它。
我也想知道在这种方式下使用git是否是一个好选择,因为git文件夹可能会很快变得非常沉重(我的git只是本地的,所以我可以处理几个G)。
那么,实现我的目标的最佳方法是什么?
5个回答

13

2018:

我也在想,用这种方式使用git是不是一个好的选择。

不,这会污染你的提交历史记录。

使用扩展程序 "Local history" 是更好的方法,它不依赖于你的版本控制系统。
(而且是开源的:github.com/zabel-xyz/local-history

每次修改文件时,旧内容的副本都会保存在本地历史记录中。
您可以随时将文件与历史记录中的任何旧版本进行比较。
当您意外更改或删除文件时,它可以帮助您解决问题。
当您的工作区出现灾难性问题时,历史记录也可以帮助您解决问题。


2022年3月,使用VSCode 1.66版本不再需要扩展程序。现在,VSCode已经包含了: 本地历史 现在可以从时间轴视图中获取文件的本地历史记录。根据配置的设置,每次保存编辑器时,都会将新条目添加到列表中: Local History 每个本地历史记录条目都包含创建条目时文件的完整内容,在某些情况下还可以提供更多语义信息(例如指示重构)。
从一个条目中,您可以:
- 比较本地文件或上一个条目的更改。 - 恢复内容。 - 删除或重命名条目。
有一些新的全局命令可用于处理本地历史记录:
- `workbench.action.localHistory.create` - 为活动文件创建一个新的历史记录条目,并自定义名称。 - `workbench.action.localHistory.deleteAll` - 删除所有文件的历史记录条目。 - `workbench.action.localHistory.restoreViaPicker` - 在所有文件中查找要还原的历史记录条目。
还有一些新的设置可用于处理本地历史记录:
  • workbench.localHistory.enabled - 启用或禁用本地历史记录(默认值:true)。
  • workbench.localHistory.maxFileSize - 创建本地历史记录条目时的文件大小限制(默认值:256 KB)。
  • workbench.localHistory.maxFileEntries - 每个文件的本地历史记录条目限制(默认值:50)。
  • workbench.localHistory.exclude - 用于从本地历史记录中排除某些文件的 Glob 模式。
  • workbench.localHistory.mergeWindow - 在添加的条目替换本地文件历史记录中的最后一个条目的时间间隔(默认值为 10 秒)。

时间轴视图工具栏中的新筛选操作允许您启用或禁用单个提供程序:

Timeline Filter

注意:本地历史记录条目存储在不同的位置,具体取决于您使用 VS Code 的方式。

  • 打开本地文件时,条目将持久化到本地用户数据文件夹中。
  • 打开远程文件时,它们将存储在远程用户数据文件夹中。
  • 当没有文件系统可用时(例如,在某些情况下使用 VS Code for Web 时),条目将存储到 IndexedDB 中。

非常感谢这个建议,这是一个更好的选择!唯一的问题是本地历史仅在我保存文件时才保存它,而不是在我在VScode中进行编辑时保存。我已经看到了.saveDelay,但它只适用于保存 - MagTun
1
@MagTun 是的,这就是为什么你需要激活文件自动保存功能:https://code.visualstudio.com/docs/editor/codebasics#_save-auto-save。这样,你甚至不需要输入CTRL+S。 - VonC

10
我知道我可能是个例外,但我很差劲地坚持使用Git,但仍将其用作我的#1版本控制/核心存储库解决方案。
使用Git作为项目的唯一版本真相源时的界面和体验难以超越。
因此,我个人使用非常简单的Crontab解决方案自动推送“自动提交”每20分钟。每个自动推送的注释都相同:'Automatic Commit.'
这对于我来说非常好,特别是在我是独立/主要贡献者的项目中。
我喜欢使用VSCode的SSH远程选项直接在分期服务器上工作,因此设置Git每20分钟自动备份项目可以保护我的项目文件和历史记录。
这种解决方案的美妙之处在于,只有在进行更改时,Git才会推送新的提交。此外,我仍然可以随时手动推送新的提交,并轻松找到那些“里程碑”,因为所有自动提交都标记为“Automatic Commit”。
要设置类似的工作流程(仅适用于Linux):
重要:设置Git凭据存储并在完成以下步骤之前推送手动提交。例如,在git库所在的项目文件夹中运行此命令:git config credential.helper store,然后推送提交。这将存储您的凭据,以便Cron作业无需登录。(因为它是在后台运行的)。
然后,在终端中运行此命令:crontab -e 如果提示,请选择Nano编辑器(用户友好)或Vim。将下面的行添加到文件底部。
*/20 * * * * cd /path/to/project/git/location && git add . && git commit -m "Automatic Commit" && git push origin master 现在,您将在Git库中看到自动提交(但仅当对项目进行更改时才会出现!)。
欢迎来到未来。其中Git完全使用错误的方式...但感觉很好。

2
我是auto-git的开发者。目前它还不是开源的,但未来会成为开源项目。它可以在指定的时间间隔内检测所有更改,并使用静态Auto-Git提交将其推送到预定义的远程仓库。我仍在努力改进扩展功能。
注意:由于发布商的更改,OT中扩展的链接已失效。请使用auto-git。谢谢。

引发错误,指出我的 VSC 版本不兼容... 无论是通过商店安装还是手动安装。 - binaryguy

1
您可以使用GitDoc扩展程序。它是开源的,似乎可以直接解决您的用例。
您可能不想经常提交到共享存储库,但如果在推送之前压缩提交,这样做就没问题了。

0

给新用户。

我创建了这个批处理文件。

cd "path/to/your/git-repo/folder"
git stage .
git commit -m "Message to Commit"
git push origin master

运行此批处理文件将暂存、提交并推送所有更改。

这还不够。因此我更新了它以递归方式运行。

@echo off
:TOP
cd "C:/Users/ongsh/Google Drive/EduFun/EduFun"
git stage .
git commit -m "Auto Commit"
git push origin master
goto :TOP

现在,每当您运行该文件时,您所做的更改将自动更新。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接