Visual studio code: automatic commit git

2020-07-27 03:29发布

问题:

Many times, I forget to commit my edits to my git. And if I closed VSCode, I can't use ctrl-Z anymore. Because, I have git set up, I thought I could use something like an automatic commit every 30sec or so.

I have seen this extension btu ti's not open source, so I don't want to use it. I also found this but my programming skills aren't good enough to implement it.

I also wonder if using git in this way is a good option, as the git folder may get really heavy quickly (my git is only local, so I can handle a couple of gigab)

So what is the best way to achieve what I want to do?

回答1:

I also wonder if using git in this way is a good option

No, that would pollute the history of your commits.

Using the extension "Local history" is a better approach, and does not rely on your VCS.
(and is open-source: github.com/zabel-xyz/local-history)

Every time you modify a file, a copy of the old contents is kept in the local history.
At any time, you can compare a file with any older version from the history.
It can help you out when you change or delete a file by accident.
The history can also help you out when your workspace has a catastrophic problem.



回答2:

I know I'm probably an outlier, but I'm terrible at consistently committing to Git yet still use it as my #1 version control / core repo solution.

The interface and experience using Git as a single source-of-truth for your project is tough to beat.

So that said, I personally use a very simple Crontab solution to automatically push 'Auto-Commits' every 20 minutes. The comment on each automatic push is identical: 'Automatic Commit.'

This works GREAT (for me), specifically on projects where I'm the solo / primary contributor.

I prefer to use VSCode's SSH Remote option to work directly on a staging server, so setting up Git to automatically back-up the project every 20 minutes protects my project files and history.

The beauty of this solution is Git will only push a new commit if changes have been made. Also, I can still manually push new commits at any time and easily find those 'milestones,' because the auto-commits are all labeled 'Automatic Commit.'

To set up a similar workflow: (Linux only):

  • Important: set up Git Credential Storage and push a manual commit before completing the steps below. E.g., run this in your project folder where your git repo is: git config credential.helper store, then push a commit. This stores your credentials so the Cron job doesn't have to log-in. (Which it can't, because it's running in the background).
  • Then, run this command in the terminal: crontab -e
  • If prompted, select the Nano editor (user-friendly) or Vim if you prefer. Add the line below to the bottom of the file.
  • */20 * * * * cd /path/to/project/git/location && git add . && git commit -m "Automatic Commit" && git push origin master

You'll now see automatic commits in your Git repo (but ONLY if changes have been made to the project!).

Welcome to the future. Where Git is used completely the wrong way... but it feels good.



回答3:

I am the developer of auto-git. It's not open-source yet, but will be in the future. It detects within a specified interval all changes and will push it to the predefined remote with a static Auto-Git commit. I am still working on it to improve the functionality of the extension.

Note: The link of the extension in the OT does not work anymore because change of publisher. Please use auto-git instead. Thank you.



回答4:

To new users. I created this bat file.

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

running this bat file will stage, commit and push all changes.

This wasn't enough. So I updated it to run recursively.

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

Now, whenever you run the file, your changes will automatically be updated.