Quick Github Tutorial For Beginners
This is not meant to be an exhaustive tutorial. This does not discuss the concepts of Git that you should know (like working directory, staging area, head). This is a very quick demonstration of how to get started.
Quick Github Tutorial Or How To use Git in Linux
git config --global user.name "amirootyet"
git config --global user.email "amiroot...@gmail.com"
git config --global credential.helper cache
If you use a Proxy Server to connect to the Internet:
git config --global http.proxy http://user:pass@proxyserver:port
After you’ve configured the git global settings, you can check them:
git config --list
git init
git add . #to add all files
OR
git add <filename> #to add a particular file
OR
git add '*.<fileextension>' # to add all files of a specific type
git commit -m "Initial Commit"
git status
Now, we need to push
these changes to the remote location:
git push origin main
Enable SSH Keys for both Personal and Work accounts on Macbook
cat ~/.ssh/config
Config should contain the following. If not, add it in:
Host *
AddKeysToAgent yes
UseKeyChain yes
IdentityFile ~/.ssh/id_rsa
ForwardAgent yes
Generate SSH public-private keypairs to work on git repos as discussed here.
ssh-keygen -t rsa -b 4096 -C "username1@gmail.com"
Save public-private keys as github-<username>
. Set a passphrase that will be used to access the private key.
Register your keys on Github as discussed here. If your organization has SAML SSO, enable SSO on the SSH key as shown here.
vi ~/.ssh/config
Append the following:
#work account
Host github.com-username1
HostName github.com
User git
IdentityFile ~/.ssh/github-username1
IdentitiesOnly yes
#personal account
Host github.com-username2
HostName github.com
User git
IdentityFile ~/.ssh/github-username2
IdentitiesOnly yes
Git clone the remote repo:
git clone git@github.com-username1:username1/reponame.git
If the repo already exists on local, navigate to the directory and check git config:
git config --local -e
Add or append the following:
user]
name = username1
email = username1@gmail.com
Also check the remote URL is in the correct format:
git@github.com-username1:username1/reponame.git
Your local git config file should now look something like this:
General helpful Git commands
To uncommit changes before pushing to remote:
git reset HEAD~1
To create a new branch, checkout to it, add and push content:
git checkout -b "<branchname>"
git add .
git commit -m "<message>"
git push -u origin <branchname>
On MacOS, to remove the .DS_Store
files:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
Also, add the .DS_Store
in the .gitignore
file at the repo’s root.
When git pull
fails because “error: Your local changes to the following files would be overwritten by merge:”, you have an option to discard all local changes (careful!) or to a specific file:
git reset --hard ## discard all changes
git checkout filename ## discard changes to a specific file