DEV Community

Mani Kandan
Mani Kandan

Posted on

Pushing Code in GitLab

Introduction

GitLab is a popular platform for hosting Git repositories, enabling developers to collaborate, manage source code, and automate software delivery. If you're new to GitLab, one of the first skills you'll need is learning how to push your local code to a GitLab repository.

Prerequisites
Before getting started, ensure you have:

Git installed on your system
A GitLab account
A project folder containing your code
Access to a GitLab repository

You can verify Git installation using:

git --version
Step 1: Create a Repository in GitLab
Log in to your GitLab account.
Click New Project.
Select Create Blank Project.
Enter a project name and visibility settings.
Click Create Project.

After the repository is created, GitLab will display the repository URL, which you'll need later.

Example:

https://gitlab.com/username/my-project.git
Step 2: Navigate to Your Project Directory

Open a terminal and move to your project folder:

cd my-project
Step 3: Initialize Git Repository

If your project is not already a Git repository, initialize it:

git init

This command creates a hidden .git folder that Git uses to track changes.

Step 4: Add Project Files

Stage all files in your project:

git add .

Alternatively, add a specific file:

git add index.html
Step 5: Commit Your Changes

Create your first commit with a meaningful message:

git commit -m "Initial project setup"

A commit acts as a snapshot of your project at a specific point in time.

Step 6: Connect Local Repository to GitLab

Add the GitLab repository as a remote:

git remote add origin https://gitlab.com/username/my-project.git

Verify the remote configuration:

git remote -v

Expected output:

origin https://gitlab.com/username/my-project.git (fetch)
origin https://gitlab.com/username/my-project.git (push)
Step 7: Set the Main Branch

Rename the current branch to main:

git branch -M main

This aligns your local repository with modern Git conventions.

Step 8: Push Code to GitLab

Push your code to the remote repository:

git push -u origin main

The -u flag sets the upstream branch, allowing future pushes with a simple:

git push
Working with Existing Repositories

If the GitLab repository already exists and contains files, first pull the latest changes:

git pull origin main

Resolve any merge conflicts if necessary, then push your updates:

git push origin main
Using SSH Authentication

For a more secure and convenient workflow, you can use SSH instead of HTTPS.

Generate an SSH Key
ssh-keygen -t ed25519 -C "your-email@example.com"
View Your Public Key
cat ~/.ssh/id_ed25519.pub
Add the Key to GitLab
Copy the public key.
Open GitLab.
Navigate to Preferences → SSH Keys.
Paste the key and save it.
Update Remote URL
git remote set-url origin git@gitlab.com:username/my-project.git

Now push your code:

git push -u origin main
Common Errors and Solutions
Authentication Failed

Cause: Incorrect credentials or expired password.

Solution: Use a Personal Access Token (PAT) instead of your account password when using HTTPS.

Remote Origin Already Exists

Cause: A remote named origin is already configured.

Solution:

git remote remove origin
git remote add origin https://gitlab.com/username/my-project.git
Rejected Push

Cause: The remote repository contains changes not present locally.

Solution:

git pull origin main
git push origin main
Best Practices
Commit frequently with clear messages.
Use feature branches for new development.
Pull changes regularly before pushing.
Review code before committing.
Use SSH keys for secure authentication.
Avoid committing sensitive information such as passwords or API keys.
Conclusion

Pushing code to GitLab is a fundamental skill for modern software development. By initializing a Git repository, staging files, committing changes, and pushing them to a remote GitLab repository, developers can efficiently manage and collaborate on projects. Once your repository is connected, future updates become as simple as running:

git add .
git commit -m "Describe your changes"
git push

Top comments (0)