GitHub అంటే ఏమిటి? VPS కోసం Git vs GitHub
Git మీ కంప్యూటర్ లేదా VPSలో నడిచే version control program. GitHub దానిపై నిర్మించిన hosted service. config files, deploy scripts, historyకి ఈ తేడా ఎందుకు ముఖ్యమో తెలుసుకోండి.
GitHub అంటే ఏమిటి?
GitHub అనేది Git repositories ను నిల్వ చేసి, వాటి చుట్టూ ఒక website ను అందించే hosted service. Git అనేది మీ స్వంత కంప్యూటర్ లేదా మీ స్వంత server పై నడిచే version control program. GitHub అనేది Git పై నిర్మించిన ఒక సంస్థకు చెందిన product; 2018 నుంచి ఇది Microsoft యాజమాన్యంలో ఉంది. మీరు ప్రతిరోజూ Git ను ఉపయోగించి, GitHub ను ఎప్పుడూ తెరవకపోవచ్చు. Git లేకుండా GitHub ను ఉపయోగించలేరు.
మీకు VPS (virtual private server) ఉన్నప్పుడు ఈ తేడా ముఖ్యమవుతుంది. మీ config files మరియు deploy scripts చరిత్రను నమోదు చేసేది Git. Server వద్ద ఆ చరిత్ర అందుబాటులో లేనప్పుడు, దాని ఒక copy GitHub లో ఉంటుంది. అదనంగా builds మరియు reviews నడపడానికి GitHub ఉపయోగపడుతుంది. ఈ guide ఒక ఖాళీ folder నుంచి server పై deploy వరకు ఒక ఉదాహరణను అనుసరిస్తుంది. మీరు మొదటిసారి ఎదుర్కొనే ప్రతి కొత్త పదాన్ని అదే సందర్భంలో నిర్వచిస్తుంది.
Git స్వయంగా చేసే పని
Git ఒక version control system. ఇది directory స్థితిని కాలక్రమేణా నమోదు చేస్తుంది. అందువల్ల ఏమి మారింది, ఎప్పుడు మారింది, ఎందుకు మారింది అనే విషయాలను చూడవచ్చు. Linux kernel పనుల కోసం దీనిని 2005లో రాశారు. ఇది distributed వ్యవస్థ. అంటే repository యొక్క ప్రతి copyలో పూర్తి history ఉంటుంది. దీని రూపకల్పనలో central server ఉండదు. సహోద్యోగి laptopలోని copy కూడా ఏ serverలోని copyలాగే సంపూర్ణంగా ఉంటుంది.
దీన్ని install చేసి మీ identityని set చేయండి. name మరియు email address లేకుండా Git commitను నమోదు చేయదు. ఎందుకంటే ఈ రెండూ commitలోనే రాయబడతాయి.
sudo apt update && sudo apt install -y git
git --version
git config --global user.name "Your Name"
git config --global user.email "you@example.com"Ubuntu 24.04లో, git --version అనేది git version 2.43.0 ను print చేస్తుంది. గత కొన్ని సంవత్సరాల్లో విడుదలైన ఏ release అయినా, కింది విషయాలన్నింటిలో ఇదే విధంగా పనిచేస్తుంది.
మీ VPS deploy files కోసం ఉదాహరణ repository
repository ను సాధారణంగా "repo" అని సంక్షిప్తంగా పిలుస్తారు. ఇది Git పర్యవేక్షించే directory. మీరు git init అమలు చేసినప్పుడు అది repositoryగా మారుతుంది. ఈ command దాని లోపల దాచిన .git folderను సృష్టిస్తుంది. ఆ folderనే repository అంటారు. .git ను తొలగిస్తే, history లేని సాధారణ directory మాత్రమే మిగులుతుంది.
mkdir vps-deploy && cd vps-deploy
git init -b main
printf '.env\n*.key\n' > .gitignore-b main మొదటి branchకు main అనే పేరు ఇస్తుంది. దీన్ని వదిలేస్తే, default branch name గురించి Git ఒక పొడవైన సూచనను చూపిస్తుంది. Git ఎప్పటికీ track చేయకూడని paths ను .gitignore జాబితా చేస్తుంది. మొదటి రోజే మీ secrets fileను అందులో రాయండి. ఎందుకంటే ఒక fileను ఒక్కసారి commit చేసిన తర్వాత, దాన్ని తొలగించినా అది historyలో మిగిలిపోతుంది. దాన్ని సరిగ్గా తొలగించాలంటే, ఆ తర్వాత వచ్చిన ప్రతి commitను తిరిగి రాయాలి.
చరిత్ర యొక్క ప్రాథమిక ఘటకం: commits
ఇప్పుడు ఒక script జోడించి, దాన్ని record చేయండి.
printf '#!/bin/sh\nsudo systemctl restart caddy\n' > restart.sh
git add restart.sh .gitignore
git commit -m "Add restart script and gitignore"
git log --onelinegit add ఒక మార్పును staging area లోకి పంపుతుంది. తదుపరి commit లోకి వెళ్లే అంశాల జాబితానే ఇది. git commit ఆ జాబితాను history లో ఒక entryగా నమోదు చేస్తుంది. commit లో track చేస్తున్న ప్రతి file యొక్క snapshot, ఒక message, author, timestamp, అలాగే దానికి ముందు ఉన్న commit కు pointer ఉంటాయి. git log --oneline ప్రతి commit కు ఒక line చొప్పున print చేస్తుంది. ప్రతి line a1b2c3d వంటి short hash తో ప్రారంభమవుతుంది. ఆ hash commit పేరు. దాదాపు ప్రతి Git command దాన్ని అంగీకరిస్తుంది.
git add దశను దాటేసి git commit అమలు చేస్తే no changes added to commit (use "git add" and/or "git commit -a") సమాధానం వస్తుంది. ఏదీ విరగలేదు. staging area ఖాళీగా ఉందని Git చెబుతోంది. అందువల్ల snapshot చేయడానికి ఏమీ లేదు. మీరు అయోమయంలో ఉన్నప్పుడు అమలు చేయాల్సిన command git status. ఇది ప్రస్తుత branch, staged changes, అలాగే Git చూడగలిగినా track చేయని files పేర్లను చూపిస్తుంది.
Branches: చరిత్రలో రెండవ మార్గం
branch అనేది ఒక commit ను సూచించే మారే pointer. main ఒక branch, Git విషయంలో దానికి ఎలాంటి ప్రత్యేకత లేదు. దాన్ని సృష్టించడానికి ఎలాంటి ఖర్చు ఉండదు, ఎందుకంటే మీ files ను copy చేయకుండా Git కొత్త pointer ను మాత్రమే రాస్తుంది.
git switch -c add-backup
printf '#!/bin/sh\nrestic backup /srv\n' > backup.sh
git add backup.sh
git commit -m "Add nightly backup"
git switch main
lsgit switch main తరువాత, listing లో backup.sh కనిపించదు. ఏదీ delete కాలేదు. ఆ file add-backup branch లో ఉంది, కానీ main లో అది ఎప్పుడూ లేదు. అందువల్ల మీరు మారినప్పుడు Git దాన్ని మీ working directory నుంచి తొలగించింది. ఇది మొదటిసారి అందరినీ ఆశ్చర్యపరుస్తుంది. git switch add-backup దాన్ని తిరిగి తీసుకువస్తుంది.
Remotes: GitHub చివరకు కనిపించే చోటు
ఇప్పటివరకు నెట్వర్క్ లేకుండా ఒకే మెషీన్పై అన్నీ నడిచాయి. remote అనేది అదే repository యొక్క మరో కాపీకి సంబంధించిన పేరుతో గుర్తించబడిన URL. GitHub మీ కోసం అలాంటి ఒక కాపీని host చేస్తుంది. ప్రధాన remote కు సాధారణంగా origin అనే పేరు ఉపయోగిస్తారు.
GitHub website ద్వారా ఖాళీ repositoryని సృష్టించి, దానికి connect చేయండి. ఇక్కడ HTTPS కంటే SSHను ఉపయోగించడం మంచిది: SSH key మీరు నియంత్రించే file, అయితే personal access token లాగా అది expire కాదు.
ssh-keygen -t ed25519 -C "vps-deploy"
cat ~/.ssh/id_ed25519.pub
ssh -T git@github.comముద్రించబడిన public keyని మీ GitHub account లోని SSH keys pageలో paste చేసి, తరువాత testను మళ్లీ run చేయండి. పనిచేస్తున్న keyకి Hi yourname! You've successfully authenticated, but GitHub does not provide shell access. అనే సమాధానం వస్తుంది. GitHub మీకు shell ఇవ్వదు కాబట్టి, ఆ నిరాకరణే విజయవంతమైన ఫలితం. git@github.com: Permission denied (publickey). అంటే మీ key ఎప్పుడూ offer కాలేదని లేదా accept కాలేదని అర్థం. అందువల్ల మీరు private key పక్కన ఉన్న file కాకుండా .pub fileనే paste చేశారో లేదో తనిఖీ చేయండి.
git remote add origin git@github.com:yourname/vps-deploy.git
git push -u origin maingit push మీ commitsను remoteకు పంపుతుంది. స్థానిక main, remote mainను track చేస్తుందని -u నమోదు చేస్తుంది. అందువల్ల తరువాత bare git push చాలు. కొత్త మెషీన్పై దీనికి విరుద్ధంగా git clone <url> పనిచేస్తుంది: అది historyతో సహా మొత్తం repositoryని copy చేసి, మీ కోసం originను సెట్ చేస్తుంది. HTTPS remote కూడా పనిచేస్తుంది. అది ఏ web page అయినా ఉపయోగించే అదే protocolపై ప్రయాణిస్తుంది. అందువల్ల outbound port 22ను block చేసే networksలో ఇది ఉపయోగకరంగా ఉంటుంది. ఈ వాక్యాన్ని మరింత వివరంగా అర్థం చేసుకోవాలంటే, HTTP requestలో వాస్తవంగా ఏమి ఉంటుందో mechanicsను వివరిస్తుంది.
Pull requests, issues మరియు forks: GitHub కు చెందిన భాగాలు, Git కు చెందినవి కావు
పైవన్నీ Git కు చెందినవి. అవి ఏ server తోనైనా పనిచేస్తాయి. కింది మూడు పదాలు GitHub features. ఇతర hosting services వాటిని అనుకరిస్తాయి. కానీ Git కి వాటి గురించి ఏమీ తెలియదు.
pull request (PR) అనేది ఒక branch ను మరొక branch లోకి merge చేయమని చేసే అభ్యర్థన. చర్చ కోసం దీనికి ఒక page కూడా ఉంటుంది. మీరు add-backup ను push చేసి, main కు వ్యతిరేకంగా PR తెరిస్తే, site commit వారీగా తేడాను చూపిస్తుంది. వ్యక్తులు ఒక్కో line పై comment చేయగలరు. Automated checks ఆ branch కు pass లేదా fail ఫలితాన్ని చూపిస్తాయి. merge పై click చేస్తే, GitHub తన స్వంత copy లో merge చేసి, తరువాత main ను update చేస్తుంది. మొదటి workflow నుంచి ఈ పేరు వచ్చింది. అందులో maintainer ను మీ branch ను వారి branch లోకి pull చేయమని అడిగేవారు.
issue అనేది bug లేదా task కోసం ఉపయోగించే సంఖ్యతో కూడిన thread. ఇది మీ repository లో కాకుండా GitHub database లో ఉంటుంది. Host ఎంచుకునే ముందు ఈ విషయం తెలుసుకోవాలి. మీరు repo ను clone చేస్తే ప్రతి commit మీ వద్ద ఉంటుంది. కానీ ఒక్క issue కూడా ఉండదు. Issues ను బయటకు తీసుకోవాలంటే API ను call చేయాలి.
fork అనేది మరొకరి repository కి server-side లో మీకు చెందిన copy. ఆ copy పై మీకు write access ఉంటుంది. దానికి branch ను push చేసి, మీ copy నుంచి వారి copy కి pull request తెరవవచ్చు. Maintainers కు మీ గురించి ఇంతకు ముందు తెలియకపోయినా, project కు contribute చేయడానికి ఇదే పద్ధతి. Fork అనేది GitHub లో ఉండే clone. అది ఎక్కడి నుంచి వచ్చిందో కూడా గుర్తుంచుకుంటుంది.
Software ఈ మూడింటినీ వ్యక్తులు ఉపయోగించే అదే API ద్వారా చదువుతుంది. మీరు స్వయంగా నడిపే pull request review agent కొత్త PR ల కోసం monitor చేస్తుంది, diff ను చదువుతుంది, line comments ను post చేస్తుంది. repository root లో ఉండే AGENTS.md file వంటి conventions అవసరమైనవి. ఎందుకంటే repo ను ఇప్పుడు వ్యక్తులతో పాటు tools కూడా చదువుతున్నాయి.
VPS యజమానికి GitHub వాస్తవంగా చేసే పని
ముందుగా server వెలుపల storage ను ఉపయోగించండి. మీరు configure చేసే server లోనే మీ deploy scripts మరియు playbooks ఉండకూడదు. తాజా image నుంచి VPS ను rebuild చేసి, clone చేసి, అమలు చేయండి. ఆ repository ను private గా ఉంచి, server కు deploy key ఇవ్వండి: ఇది మొత్తం account కు కాకుండా ఒకే repository కు అనుసంధానించిన SSH key. దీన్ని read only గా సెట్ చేయండి. Read-only deploy key లీక్ అయితే ఒక repository మాత్రమే బహిర్గతమవుతుంది. Account key లీక్ అయితే మీరు push చేయగల ప్రతిదీ బహిర్గతమవుతుంది.
sudo git clone git@github.com:yourname/vps-deploy.git /srv/vps-deploy
cd /srv/vps-deploy
git pull --ff-only--ff-only merge commit సృష్టించడానికి నిరాకరిస్తుంది. మార్పులను మాత్రమే స్వీకరించే server లో merge ఎల్లప్పుడూ అనుకోని పరిణామమే. అందువల్ల ఈ flag గందరగోళమైన history ను సాధారణ error fatal: Not possible to fast-forward, aborting. గా మారుస్తుంది. Server లో మార్పులు చేయకూడని విధంగా ఏదో మారింది. మళ్లీ pull చేయడానికి ముందు దాన్ని కనుగొనండి.
root గా clone చేసి, తరువాత మరో user గా Git ను అమలు చేస్తే fatal: detected dubious ownership in repository at '/srv/vps-deploy' వస్తుంది. వేరే user యాజమాన్యంలో ఉన్న repository ను Git చదవడానికి నిరాకరిస్తుంది, ఎందుకంటే హానికరమైన .git/config ద్వారా Git commands ను అమలు చేయించవచ్చు. safe.directory exception జోడించడానికి బదులుగా chown తో ownership ను సరిచేయండి. Exception check ను మాత్రమే నిలిపివేస్తుంది; అసలు కారణాన్ని తొలగించదు.
GitHub Actions: build మరియు deploy pipelines
Actions అనేది GitHub యొక్క CI/CD వ్యవస్థ (continuous integration మరియు continuous delivery). .github/workflows/ కింద YAML ఫైల్ను commit చేస్తే, మీరు పేర్కొన్న event సంభవించినప్పుడు GitHub దాన్ని అమలు చేస్తుంది.
name: check
on:
push:
branches: [main]
jobs:
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- run: sudo apt-get update && sudo apt-get install -y shellcheck
- run: shellcheck *.shఈ ఫైల్ను workflow అంటారు. job ఒక machineపై నడుస్తుంది. step అనేది ఒక command లేదా ప్రచురించిన action. uses: మరో repository నుంచి actionను తీసుకువస్తుంది, @v7 దాని major versionను pin చేస్తుంది (August 2026 నాటికి actions/checkout కోసం v7 ప్రస్తుత version). ఎల్లప్పుడూ ఏదో ఒక versionను pin చేయాలి. Pin చేయని actionలో మీరు చదవని code మీ secretsకు ప్రాప్యతతో నడుస్తుంది.
runs-on: ubuntu-latest GitHubను కొత్త virtual machine కోసం అభ్యర్థిస్తుంది. job ముగిసినప్పుడు ఆ machine తొలగించబడుతుంది. Public repositoriesలో standard runners ఉచితం. August 2026 నాటికి private repositories కోసం free planలో నెలకు 2,000 minutes ఉన్నాయి. ఆ సంఖ్య ఆధారంగా budget రూపొందించే ముందు ప్రస్తుత pricing pageను పరిశీలించండి.
Secrets repository settingsలో నిల్వ చేయబడతాయి మరియు ${{ secrets.DEPLOY_KEY }} గా చదవబడతాయి. Fork నుంచి వచ్చిన pull request ద్వారా ప్రారంభమైన workflowకు read-only token మాత్రమే లభిస్తుంది. దానికి secretsకు ప్రాప్యత ఉండదు. లేకపోతే ఒక అపరిచితుడు secretsను print చేయడమే పని అయిన PRను తెరవగలడు.
మీ స్వంత VPS పై Actions runner నడపడం
runs-on: self-hosted job ను మీరు స్వంతంగా నిర్వహించే machine కు పంపుతుంది. Repository యొక్క runner settings page మీకు download line, repository web address, అలాగే ఒక గంటపాటు చెల్లుబాటు అయ్యే registration token ను అందిస్తుంది. చివరి రెండు విలువలను REPO_URL మరియు RUNNER_TOKEN లో ఉంచండి. తరువాత setup కోసం మూడు commands మాత్రమే ఉంటాయి.
./config.sh --url "$REPO_URL" --token "$RUNNER_TOKEN"
sudo ./svc.sh install
sudo ./svc.sh start
./svc.sh statussvc.sh status service ను active గా చూపించి, ఇటీవలి log lines ను ప్రదర్శించాలి. Runner GitHub కు outbound HTTPS connection తెరిచి పని కోసం అభ్యర్థిస్తుంది. అందువల్ల దాని కోసం inbound port ఏదీ open చేయాల్సిన అవసరం లేదు. svc.sh install systemd unit ను రాస్తుంది. ఇదే చాలామంది దాటవేసే దశ. ఇది లేకపోతే మీ SSH session ముగిసినప్పుడు runner కూడా exit అవుతుంది. తరువాతి ప్రతి job ఎటువంటి వివరణ లేకుండా queued స్థితిలోనే ఉంటుంది. VPS పై self-hosted runner setup పూర్తి విధానం దీర్ఘకాలం నడిచే runner కు అవసరమైన hardening మరియు cleanup దశలను వివరిస్తుంది.
దీని ప్రయోజనం ఏమిటంటే deploy కోసం internet నుంచి అందుబాటులో ఉండే inbound SSH key అవసరం ఉండదు. Job ఇప్పటికే ఆ machine పై నడుస్తుంది. Build cache కూడా runs మధ్య warm గా ఉంటుంది. అదనంగా minute meter ఏదీ లెక్కించదు.
ఒక ముఖ్యమైన హెచ్చరిక ఉంది. GitHub యొక్క స్వంత documentation ప్రకారం self-hosted runners ను private repositories కోసం మాత్రమే ఉపయోగించాలి. కారణం, public repository యొక్క forks pull request తెరవడం ద్వారా మీ runner పై ప్రమాదకర code ను అమలు చేయగలవు. ఆ branch లోని workflow file ఏమి చెబుతుందో runner అదే అమలు చేస్తుంది. ఎవరు push చేయగలరో మీరు నియంత్రించే private repo లో ప్రమాదం తక్కువగా ఉంటుంది. Public repo విషయంలో, అపరిచితులు code అమలు చేయగల machine గా ప్రతి self-hosted runner ను పరిగణించండి.
GitHub అసలు అవసరమా?
లేదు. Git ప్రామాణికం. GitHub సౌకర్యవంతమైన సేవ మాత్రమే. Forgejo మరియు Gitea self-hosted forgeలు. Forge అంటే issues మరియు pull requests అనుసంధానించబడిన Git host. రెండూ ఒకే Go binaryగా విడుదలవుతాయి. రెండూ చిన్న VPSపై నడుస్తాయి. Forgejo అనేది Gitea యొక్క 2022 fork. ఇది ఇప్పుడు Codebergకు శక్తినిస్తుంది. Wire protocol ఒకటే కాబట్టి repositoryని ఒకే commandతో తరలించవచ్చు.
git remote -v
git remote set-url origin git@git.example.com:you/vps-deploy.git
git push origin mainప్రతి cloneలో పూర్తి history ఇప్పటికే ఉంటుంది కాబట్టి ప్రతి commit తరలిపోతుంది. GitHub దాని పైన నిర్మించిన layer మాత్రం తరలదు: issues మరియు pull request threads. CI కూడా బదిలీ కాదు. Forgejoకు స్వంత Actions implementation ఉంది. ఇది .forgejo/workflows/ నుంచి సమానమైన YAMLను చదువుతుంది. అయితే పరిమితుల గురించి దాని documentation స్పష్టంగా చెబుతుంది: GitHub Actions మరియు Forgejo Actions ఒకటే కావు. కొన్ని విషయాలు వెంటనే పనిచేయకపోవచ్చు. దీనికి స్వంత runner కూడా అవసరం. ఈ దశను copyగా కాకుండా portగా ప్రణాళిక చేయాలి.
చాలా projects GitHubలోనే ఉండటానికి నిజమైన కారణం contributors. Public code ఇప్పటికే account ఉన్న ప్రదేశంలో ఉండాలి. మీ private deploy scriptsకు అది అవసరం లేదు. ఇవి రెండు వేర్వేరు నిర్ణయాలు. వాటికి మీరు వేర్వేరు సమాధానాలు ఇవ్వవచ్చు.
ముందుగా ఏది విఫలమవుతుంది, error ఏమి చెబుతుంది
Push తిరస్కరించబడింది. మీకు ఇది కనిపిస్తుంది:
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'github.com:yourname/vps-deploy.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally.మీరు చివరిసారి pull చేసిన తర్వాత ఏదో push చేయబడింది. సాధారణంగా అది web editor లో మీరు చేసిన మార్పు కావచ్చు. మీ commits ను వారి commits పై మళ్లీ వర్తింపజేయడానికి git pull --rebase అమలు చేసి, తరువాత మళ్లీ push చేయండి. Shared branch లో git push --force ను నివారించండి, ఎందుకంటే అది server లోని ఆ branch నుంచి ఇతర commits ను తొలగిస్తుంది.
fatal: refusing to merge unrelated histories. మీరు స్థానికంగా git init అమలు చేశారు. అలాగే GitHub ను README తో repository సృష్టించనిచ్చారు. ఈ రెండు historyలకు ఉమ్మడి commit ఏదీ లేదు, కాబట్టి Git స్వయంగా సరైన నిర్ణయం తీసుకోదు. GitHub copy ను కొత్త folder లోకి clone చేసి, మీ files ను అందులోకి తరలించడం శుభ్రమైన పరిష్కారం.
error: src refspec main does not match any. మీరు పేర్కొన్న branch ఇక్కడ లేదు. సాధారణంగా repository లో ఇప్పటివరకు commits ఏవీ ఉండవు, లేదా మీ branch పేరు master అయి ఉంటుంది. git branch --show-current అమలు చేస్తే విషయం స్పష్టమవుతుంది.
ఒక secret commit లోకి చేరింది. ఆ credential ను వెంటనే మార్చండి. అది push చేసిన క్షణం నుంచే public అయిందిగా పరిగణించండి, ఎందుకంటే forks, mirrors మరియు cached views లో దాని copies ఉండవచ్చు; వాటిని మీరు తొలగించలేరు.
FAQ
GitHub మరియు Git ఒకటేనా?
కాదు. Git అనేది మీరు ఒక machineలో install చేసే version control program. ఇది network లేదా account లేకుండానే పనిచేస్తుంది. GitHub అనేది Git repositoriesను నిల్వ చేసే commercial hosted service. దానికి web interface, issues, pull requests మరియు CI వంటి సదుపాయాలు జోడించబడ్డాయి. Git 2005లో విడుదలైంది. దాని ఆధారంగా GitHub 2008లో ప్రారంభమైంది. మీరు GitHub లేకుండానే Gitను నిరంతరం ఉపయోగించవచ్చు. GitHubలోని ప్రతి feature వెనుక Git పనిచేస్తుంది.
నా VPSలో Git ఉపయోగించడానికి GitHub account అవసరమా?
కాదు. git init, git commit మరియు git log ఏ remoteను configure చేయని serverలో కూడా పనిచేస్తాయి. /etc filesలో మార్పులను track చేయడానికి లేదా deploy scriptsను నిర్వహించడానికి ఇది సరిపోతుంది. Serverకు అతీతంగా history యొక్క ఒక copy ఉంచాలనుకున్నప్పుడు లేదా దాన్ని clone చేయగల రెండవ machine అవసరమైనప్పుడు account ఉపయోగకరంగా ఉంటుంది. Forgejo మరియు Gitea వంటి self-hosted forges, మీ స్వంత hardwareపై ఇదే అవసరాన్ని తీర్చగలవు. మరో boxలోని bare repositoryకి సూచించే సాధారణ SSH remoteను forge software లేకుండానే ఉపయోగించవచ్చు.
pull request అంటే ఏమిటి?
pull request అనేది ఒక branchను మరొక branchలో merge చేయమని చేసే అభ్యర్థన. దానికి discussion page జతగా ఉంటుంది. మీరు ఒక branchను push చేసి, mainకు వ్యతిరేకంగా PRను open చేస్తారు. Host మార్పులను ప్రతి commitగా చూపుతుంది. Reviewers individual linesపై comment చేయగలరు. Automated checks pass లేదా fail ఫలితాన్ని చూపగలవు. ఇది Git feature కాదు; GitHub feature. అందువల్ల Gitలో దీనికి ప్రత్యేక command లేదు. ఇతర hosts కూడా ఇదే విధానాన్ని అమలు చేస్తాయి. కొన్నిచోట్ల దీనిని merge request అని పిలుస్తారు.
నా స్వంత VPSపై GitHub Actions runner నడపాలా?
Private repository కోసం తరచుగా నడపవచ్చు. Job మీరు ఇప్పటికే చెల్లిస్తున్న hardwareపై నడుస్తుంది. Minutesకు meter ఉండదు. Build cache అందుబాటులోనే ఉంటుంది. Deploy కోసం internetకు inbound SSH keyను expose చేయాల్సిన అవసరం ఉండదు. Runner GitHubకు outboundగా connect అయి పని కోసం request చేస్తుంది. Public repository కోసం GitHub దీనిని సిఫార్సు చేయదు. ఎవరైనా మీ repoను fork చేసి, మీ machineపై code నడిపించే pull requestను open చేయవచ్చు.
తరువాత నా repositoriesను GitHub నుంచి తరలించవచ్చా?
Codeను సులభంగా తరలించవచ్చు. ప్రతి cloneలో పూర్తి history ఉంటుంది. అందువల్ల git remote set-url origin <new url> తరువాత push చేస్తే, ఒక commitలో ఉన్న మొత్తం content తరలిపోతుంది. GitHub నిర్వహించే layer మాత్రం అక్కడే మిగులుతుంది. Issues, pull request discussions మరియు Actions history దాని databaseలో ఉంటాయి; మీ .git folderలో ఉండవు. Migration tools API ద్వారా issuesను copy చేయగలవు. కొత్త host యొక్క CI కోసం workflow filesను సాధారణంగా సవరించాలి. దీనిని దృష్టిలో ఉంచుకుని, ముఖ్యమైన documentationను issue threadsలో కాకుండా repositoryలో ఉంచడం మంచిది.