Post

ENG | Uploading project to GitHub

A step-by-step guide on how to initialize a Git repository, add files, commit changes, and push your project to GitHub using the command line interface.

ENG | Uploading project to GitHub

Motivation

If you’re a developer working on a project and need to store your code on a remote repository, GitHub is a popular choice. In this post, we’ll walk through the process of initializing a Git repository, adding files, committing changes, and pushing your project to GitHub using the command line interface.

Steps

  • Create a new repository on Github (Repositories -> New) and select better name than test-repo
    • Possibly add README.md and license.
  • Initialize repository
    1
    2
    
     $ git init
     Initialized empty Git repository in /home/pavel/projects/2023-05-15-test/.git/
    
  • Check status
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    $ git status
    On branch main
    
    No commits yet
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        test/
        junk/
    
    nothing added to commit but untracked files present (use "git add" to track)
    
  • Add files (well, directory inside may and may not be a good idea)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    $ git add test*
    $ git status
    On branch main
    
    No commits yet
    
    Changes to be committed:
      (use "git rm --cached <file>..." to unstage)
          new file:   test/.gitignore
          new file:   test/CMakeLists.txt
          new file:   test/README.md
          new file:   test/main.cpp
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
          junk/
    
  • Commit changes
    1
    2
    3
    4
    5
    6
    7
    
    $ git commit -m "initial commit"
    [main (root-commit) 369bcaf] initial commit
     4 files changed, 502 insertions(+)
     create mode 100644 test/.gitignore
     create mode 100644 test/CMakeLists.txt
     create mode 100644 test/README.md
     create mode 100644 test/main.cpp
    
  • Verify
    1
    2
    3
    4
    5
    6
    
    $ git log
    commit 369bcaf7efc01b3640e09a713a8189db267e8fae (HEAD -> main)
    Author: Pavel Perina <[email protected]>
    Date:   Mon May 15 22:09:23 2023 +0100
    
      initial commit
    
    1
    2
    3
    4
    5
    6
    7
    
    $ git status
    On branch main
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
          junk/
      
    nothing added to commit but untracked files present (use "git add" to track)
    
  • Add remote repository
    1
    
    $ git remote add origin [email protected]:pavel-perina/test-repo
    
  • Push to github
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    $git push -u -f origin main
    The authenticity of host 'github.com (140.82.121.3)' can't be established.
    ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
    This key is not known by any other names.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
    [email protected]: Permission denied (publickey).
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.
    

    Ok. Maybe I don’t have a SSH key on github. Let’s solve it:

    • Go to github
    • Click on profile icon
    • Go to Settings (close to bottom)
    • Go to SSH and GPG keys
    • Click on New SSH key link
    • Fill in some title (My Linux pub key)
    • Go to ~/.ssh on Linux box
    • Find something suitable, such as id_ecdsa.pub
    • Copy content to clipboard and paste content to github page
      1
      2
      3
      4
      5
      
      $ cd ~/.ssh
      $ ls
      ...
      $ cat id_ecdsa.pub
      ecdsa-sha2-nistp256 AAAAE....efPg= pavel@... 
      
  • Try again
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    $ cd ~/projects/2023-05-15-test/
    $ git push
    fatal: The current branch main has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
      git push --set-upstream origin main
    
    To have this happen automatically for branches without a tracking
    upstream, see 'push.autoSetupRemote' in 'git help config'.
    
    $ git push -u -f origin main         
    Enumerating objects: 9, done.
    Counting objects: 100% (9/9), done.
    Delta compression using up to 4 threads
    Compressing objects: 100% (7/7), done.
    Writing objects: 100% (9/9), 4.66 KiB | 1.16 MiB/s, done.
    Total 9 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
    To github.com:pavel-perina/test-repo
     + 4cde543...369bcaf main -> main (forced update)
    branch 'main' set up to track 'origin/main'.
    

Summary

That’s all. It was meant to be brief.

This post is licensed under CC BY 4.0 by the author.