This repository has been archived on 2023-07-05. You can view files and clone it, but cannot push or open issues/pull-requests.
notes/Terminal Tips/CLI Tools/Git.md

6.1 KiB
Raw Permalink Blame History

Git

Git is a way to upload your packages onto a version control system of your choice (as in either Gitlab, Github, or other version control site of your choice)

Below are some key commands to know: Here is a fantastic set of instructions for beginners.


Useful CLI instructions:

  • List ALL the git commands you've used so far:
history | grep git
  • Find .git directories in the current working directory, you can use a . instead of a path. This will search in the current directory as well as all subdirectories:
find . -type d -name '.git'
  • Seeing revision history is pretty important. This is able to done through the git-log command.
git log --pretty=format:"%h - %an, %ar : %s"

Git global setup:

git config --global user.name "Shwetha Jayaraj" git config --global user.email "shwetha.jayaraj@uconn.edu" Some components of a bare git clone.


Basics Reference

  • Create a new repository:
git clone git@gitlab.com:shwetha729/coding-tips.git
cd coding-tips
git switch -c main
touch README.md
git add README.md
git commit -m "add README"
git push -u origin main

  • When you have an empty folder to add to git repo 
Git init 
Git add . 
Git status 
Git commit -m your message # commit to local repo
Git remote add origin urlname # add url from repo 
Git push -u origin master # push local content to github

Push an existing folder:

cd existing_folder
git init --initial-branch=main
git remote add origin git@gitlab.com:shwetha729/coding-tips.git
git add .
git commit -m "Initial commit"
git push -u origin main

Example 2: pushing changes from commit into your branch

git push [nameofyournewremote] [url]

Example 3:

Push an existing Git repository:

Example 1:

cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.com:shwetha729/coding-tips.git
git push -u origin --all
git push -u origin --tags

Example 2:

Git remote add origin https://github.com/username/repo.git
Git push -u origin master

Example 3: Forking an existing repo

#  fork the original repo  on top  right corners
git clone  [git url]
git remote -v # syncs forked repo 
git remote add upstream [git clone url]

Example 4: Push changes from your commit into your branch 

git push [nameofyournewremote]  [url]

Branch controls

  • Create a new branch on git:
$ git branch <name_of_your_new_branch>
  • View all branches:
git branch -a
  • Rename just-created branch:
git branch -m <name>
  • Add a new remote for your branch:
git remote add [name_of_your_remote] [name_of_your_new_branch]
  • Delete a branch on your local filesystem:
$ git branch -d [name_of_your_new_branch]

# or to force deletion 

$ git branch -D [name_of_your_new_branch]
  • Delete a branch on github:
$ git push origin :[name_of_your_new_branch]
  • Go to desired branch
git checkout [branchname]
# OR 
#git checkout --
  • go to remote branch
git checkout remotes/name/master

This often leads to the following warning message: Note: switching to 'remotes/name/main'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command.

Example: git switch -c <new-branch-name> Or undo this operation with: `git switch -

Turn off this advice by setting config variable advice.detachedHead to false  HEAD is now at 10b9410 does this do anything?


  • List all remote branches
git remote

Example: Pushing this obsidian onto gitlab

If you're reading this on said gitlab, well this might be a bit meta then:

# To permanently cache the credentials

git config --global credential.helper osxkeychain

# To ignore files that could cause issues across different workspaces

touch .gitignore
echo ".obsidian/cache
.trash/
.DS_Store" > .gitignore

# Making out local ZettelKasten into a local Git Repository

git init
git add .
git commit -m "init"

# Pushing our local repository into our remote repository on GitHub

git remote add origin https://github.com/USER/REPONAME.git
git push -u origin master

SSH things:

  • CREATE new ssh key:

For example, for ED25519:

ssh-keygen -t ed25519 -C "<comment>"

For 2048-bit RSA:

ssh-keygen -t rsa -b 2048 -C "<comment>"

and then

Generating public/private ed25519 key pair. Enter file in which to save the key (/home/user/.ssh/id_ed25519):

press enter twice.

Enter passphrase (empty for no passphrase): Enter same passphrase again:

then enter passphrase.

  • COPY public key to Gitlab account for example (MacOS):
tr -d '\n' < ~/.ssh/id_ed25519.pub | pbcopy

Replace id_ed25519.pub with your filename. For example, use id_rsa.pub for RSA.

Then sign in > top right > Preferences > SSH Keys > paste contents into Key box > type description into Title box > Add Key .

  • VERIFY that you can connect :
ssh -T git@gitlab.com

>>Welcome to GitLab, @shwetha729! 

For more info on SSH, check out here.


Additional sources: