First thing first. Create an account and log in to GitHub [Link].
Enter Settings > SSH and GPG Keys > Add SSH Key.
Give a meaningful name and paste your SSH Public Key.
Create a New Repository. It can be public or private.
It is always good to Add a README.md file.
Add description and instructions about this repo in the README.md file and Save.
Then click on DOWNLOAD CODE, select SSH, and copy the URL:
On your Linux terminal, where you have the Private Key that matches with the uploaded Public Key issue the command to download the repository.
git clone [email protected]:user/private.git
Pulling changes from remote to local:
git pull git pull --verbose
It is important to give Git your identification in order to be able to make changes to your repositories:
git config --global user.email "Your E-Mail" git config --global user.name "Your Name" cat ~/.gitconfig
Or for setting user configuration to a repository only:
git config user.email "Your E-Mail" git config user.name "Your Name"
Modify the text in the README.md file you pulled from the repository and Save.
Check the status of the online repository against the local pulled repository:
git status
Output:
... modified: README.md ...
Check what is different by issuing:
git diff git diff --staged git diff --staged README.md git diff --cached README.md git diff file1.txt file2.txt git diff COMMIT1-ID COMMIT2-ID git --no-pager diff COMMIT1-ID COMMIT2-ID
Commit and push the modification to the online repository:
git add README.md git commit -m "message about the update" git commit --amend -m "Updating message for the previous commit" git add anotherFile.txt git commit --amend --no-edit git push
Remove one file or all files from the stage:
git reset README.md git reset
Check if the updates were done on GitHub.
To create a repository locally first create a folder and change into it:
git init git remote add origin [email protected]:user/private2.git git remote -v git push -u origin master git push -u origin branchName
Check what branch you are in:
git branch
List all branches including remote ones:
git branch -a
Create a branch.
git branch firstBranch
Create a branch and switch to it:
git checkout -b firstBranch
To make the first push to the new branch issue:
git push --set-upstream origin firstBranch
Note: –set-upstream is the same as -u used previously.
Eventually, to delete the beach locally (safe way):
git branch -d firstBranch
Force deleting a local branch and losing all changes of the branch:
git branch -D frstBranch
Pushing the branch deletion to remote:
git push origin --delete firstBranch
Show the differences between the current branch to another.
git diff firstBranch
Then merge the branch’s final version to the master:
git merge firstBranch
Switch to another branch.
git checkout master
Renaming or moving files:
git mv fileName.txt fileNewName.txt git mv dir1/fileName dir2/
To list all of the commits:
git log git log -p git log --all --graph --oneline --decorate
View one specific commit:
git show b82ed4bb1a7dbe3ce291af17e73721dbe0c40011 git show b82ed4
Discard not committed changes to a file:
git checkout -- fileName
Revert last changes (creates a new commit to invert changes):
git revert HEAD
Undo last changes:
git reset HEAD
To revert the changes of a specific commit:
git reset 79645cdce5ef42595fee98306b9644c93f098e55
Or
git reset --hard 79645cdce5ef42595fee98306b9644c93f098e55
Put all your changes aside to work on another issue in the original code:
git stash
List all code changes you have stashed:
git stash list
Show what is in the stash:
git stash show
To get back the changes put aside:
git stash apply
Search for string through all history of commits:
git log -S 'text' --source --all
Searching with a regular expression:
git log -G "regex expression" --source --all
Squash all commits in one (use with caution):
git rebase --root -i
BONUS
Use Sandfly’s SSH Hunter to audit SSH keys. Unfortunately, it is not open source but this agent-less tool might give precious information to visualize what the keys present in the system and how they are being used (or misused), orphan, or unauthorized keys [Link].
Create your own Private Git Server [Link].