# GitHub Cheat Sheet ## Getting Started ### 1. To check if you already have git installed in your device: In terminal, type: :::info git ::: if you get help options, that means git is installed. ### 2. To install git: #### For Mac :::info brew install git ::: #### For Linux/Unix :::info sudo apt-get install git ::: ### 3. Configure your git Customise your git by setting your name and email :::success git config --global user.name "FirstName LastName" git config --global user.email: "yourlogin@youruni.ac.uk" ::: You can also add your favourite editor (e.g., nano below) :::success git config --global core.editor "nano -w" ::: You can also choose the line endings (below will set line endings to be "\n" ) :::success git config --global core.autocrlf input ::: Now check that all your configurations are correct :::success git config --list ::: # Initialising your repository In your terminal, go to the directory you want to save to git. Example shown below :::info cd PhD/code ::: Now you need to initialise this directory, :::info git init ::: if directory is initialised, then ls -a will show a hidden file named .git # Adding & Commiting your files !![](https://i.imgur.com/riKyLbc.png) On your local machine, for the files you want to send to git you need to: 1. First add them (also known as ``staging'' your files): >For one file :::info git add galaxies.txt ::: >For all files: :::info git add --all ::: 2. Second you need to commit the files: :::info git commit -m " added galaxy ids " ::: # Remote Git Repository ## 1. Create an account on GitHub https://github.com/ ## 2. Generating an ssh-key >**IMPORTANT**, you **need** to generate an **ssh key** to link the local and remote repositories!! In your working directory, type: :::info ssh-keygen ::: Then go to home directory, you do: :::info cd ~ ls -a ::: The latter command should display a hidden directory name .ssh Now go to the .ssh directory: :::info cd .ssh ::: this should display two files: :::warning id_rsa ::: :::warning id_rsa.pub ::: Open the id_rsa.pub file and copy its content, that is the key! To open file, use **cat command** to not miss any characters that may not be displayed when you open file with nano or vim, for example. :::info cat id_rsa.pub ::: ## 3. Adding the key to your remote Git 1- On your GitHub, go to settings by clicking on your avatar: ![avatar](https://i.imgur.com/RFPNVDV.png =x300) 2- Then click on SSH and GPG keys: ![avatar](https://i.imgur.com/2c0exar.png =x300) 3- Add a new key by pasting the content of id_rsa.pub below: ![](https://i.imgur.com/C4yG1OL.png =x200) Now your local and remote gits are connected! woohoo 😃 ## 4. Creating a new repository on GitHub >To create a new repository, click on the "New" green box. ![](https://i.imgur.com/P9TVazl.png) >Name your repository and set it to be either public/private: ![](https://i.imgur.com/wdoyiFk.png =x350) This will provide you with few options to setup your repository. > ![](https://i.imgur.com/8kknibK.png =x200) > Choose the one that says ``**…or push an existing repository from the command line**'' > Paste the command above on terminal in your working directory. For **my case**, this would be: :::info git remote add origin git@github.com:blackhole-girl/My_Cool_Project.git git branch -M main git push -u origin main ::: Now the galaxies.txt file I have added earlier will appear on the remote repository! All done! 🥳 ## 5. Next time you push Now that you already have your local and remote repositories connected, if you made edits to your files and you want them to appear on your remote repository, all you need to do is: :::info git add "galaxies.txt" git commit -m "changed galaxy ids" git push -u origin main ::: Now the new version of galaxies.txt will appear in the remote repository! **Always: add, commit, push** (in that order) >git add: puts the file in the staging area >git commit: updates local git of new changes/files >git push: send these changes/files from local git to remote git # Creating and pushing to a new branch Your main branch should be called "main". If you are collaborating on a project and you can create a branch for each person in the collaboration. Once everyone is happy with the results, you can then merge your branch to appear on the "main" branch. ## 1. To create a new branch: 1. Login on GitHub.com 2. Go to the repository you want to creat an new branch for. 3. Near main, you should be able to see "branches" (as shown below) - click on it. ![](https://i.imgur.com/6qvrftU.png) 4. This will prompt a list of your branches, and also gives you the option to delete them, or add new branches. To create a new branch click on the "new branch" buttom in green as shown below ![](https://i.imgur.com/iyqWT70.png) 5. Name your branch. I personally name it after the person who will be working on it. E.g. Houda for my own branch ## 2. Pushing to a new branch 1. On terminal, go to the directory that is connected to this repository. For me, this would be: :::info cd PhD/code ::: 3. Get the list of your branches in this directory by using the following command: :::info git branch -a ::: The latter command should return: :::warning main remotes/origin/main ::: 2. Switch to the new branch (my branch is named Houda) :::info git switch -c Houda ::: 3. Now add, commit your files as you normally do :::info git add "new_file.txt" git commit -m "adding a new file" ::: 3. To push your files to the new branch **for the first time**: :::info git push --set-upstream origin Houda ::: (where Houda is the name of my new branch) You **only have to add** --set-upstream origin when you push for the **first time** to a new branch. After this a simple: :::info git pull origin main ::: should work for your branch. ## 3. RESET your git commits: Sometimes, it may happen that you want to un-stage your files (ie remove them from the staging area). In this case, use the following command: :::info git reset --soft HEAD~1 ::: To check the status of your git :::info git status ::: This will show you all the changes that need to be commited ## 4. Merging: TBC # Cloning someone's repository TBC