---
creation date: 2024-08-22
modification date: Thursday 22nd August 2024 11:56:21
tags:
---
# Preamble
### Notable Links

## What are we doing?
Learning how to use Github. This will probably be the easiest way to keep files synced between working at home and working on my laptop. This way, I can also just pull files down to really any machine and make things shareable. I also want to keep my neovim config up there in the cloud

## Why are we doing it?
For code based things, transferring to and from the server is annoying. Maybe Git is the answer.
## Who cares?
Me, for now.

# Learning to Use **Github**
## Preliminary Setup
Create a ssh key on the terminal if you don't have one:
```bash
ssh-keygen -t ed25519 -C "dane.sabo@pitt.edu"
```
Copy the contents of this key:
```bash
cat ~/.ssh/id_ed25519.pub
```
Notably, the public key is .pub. Do NOT copy the private key.
Upload this key to GitHub- go to settings>SSH and GPG keys>add the new key
Then add they key to the local SSH agent:
```bash
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed5519
```

## Using an existing repository
```bash
# Cloning a Repository
git clone git@github.com:danesabo/example_repo.git

#Staging and Committing Changes
git add . #adds all files
git commit -m "Commit message here!"

#Push the changes to GitHub
git push origin master #or main
```

## Starting a new repository
```bash
# Navigate to whatever folder repository is in
git init # initialize the repository
git add README.md # This is the top level long form description that'll be read in GitHub
git commit -m "first commit"
git branch -M master # some people use "main"
git remote add origin git@github.com:danesabo/repository.git
git push -u origin master

```

## Working with branches
```bash
#Create a new branch
git branch new-branch

#switch to that branch
git checkout new-branch

#or do both at once
git checkout -b new-branch

#or even if you're in a newer git version
git switch -c new-branch

#push the new branch back to remote
git push -u origin new-branch
#git push (set new pushes to new branch spec) (remote destination) (branch name)
```

## Quirks with GitHub and Obsidian:
If plugins change, git will throw up concerns about the obsidian.json file being different. This can be fixed by resetting the local files and pulling again. This only works because we know there's no other changes between the two sets.
```bash
git fetch --all #pull the files from the server. Can check differences between branches
git reset --hard origin/master
git pull
```