Visual Studio Code and GitHub are the everyday tools of most full-stack developers: one is where you write and debug code, the other is where it is stored, reviewed and shipped. This guide walks through a modern workflow from an empty folder to a deployed application, with the commands and settings that are current in 2026.
Install VS Code, Git and a current LTS release of Node.js, add a few extensions (ESLint, Prettier, GitLens), and connect to GitHub with an SSH key. Work on short-lived branches off main, open pull requests for review, and let GitHub Actions run your tests on every push. Keep secrets in environment variables, never in the repository, and deploy to the platform that suits your stack.
1. Set up your machine
You need three things installed locally:
- VS Code from the official Visual Studio Code website (Windows, macOS or Linux).
- Git. macOS offers to install it with the Xcode command-line tools; on Windows use Git for Windows; on Linux use your package manager.
- Node.js, even if your back end is PHP or Python, because most front-end tooling runs on it. Use a current LTS release (the even-numbered versions; Node.js 24 is the active LTS line in 2026). A version manager such as nvm lets you switch between versions per project.
Then tell Git who you are, and make main the default branch name:
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git config --global init.defaultBranch main2. Get comfortable with VS Code
The parts you'll use every day:
- Explorer (files), Search, Source Control and Run and Debug in the activity bar on the left.
- The Command Palette (
Ctrl+Shift+P, orCmd+Shift+Pon macOS): every command is here, so you rarely need the menus. - The integrated terminal (`
Ctrl+``), where you run Git, npm and your dev server.
VS Code has no "New Project" command. A project is simply a folder: create it, then use File > Open Folder, or run code . in a terminal inside it.
Extensions worth installing
You don't need a separate browser-debugger extension any more: VS Code's built-in JavaScript debugger handles Chrome and Edge. For a local server with live reload, use your framework's dev server (for example npm run dev with Vite) rather than a static live-server extension.
3. Start a project with a sensible structure
A typical full-stack repository keeps front end and back end apart, with configuration at the root:
my-app/
├── client/ # front end (React, Vue, Svelte…)
├── server/ # API (Node.js, PHP, Python…)
├── .github/workflows/ # CI configuration
├── .env.example # variable names only, no real values
├── .gitignore
└── README.mdCreate a .gitignore before your first commit so dependencies and secrets never enter history:
node_modules/
vendor/
.env
dist/
build/Then initialise the repository from the terminal, or with Initialize Repository in the Source Control view:
git init
git add .
git commit -m "Initial commit"4. Connect VS Code to GitHub
Use an SSH key
SSH keys avoid typing passwords and are the standard way to authenticate Git. Generate a modern Ed25519 key and add the public half to GitHub:
ssh-keygen -t ed25519 -C "[email protected]"
cat ~/.ssh/id_ed25519.pubCopy the output, then in GitHub go to Settings > SSH and GPG keys > New SSH key and paste it. Test with ssh -T [email protected]. Protect the private key with a passphrase and never share it.
Push your project
Create an empty repository on GitHub (no README, so there's nothing to merge), then:
git remote add origin [email protected]:your-user/my-app.git
git push -u origin mainVS Code can do the same with Publish to GitHub in the Source Control view after you sign in with the Accounts icon. To work on an existing repository, run Git: Clone from the Command Palette and paste the SSH URL.
5. A branching workflow that stays simple
For most teams, a short-lived feature branch workflow is enough. Keep main always deployable and do each change on its own branch:
- Update main.
git switch mainandgit pull. - Create a branch.
git switch -c feature/contact-form. - Commit small, clear changes.
git add -plets you review each change before staging; write messages that say why, such asValidate email on contact form. - Push the branch.
git push -u origin feature/contact-form. - Open a pull requeston GitHub. Teammates review, CI runs your tests, and you merge when both pass.
- Delete the branchafter merging, and start the next change from an updated
main.
Resolving merge conflicts
When Git can't combine two changes to the same lines, it marks the conflict in the file:
<<<<<<< HEAD
your version
=======
their version
>>>>>>> feature/contact-formVS Code highlights these blocks and offers Accept Current, Accept Incoming or Accept Both, plus a three-way merge editor. Edit until the file is correct, remove the markers, then git add the file and commit (or git rebase --continue if you were rebasing). Run your tests before pushing.
6. Debug inside VS Code
Set breakpoints by clicking beside a line number, then start your app from Run and Debug. For Node.js, anything you launch from a JavaScript Debug Terminal (such as npm run dev) stops at your breakpoints, where you can inspect variables and step through code. Commit useful configurations in .vscode/launch.json so the whole team debugs the same way.
7. Automate checks with GitHub Actions
Continuous integration runs your tests on every push and pull request, so problems are caught before they reach main. GitHub Actions is built into every repository. Create .github/workflows/ci.yml:
name: CI
on:
push:
branches: [main]
pull_request:
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
with:
node-version: 24
cache: npm
- run: npm ci
- run: npm run lint
- run: npm testThen, in the repository settings, add a branch ruleset (or branch protection rule) for main so a pull request can merge only when this check passes. Turn on Dependabot alerts and security updates so outdated dependencies with known vulnerabilities are flagged automatically.
8. Keep the application secure
- Keep API keys and database passwords in environment variables, with a committed
.env.examplelisting only the names - Validate and sanitise all input on the server, and use parameterised database queries
- Keep dependencies updated and review Dependabot alerts
- Commit a
.envfile, a private key or a password, even to a private repository - Rely on front-end validation alone
- Leave debug output or verbose error pages on in production
If a secret is ever pushed, treat it as leaked: rotate it at the provider immediately. Deleting the commit is not enough, because the secret remains in clones and history. For deeper coverage, see OWASP Top 10: practical defence in PHP and Node.js.
9. Running this on Domain India
Where you deploy depends on your stack:
- Shared hosting (cPanel, DirectAdmin). Best for PHP, Laravel and WordPress. Node.js and Python apps run through the panel's app tools: on cPanel, Setup Node.js App offers Node.js 20, 22 and 24. Jailed SSH access is available on every shared hosting plan (cPanel, DirectAdmin, Webuzo); it is off by default, so ask support to enable it, and log in with an SSH key. Git is available inside the jail on cPanel. Composer isn't pre-installed but can be downloaded and run as
php composer.phar, and some PHP functions are disabled; see PHP disabled functions on shared hosting. Guides: deploy with Git and jailed SSH access. - App Platform. Connect a GitHub repository and deploy with Deploy Now, or trigger deploys from CI with a deploy token from the client area's Deploy Tokens tab. Node.js apps are detected automatically; anything else needs a Dockerfile. Every plan includes a PostgreSQL database. Start with App Platform: getting started.
- VPS. Full root access for any stack, self-managed and without cPanel. For a CI pipeline to a server, see GitHub Actions CI/CD to a Domain India VPS.
- 512 MB RAM per app
- 1 vCPU
- 5 GB NVMe SSD
- PostgreSQL Database
- 25 GB NVMe SSD Storage
- 50 GB Monthly Bandwidth
- 1 Website
- 10 Email Accounts
Prices on the cards are Domain India list prices and exclude 18% GST.
Do I need GitHub to use Git in VS Code?
No. Git works entirely on your computer, and VS Code's Source Control view uses it directly. GitHub (or another host) adds an online copy of the repository, pull requests, code review and CI.
Should I use SSH or HTTPS to connect to GitHub?
Either works. SSH with an Ed25519 key avoids typing credentials and is the common choice for developers. HTTPS with the Git Credential Manager or VS Code's GitHub sign-in is simpler on machines where you can't manage SSH keys.
Which Node.js version should I use in 2026?
Use a current LTS release, which are the even-numbered versions. Node.js 24 is the active LTS line in 2026. Match the version you develop on to the version your hosting runs.
What is the difference between merge and rebase?
Merge combines two branches and records a merge commit, keeping the full history. Rebase replays your commits on top of the latest main for a straight history. Never rebase commits that others have already pulled.
How do I stop committing my .env file?
Add .env to .gitignore before your first commit. If it was already committed, run git rm --cached .env, commit, and rotate every secret it contained, because the old values stay in history.
Can I deploy from GitHub to Domain India?
Yes. On shared hosting you can deploy with Git over jailed SSH once support enables it. On the App Platform you connect a GitHub repository and deploy with Deploy Now or a deploy token from CI. On a VPS you can run any pipeline you like.
Ready to ship your project? Compare the App Platform, cPanel hosting and VPS servers, or open a support ticket to have jailed SSH enabled on your hosting account.
Connect a GitHub repository, deploy Node.js automatically or any stack with a Dockerfile, with a PostgreSQL database on every plan.
See App Platform plans