# GitLab என்றால் என்ன, Git வழியாக அதனுடன் எப்படி வேலை செய்வது: clone, push, merge request, CI/CD

URL: https://skillaria.top/ta/guides/git/what-is-gitlab

GitLab என்பது Git களஞ்சியங்களைச் சேமித்து குழுவாக வேலை செய்வதற்கான இணையத் தளம்: குறியீடு, merge request, பணிகள் மற்றும் உள்ளமைந்த CI/CD ஒரே இடத்தில். இதை மேகத்தில் gitlab.com-இலோ நிறுவனத்தின் சொந்த சேவையகத்திலோ பயன்படுத்தலாம்; குறியீடு clone, push, pull போன்ற வழக்கமான Git கட்டளைகளால் அனுப்பப்பட்டு பெறப்படுகிறது.

## GitLab என்றால் என்ன

GitLab என்பது Git களஞ்சியங்கள் சேமிக்கப்பட்டு, அவற்றைச் சுற்றி குழு வேலை நடக்கும் ஒரு தளம்: குறியீட்டைப் பார்ப்பது, merge request (இணைப்புக் கோரிக்கைகள்), பணிகள், விக்கி, கொள்கலன் பதிவகம் மற்றும் உள்ளமைந்த CI/CD. சுருக்கமாகச் சொன்னால், «உள்ளமைந்த கட்டமைப்புக் குழாய் மற்றும் உங்கள் சொந்தச் சேவையகத்தில் இயக்கும் வசதியுடன் கூடிய GitHub» என்பதுதான் GitLab. பல நிறுவனங்கள் தங்கள் உள் பிணையத்தில் நிறுவப்பட்ட GitLab-இல் தங்கள் குறியீட்டை வைத்திருக்கின்றன.

இத்திட்டம் 2011-ஆம் ஆண்டு குறியீட்டு ஹோஸ்டிங் திறந்த பயன்பாடாகத் தொடங்கியது; அதைச் சுற்றி GitLab Inc. நிறுவனம் வளர்ந்தது. தளம் இரண்டு பதிப்புகளில் கிடைக்கிறது: Community Edition — உங்கள் சேவையகத்தில் இலவசமாக நிறுவக்கூடிய திறந்த பதிப்பு; மற்றும் கட்டண அம்சங்களுடன் Enterprise Edition. gitlab.com-இல் திட்டங்கள் Free, Premium, Ultimate என்று அழைக்கப்படுகின்றன.

இரண்டு கருத்துகளைக் குழப்பக்கூடாது. Git என்பது உங்கள் கணினியில் இயங்கும் பதிப்புக் கட்டுப்பாட்டு நிரல். GitLab என்பது களஞ்சியத்தின் தொலைதூர நகலைச் சேமித்து, அதற்கு குழுவுக்கான இடைமுகத்தையும் கருவிகளையும் சேர்க்கும் சேவை. Git இல்லாமல் GitLab-உடன் வேலை செய்ய முடியாது; ஆனால் GitLab இல்லாமலும் Git சிறப்பாக இயங்கும்.

## Git மற்றும் GitLab: வேறுபாடு என்ன

«git, gitlab என்றால் என்ன» என்ற கேள்வி பொதுவாக வேலை விளம்பரத்திலோ முதல் வேலை நாளிலோ இரண்டு சொற்களும் ஒன்றாகத் தோன்றும்போது எழுகிறது. இவற்றின் வேறுபாடு ஒரு ஆவணத்துக்கும் கிளவுட் சேமிப்பகத்துக்கும் உள்ள வேறுபாடு போன்றது: Git கோப்பு மாற்றங்களைக் கண்காணித்து, commit மற்றும் கிளை வரலாற்றை உள்ளூரில் வைத்திருக்கும். GitLab அந்த வரலாற்றை பிணையம் வழியாகப் பெற்று உலாவியில் காட்டும்.

|  | Git | GitLab |
| --- | --- | --- |

| என்ன | பதிப்புக் கட்டுப்பாட்டு நிரல் | களஞ்சியங்களுக்கும் குழு வேலைக்கும் ஒரு இணையத் தளம் |

| எங்கே இயங்கும் | டெவலப்பரின் கணினியில் | gitlab.com-இலோ நிறுவனத்தின் சேவையகத்திலோ |

| இணையம் தேவையா | இல்லை; push, pull, fetch, clone-க்கு மட்டும் தேவை | ஆம், இது பிணைய சேவை |

| முக்கிய வேலைகள் | Commit-கள், கிளைகள், இணைப்புகள், வரலாறு | Merge request, மதிப்பாய்வு, பணிகள், CI/CD, அணுகல் உரிமைகள் |

| எப்படிப் பயன்படுத்துவது | கட்டளை வரி, IDE, GUI கிளையன்ட்கள் | உலாவி, அதோடு வழக்கமான Git கட்டளைகள் |

குறியீட்டுடன் அனைத்து செயல்களையும் — commit, branch, merge — நீங்கள் இன்னும் Git-இலேயே செய்கிறீர்கள். GitLab `git push` மூலம் முடிவைப் பெற்று, அதை சக ஊழியர்களுடன் விவாதிக்க வழி தருகிறது.

## GitLab மற்றும் GitHub: என்ன வேறுபடுகிறது

இரண்டு தளங்களும் Git களஞ்சியங்களைச் சேமித்து குறியீட்டு மதிப்பாய்வை ஆதரிக்கின்றன; அதனால் அடிப்படைத் திறன்கள் அப்படியே பொருந்தும். வேறுபாடுகள் கவனம் மற்றும் வெளியீட்டு மாதிரியில் உள்ளன.

| அளவுகோல் | GitLab | GitHub |
| --- | --- | --- |

| இணைப்புக் கோரிக்கை | Merge request (MR) | Pull request (PR) |

| CI/CD | உள்ளமைந்த GitLab CI/CD, `.gitlab-ci.yml` கோப்பு | GitHub Actions, `.github/workflows/`-இல் கோப்புகள் |

| சொந்தமாக நிறுவுதல் | உங்கள் சேவையகத்தில் இலவச Community Edition | GitHub Enterprise Server, கட்டணத்துடன் |

| தளத்தின் மூலக் குறியீடு | திறந்தது (Community Edition) | மூடியது |

| திட்டங்களை தொகுத்தல் | குழுக்கள் மற்றும் உள் துணைக்குழுக்கள் | நிறுவனங்கள் (Organizations) |

| அதிகம் பயன்படும் இடம் | நிறுவன மேம்பாடு, உள் சேவையகங்கள் | திறந்த மூலத் திட்டங்கள், பொதுத் திட்டங்கள், தனிப்பட்ட போர்ட்ஃபோலியோ |

நடைமுறையில் பல டெவலப்பர்கள் இரண்டையும் பயன்படுத்துகின்றனர்: தனிப்பட்ட திட்டங்களும் போர்ட்ஃபோலியோவும் GitHub-இல், வேலைக்கான குறியீடு நிறுவனத்தின் GitLab-இல். Git கட்டளைகள் இரண்டிலும் ஒன்றே; மாறுவது தொலைதூர களஞ்சியத்தின் முகவரி மட்டுமே.

## gitlab.com அல்லது சொந்த சேவையகம் (self-hosted)

மேகத்திலுள்ள gitlab.com தனிப்பட்ட திட்டங்களுக்கும் சிறிய குழுக்களுக்கும் பொருந்தும்: பதிவு செய்து உடனே களஞ்சியங்களை உருவாக்கலாம். புதுப்பிப்புகளும் காப்புப் பிரதிகளும் கிடைக்கும் தன்மையும் GitLab-இன் பொறுப்பு. இலவசத் திட்டத்தின் வரம்புகள் (உறுப்பினர் எண்ணிக்கை, CI நிமிடங்கள், சேமிப்பிடம்) அவ்வப்போது மாறுகின்றன; எனவே தற்போதைய நிபந்தனைகளை திட்டப் பக்கத்தில் பாருங்கள்.

Self-hosted GitLab-ஐ நிறுவனம் தனது சேவையகத்தில் நிறுவுகிறது: Linux தொகுப்பிலிருந்தோ, Docker-இலோ, Kubernetes-இலோ. குறியீடு உள் பிணையத்தை விட்டு வெளியே போகாது; LDAP மூலம் நிறுவன உள்நுழைவை இணைக்கலாம், கட்டமைப்புக்கான சொந்த runners-ஐ அமைக்கலாம். அதற்குப் பதிலாக, புதுப்பிப்புகளையும் காப்புப் பிரதிகளையும் நிர்வாகிகளே கவனிக்க வேண்டும். டெவலப்பருக்கு வேறுபாடு கிட்டத்தட்ட தெரியாது: முகவரி `gitlab.com` அல்லாமல், எடுத்துக்காட்டாக `gitlab.company.com` ஆக இருக்கும்.

## GitLab-உடன் வேலை செய்ய Git அமைப்பது

முதல் commit-க்கு முன் பெயரையும் மின்னஞ்சலையும் அமையுங்கள்; அவை வரலாற்றில் சேரும், GitLab மின்னஞ்சல் வழியாக commit-களை உங்கள் சுயவிவரத்துடன் இணைக்கும்:

```
git config --global user.name "Ivan Petrov"
git config --global user.email "ivan@example.com"
```

Windows-இல் Git Bash-இல் வேலை செய்வது வசதியானது: அது Git for Windows-உடன் வருகிறது, `ssh-keygen` உள்ளது; அதனால் இந்தக் கட்டுரையின் அனைத்துக் கட்டளைகளும் மாற்றமின்றி வேலை செய்யும். அடுத்து உள்நுழைவு வழியைத் தேர்ந்தெடுங்கள்: token உடன் HTTPS, அல்லது SSH விசை.

### HTTPS வழியாக உள்நுழைவு: personal access token

HTTPS வழியாக Git செயல்பாடுகளுக்கு கணக்குக் கடவுச்சொல்லைப் பயன்படுத்தாதீர்கள்; இரு-காரணி அங்கீகாரம் இயக்கப்பட்டிருந்தால் அது வேலை செய்யாது. அதற்குப் பதிலாக GitLab சுயவிவர அமைப்புகளில் (Access tokens பிரிவு) personal access token ஒன்றை உருவாக்குங்கள். குறியீட்டு வேலைக்கு `read_repository` மற்றும் `write_repository` அனுமதிகள் போதும். காலாவதி காலத்தை அமையுங்கள், உடனே token-ஐ சேமியுங்கள் — அது மீண்டும் காட்டப்படாது.

முதல் push அல்லது clone-இல் Git பயனர்பெயரும் கடவுச்சொல்லும் கேட்கும்: GitLab பயனர்பெயரை உள்ளிடுங்கள், கடவுச்சொல்லுக்குப் பதில் token-ஐ. Credential manager (இது Git for Windows-இல் உள்ளது) அதை நினைவில் வைக்கும்; மீண்டும் உள்ளிட வேண்டியதில்லை.

### SSH விசை வழியாக உள்நுழைவு

தினசரி வேலைக்கு SSH வசதியானது: ஒரு முறை விசையைச் சேர்த்தால் அதன் பின் எதையும் உள்ளிட வேண்டியதில்லை.

```
ssh-keygen -t ed25519 -C "ivan@example.com"
cat ~/.ssh/id_ed25519.pub
```

`.pub` கோப்பின் உள்ளடக்கத்தை (பொது விசை) GitLab சுயவிவர அமைப்புகளில் SSH Keys பிரிவில் ஒட்டுங்கள். இணைப்பைச் சரிபார்க்க:

```
ssh -T git@gitlab.com
Welcome to GitLab, @ivan.petrov!
```

## GitLab-இலிருந்து git clone: களஞ்சியத்தை நகலெடுப்பது எப்படி

திட்டப் பக்கத்தில் இரண்டு முகவரிகளைக் காட்டும் Code பொத்தான் உள்ளது: ஒன்று SSH, மற்றொன்று HTTPS. தேவையானதை நகலெடுத்து `git clone` இயக்குங்கள்:

```
# HTTPS வழியாக
git clone https://gitlab.com/my-group/my-project.git

# SSH வழியாக
git clone git@gitlab.com:my-group/my-project.git
```

GitLab-இல் திட்டப் பாதையில் துணைக்குழுக்கள் இருக்கலாம், எடுத்துக்காட்டாக `gitlab.com/company/backend/api.git`; அது இயல்பானது — முகவரியை முழுமையாக நகலெடுங்கள்.

### Token கொண்டு GitLab-இலிருந்து git clone

கடவுச்சொல்லை உள்ளிட யாரும் இல்லாத scripts மற்றும் சேவையகங்களில், token முகவரிக்குள்ளேயே அனுப்பப்படுகிறது. பயனர்பெயராக உங்கள் GitLab பயனர்பெயர் அல்லது சிறப்புப் பெயர் `oauth2` பயன்படலாம்:

```
git clone https://oauth2:உங்கள்_TOKEN@gitlab.com/my-group/my-project.git
```

கவனிக்கவும்: இந்த முகவரி `.git/config`-இல் சேமிக்கப்படும், அது கட்டளை வரலாற்றிலும் சேரலாம். தானியக்கத்துக்கு, குறைந்த அனுமதிகளும் குறுகிய காலமும் கொண்ட deploy token அல்லது project access token பயன்படுத்துங்கள்; CI-இல் உள்ளமைந்த மாறி `CI_JOB_TOKEN`.

## Git push: GitLab-க்கு குறியீட்டை அனுப்புவது

திட்டம் ஏற்கனவே உள்ளூரில் இருந்தால், GitLab-இல் வெற்றுத் திட்டம் ஒன்றை உருவாக்குங்கள் (README இல்லாமல், கூடுதல் commit வராமல் இருக்க), பின்னர் தொலைதூர களஞ்சியத்தை இணையுங்கள்:

```
git remote add origin git@gitlab.com:my-group/my-project.git
git branch -M main
git push -u origin main
```

`-u` குறி உள்ளூர் கிளையைத் தொலைதூரக் கிளையுடன் இணைக்கிறது; அதன் பின் `git push` மற்றும் `git pull` என்று எழுதினால் போதும். வழக்கமான வேலைச் சுழற்சி வேறு எந்தச் சேவையிலிருந்தும் வேறுபடுவதில்லை:

```
git switch -c feature/login
git add .
git commit -m "உள்நுழைவு படிவத்தைச் சேர்"
git push -u origin feature/login
git pull
```

Tags தனியாக அனுப்பப்படுகின்றன: `git push origin v1.2.0`, அல்லது அனைத்தையும் `git push --tags` மூலம். GitLab-இல் tags Tags பிரிவில் தெரியும்; அவை பெரும்பாலும் வெளியீட்டுக் குழாயைத் தொடங்குகின்றன.

### GitLab-இல் git push-இன் பொதுவான பிழைகள்

- **HTTP Basic: Access denied** — பயனர்பெயர் தவறானது அல்லது token-க்குப் பதில் கடவுச்சொல்லை உள்ளிட்டீர்கள். `write_repository` உரிமையுடன் token உருவாக்கி, பழைய பதிவை credential manager-இலிருந்து நீக்குங்கள்.
- **Permission denied (publickey)** — GitLab உங்கள் SSH விசையை அடையாளம் காணவில்லை. பொது விசை சுயவிவரத்தில் சேர்க்கப்பட்டுள்ளதா என்று பாருங்கள்; `ssh -T git@gitlab.com` இயக்குங்கள்.
- **You are not allowed to push code to protected branches** — கிளை (பொதுவாக `main`) பாதுகாக்கப்பட்டுள்ளது. மாற்றங்களை உங்கள் கிளைக்கு அனுப்பி merge request திறங்கள்.
- **rejected ... (fetch first)** — சேவையகத்தில் உங்களிடம் இல்லாத commit-கள் உள்ளன. `git pull --rebase` இயக்கி மீண்டும் push செய்யுங்கள்.
- **remote: Project not found** — முகவரியில் எழுத்துப் பிழை, அல்லது திட்டத்துக்கு அணுகல் இல்லை; உரிமையாளரிடம் உங்கள் பங்கை உறுதிசெய்யுங்கள்.

## GitLab-இல் Merge request

Merge request என்பது GitHub-இன் pull request-க்கு இணை: உங்கள் கிளையை முதன்மைக் கிளையில் இணைக்கக் கேட்கும் கோரிக்கை. இங்குதான் சக ஊழியர்கள் குறியீட்டு வரிகளில் கருத்து தெரிவிக்கின்றனர், CI சோதனைகள் இயங்குகின்றன, இணைப்பு முடிவு எடுக்கப்படுகிறது. புதிய கிளையை push செய்த பின் GitLab முனையத்தில் MR உருவாக்குவதற்கான இணைப்பைக் காட்டும்; இணைய இடைமுகத்திலும் அதை உருவாக்கும் பரிந்துரை தோன்றும்.

Push options மூலம் கட்டளை வரியிலிருந்தே MR-ஐ உருவாக்கலாம்:

```
git push -o merge_request.create -o merge_request.target=main origin feature/login
```

பொதுவான ஓட்டம்: பணிக்கான கிளை, commit-கள், push, MR, மதிப்பாய்வும் பச்சை நிற குழாயும், பின்னர் merge. இணைக்கும்போது GitLab commit-களை ஒன்றாக்கலாம் (squash) மற்றும் மூலக் கிளையை நீக்கலாம். MR-இல் மோதல் வந்தால், கிளையை உள்ளூரில் புதுப்பிப்பது எளிது: `git pull --rebase origin main` அல்லது `git merge main`; மோதல்களைத் தீர்த்து மீண்டும் push செய்யுங்கள்.

முடியாத வேலையை Draft எனக் குறியுங்கள்: அப்படிப்பட்ட MR தவறுதலாக இணைக்கப்படாது; ஆனால் சக ஊழியர்கள் மாற்றங்களைப் பார்த்து விவாதிக்கலாம்.

## GitLab-இல் CI/CD: .gitlab-ci.yml

GitLab-இன் சிறப்பம்சம் உள்ளமைந்த CI/CD. களஞ்சியத்தின் வேரில் `.gitlab-ci.yml` கோப்பை வைத்தால் போதும்; ஒவ்வொரு push-க்கும் GitLab நிலைகள் (stages) மற்றும் பணிகளால் (jobs) ஆன ஒரு pipeline-ஐ இயக்கும். பணிகளை runners இயக்குகின்றன: gitlab.com-இல் பொதுவான runners உள்ளன; சொந்த சேவையகத்தில் அவற்றைத் தனியாக நிறுவ வேண்டும்.

```
stages:
  - test
  - deploy

test:
  stage: test
  image: python:3.12
  script:
    - pip install -r requirements.txt
    - pytest

deploy:
  stage: deploy
  script:
    - ./deploy.sh
  rules:
    - if: $CI_COMMIT_TAG
```

இங்கு ஒவ்வொரு push-க்கும் சோதனைகள் இயங்கும்; `deploy` பணி ஒரு tag அனுப்பப்படும்போது மட்டுமே இயங்கும்: `git tag v1.0.0` மற்றும் `git push origin v1.0.0`. Pipeline-இன் முடிவுகள் merge request-க்குள்ளேயே தெரியும்; சோதனைகள் தேறும் வரை இணைப்பைத் தடுக்கலாம்.

## GitLab-இல் களஞ்சியத்தை நீக்குவது எப்படி

Git கட்டளைகளால் சேவையகத்திலுள்ள திட்டத்தை நீக்க முடியாது: `git push` கிளைகளையும் tags-ஐயும் மட்டுமே மாற்றும். திட்டத்தை இணைய இடைமுகத்தில் நீக்குங்கள்: திட்ட அமைப்புகள், General பிரிவு, Advanced தொகுதி, திட்டப் பெயரை உறுதிப்படுத்தும் நீக்கு பொத்தான். Owner பங்கு தேவை. உள்ளூர் நகல் அப்படியே இருக்கும்; அது `.git` கொண்ட ஒரு கோப்புறை மட்டுமே.

சேவையகத்தில் எதையும் நீக்காமல் உள்ளூர் களஞ்சியத்தை GitLab-இலிருந்து பிரிக்க வேண்டுமெனில், `git remote remove origin` போதும்.

## GitLab-ஐ எப்போது தேர்ந்தெடுப்பது

- குறியீட்டை வெளி மேகத்துக்கு அனுப்ப முடியாது; உங்களுக்கு சொந்த சேவையகம் தேவை.
- வெளிச் சேவைகள் இல்லாமல், உடனே பயன்படக்கூடிய CI/CD வேண்டும்.
- குழு அடுக்குகளுடன் கூடிய பெரிய நிறுவனம்; உள் துணைக்குழுக்களும் நெகிழ்வான பாத்திரங்களும் பயனுள்ளவை.
- GitLab ஏற்கனவே பயன்படுத்தும் நிறுவனத்தில் நீங்கள் சேர்கிறீர்கள்: அங்கு தேர்வு இல்லை, ஆனால் Git திறன்கள் முழுமையாக மாற்றப்படும்.

தனிப்பட்ட போர்ட்ஃபோலியோவுக்கும் திறந்த மூலத் திட்டங்களுக்கும் பலர் GitHub-ஐத் தேர்ந்தெடுக்கின்றனர்; அதன் சமூகம் பெரியது, திட்டங்களின் தெரிவுநிலையும் அதிகம். ஒரு திட்டத்தை இரண்டு சேவைகளிலும் வைத்திருப்பதற்கு எதுவும் தடையில்லை: ஒரு களஞ்சியத்துக்கு பல remote-கள் இருக்கலாம்.

## சுருக்கம்

GitLab என்பது Git களஞ்சியங்களுக்கான தளம்; merge request வழியாக மதிப்பாய்வு, பணிகள் மற்றும் உள்ளமைந்த CI/CD ஆகியவற்றை வழங்குகிறது; மேகத்திலும் சொந்த சேவையகத்திலும் கிடைக்கிறது. அதனுடன் வேலை செய்வது பழக்கமான கட்டளைகளைக் கொண்டது: token அல்லது SSH விசையுடன் உள்நுழையுங்கள், பின்னர் clone, commit, push, merge request. தொலைதூர களஞ்சியங்களும் குழு வேலைச் சுழற்சிகளும் Git பாடநெறியில் நடைமுறையில் விளக்கப்பட்டுள்ளன.

## FAQ

**GitLab இலவசமா?**

உங்கள் சேவையகத்தில் நிறுவும் Community Edition இலவசம்; gitlab.com-இல் வரம்புகளுடன் கூடிய இலவச Free திட்டம் உண்டு; மேம்பட்ட அம்சங்கள் Premium மற்றும் Ultimate கட்டணத் திட்டங்களில் கிடைக்கும்.

**GitHub-இலிருந்து GitLab-க்கு திட்டத்தை மாற்றலாமா?**

ஆம்; GitLab GitHub-இலிருந்து திட்டங்களை இறக்குமதி செய்யும். வரலாற்றை கைமுறையாகவும் மாற்றலாம்: பழைய முகவரியிலிருந்து git clone --mirror, பின்னர் புதியதற்கு git push --mirror.

**GitLab-க்கென தனிக் கட்டளைகளைக் கற்க வேண்டுமா?**

இல்லை; குறியீட்டுடன் வழக்கமான Git கட்டளைகளால் வேலை செய்யலாம். GitLab இணைய இடைமுகத்தைச் சேர்க்கிறது; தானியக்கத்துக்கு கட்டளை வரி கருவி glab மற்றும் API உள்ளன.

**GitLab Flow மற்றும் Git Flow இடையே வேறுபாடு என்ன?**

GitLab Flow எளிமையானது: feature கிளைகளில் வேலை செய்து main-க்கு merge request; சூழல்களுக்கும் வெளியீடுகளுக்கும் தேவைப்பட்டால் தனிக் கிளைகள் சேர்க்கப்படும்; Git Flow-இன் develop மற்றும் hotfix கிளைகள் தேவையில்லை.


---
Source: Skillaria.Top (https://skillaria.top)
