Tässä harjoituksessa harjoittelet git commitin, pushin, branchien luontia ja mergeä.
cd polku/kansioon/git-harjoitus
code . terminaaliin)git init
git remote add origin https://github.com/USERNAME/git-harjoitus.git
npm init -y
npm install express
const express = require('express');
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.json({ message: 'Tervetuloa Git-harjoitukseen!' });
});
app.listen(PORT, () => {
console.log(`Serveri käynnissä portissa ${PORT}`);
});
node_modules/
git statusNäet, että server.js, package.json ja .gitignore ovat "untracked files"
git add .
git commit -m "Lisää Express-serveri perustoiminnallisuudella"
git branchTodennäköisesti se on master
git push -u origin master
node server.jsAvaa selain ja mene osoitteeseen
http://localhost:3000
git checkout -b feature-users
git branchNykyinen branch näkyy tähdellä merkittynä
app.get('/', (req, res) => {
res.json({ message: 'Tervetuloa Git-harjoitukseen!' });
});
app.get('/users', (req, res) => {
const users = [
{ id: 1, name: 'Anna' },
{ id: 2, name: 'Mikko' }
];
res.json(users);
});
app.listen(PORT, () => {
console.log(`Serveri käynnissä portissa ${PORT}`);
});
git add server.js git commit -m "Lisää /users endpoint"
git push origin feature-users
node server.jsAvaa selain ja mene osoitteeseen
http://localhost:3000/users
git checkout master
git checkout -b feature-logger
const express = require('express');
const app = express();
const PORT = 3000;
// Logger middleware
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.path}`);
next();
});
app.get('/', (req, res) => {
res.json({ message: 'Tervetuloa Git-harjoitukseen!' });
});
app.listen(PORT, () => {
console.log(`Serveri käynnissä portissa ${PORT}`);
});
git add server.js git commit -m "Lisää logger-middleware"
git push origin feature-logger
node server.jsAvaa selain ja mene osoitteeseen
http://localhost:30002024-XX-XX... - GET /
git checkout master
git merge feature-usersNäet viestin "Fast-forward" - tämä tarkoittaa että yhdistäminen onnistui ilman konflikteja
git merge feature-logger
git push origin master
node server.jsAvaa selain ja mene osoitteeseen
http://localhost:3000/usersNyt lisätään sovellukseen ympäristömuuttujat. Tässä osiossa opit myös, mitä tehdä jos viet vahingossa arkaluontoisia tiedostoja GitHubiin.
npm install dotenv
PORT=3000 SECRET_KEY=minun_salainen_avaimeni_12345 DATABASE_URL=mongodb://localhost:27017/testdb
require('dotenv').config();
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
// Logger middleware
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.path}`);
next();
});
app.get('/', (req, res) => {
res.json({
message: 'Tervetuloa Git-harjoitukseen!',
port: PORT
});
});
app.get('/users', (req, res) => {
const users = [
{ id: 1, name: 'Anna' },
{ id: 2, name: 'Mikko' }
];
res.json(users);
});
app.listen(PORT, () => {
console.log(`Serveri käynnissä portissa ${PORT}`);
console.log(`SECRET_KEY asetettu: ${process.env.SECRET_KEY ? 'Kyllä' : 'Ei'}`);
});
node server.jsTerminaalissa pitäisi näkyä: "SECRET_KEY asetettu: Kyllä"
git add . git commit -m "Lisää ympäristömuuttujat" git push origin master
Nyt korjataan tilanne:
node_modules/ .env
git rm --cached .env
git status
git add .gitignore git commit -m "Poista .env Gitin seurannasta ja lisää .gitignore"
git push origin master
Opetus: Oikeassa projektissa sinun tulisi:
PORT=3000 SECRET_KEY=vaihda_tämä_omaan_avaimeen DATABASE_URL=mongodb://localhost:27017/tietokanta_nimi
Tässä harjoituksessa opit käyttämään Gitin perustoimintoja kuten:
Lopputulos: Sinulla on nyt toimiva Express.js backend-sovellus, jossa on:
/)/users)http://localhost:3000/users
Tärkeä opetus: Opit myös miksi .env tiedostoja ei pidä viedä GitHubiin ja miten korjata tilanne jos se vahingossa tapahtuu. Muista aina lisätä arkaluontoiset tiedostot .gitignore-tiedostoon ennen ensimmäistä commitia!