|
Git | GitHub
|
|
| Local repo | |
| git init | Initialize git repository |
| git add . | Track all | git rm --cached file1 | Untrack file1 |
| git status | Check status | git commit -m "Message" | "-am" to bypass stage and commit directly |
| vi file1 | Edit |
| git diff | Check diff before staged |
| git add file1 | Stage changes to commit | git diff --cached | Check diff after staged |
| git restore --staged file1 | Take off from stage and keep editing | git restore file1 | Discard changes and restore as it was. |
| git reset [COMMIT] | This will take us to the specific commit Stage area (Past or Future). Then we can restore our file version from there using 'git restore file1' | git revert [LastCommit] --no-edit | This will undoes the changes made by the [LastCommit]. By default git revert opens the editor to let you modify commit message, so use --no-edit to skip. |
| Config |
| git config --global user.name "your_name" |
| git config --global user.email "your_email" |
| git config --global init.default branch main |
| git config --list |
| Branch | |
| git branch NewBranch | Create a branch |
| git checkout [branch] | Switch branch |
| OR, git checkout -b branch | Create and switch |
| git branch | List branches. '-a' includes remote branches |
| git branch -M NewName | Raname current branch |
| git merge [branch] | Merge branch with the current branch |
| git branch -d [branch] | Delete branch. '-D' for force delete. |
| Remote | |
| git remote add origin [URL] | Link remote repo with Local as 'origin' |
| git remote set-url origin https://[TOKEN]@[URL] | Authenticate remote repo with token |
| git push -u origin | Push changes to remote repo |
| git push origin | pull changes from remote repo |
| git fetch origin | Fetch changes made on remote origin to local metada. To merge that changes in local repo use 'git pull origin' or 'git merge origin/main' |
| git clone [REPO / URL] | Clone / Download a repository onto local machine. |
| git fetch --prune origin | This fetches changes from the remote repo and prunes any stale/deleted branches on the remore. |
| git remote -v | View remote repositories |
| git remote rm [origin] | Remove remote repo name |
| Log & View | |
| git log | git log --oneline | git log -p | git log -2 | git log --grep <keyword> | git reflog | |
| git log --all | List all commits from all branches |
| git show <COMMIT>, <object>, <tag>, or <keyword> | |
| git clean -n -f -x | (-n) check any unnecessary files in current dir. (-f) delete them. (-x) clean .ignore |
| Help | |
| git help COMMAND | Show the command manual |
| git COMMAND -h | Show Options and usage of the Command |
| Other | |
| git tag -a important -m "Message" ID | Tag as important |
| git tag -d important | Delete tag |
| Notes | |
| cat > .gitignore | File names mention inside the .gitignore will not be exposed to staging and remain secret. |
| There're Three different environments: 1. WorkSpace (Working directory) 2. Staging (Index) 3. Repository (Commit) | |
| Methodes to authenticate remote repository: 1. SSH Keys 2. Personal Access Token (PAT) for HTTPs authentication 3. Two-Factor Authenticaiton | |