Git push from VSCode


#1

Now, I can’t use github public project in the middle for git to work.
I’d need to push directly from VSCode to glitch and so far, I get:

git push origin master
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require ‘git reset --hard’ to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set ‘receive.denyCurrentBranch’ configuration variable to
remote: error: ‘ignore’ or ‘warn’ in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: ‘receive.denyCurrentBranch’ configuration variable to ‘refuse’.
To https://api.glitch.com/myproject/git
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to ‘https://api.glitch.com/myproject/git

Is there any plan to allow this in the near future?


#2

Hi @phm, this is actually a “limitation” of git, not of Glitch per se, and you can probably do most of what you want to do with a few extra steps.

Pushing to the checked-out branch in your remote (Glitch) repo, no matter what branch is checked out, will require additional steps in Glitch to get that content into your project. When you push to your git repo you’re just pushing files into the .git directory, not to the on-disk files themselves. You can execute git config receive.denyCurrentBranch ignore in your project’s console and that will allow you to push directly to the checked-out branch, and as the error message notes you’ll still have to run git reset --hard in your project’s console to get the changes you pushed into the filesystem. An alternative is to do your local work in a different branch (“my-new-branch” for instance), push that branch to Glitch, and then run git merge my-new-branch in your project’s console to get the changes to the filesystem.

You might be able to create a git hook in your Glitch repo to automate at least some of those steps; I’ve not done that work myself but it should be possible.

In any case, for the time being you’ll need to run refresh in your project’s console when the git work is done to get whatever changes you made to also show up in the editor. At the moment changes made to files on the backend aren’t automatically synced to the editor.

Hope this helps and happy Glitching!