Skip to content

Latest commit

 

History

History
362 lines (234 loc) · 6.25 KB

readme.md

File metadata and controls

362 lines (234 loc) · 6.25 KB

Getting Started with Source Control

Git Bash Download

Git Extensions for Windows

Git Graph VS Code

Git / Github Essentials

Configuration

Set User and E-Mail

git config --global user.name "Your Name"
git config --global user.email "[email protected]

Unset Credentials

git config --global --unset credential.helper

Configure ignored files

To Configure ignored files add a .gitignore file to the root of your project. A valid .gitignore file can be generated at https://www.gitignore.io/

Basic Git Commands

Init Git:

git init

Get Status

git status

Stage all files:

git add .

Stage a specific file and all TypeScript files:

git add file.txt | *.ts

Commit files:

git commit -m "your checkin comment"

Branching

List Branches:

git branch

List remote branches:

git branch -r

Create Branch:

git branch feature/myfeature

Push new Branch to remote:

git push origin [name_of_your_new_branch]

Switch to Branch:

git checkout [name_of_your_branch]

Note: When switching branches it is always good advice to check the status with git status on a windows machine. When there are changes from other branches on the disk you can clean the branch using git clean -f

Merge Branch:

git merge [branch_to_merge]

Note: You might have to switch to the branch that you might want to merge into befor executing merge

List remote branches:

git fetch origin
git branch -r

Checking out a specific remote branch that does not exist locally:

git checkout -b <designated-local-name> origin/<remote-branch-name>

Checkout specific Commits

Get a spcific Commit:

git checkout <sha1>

sha1:

commits

sha1

Note: This will result in a detached Head.

If you want to delete your changes associated with the detached HEAD:

git checkout master

If you want to keep the detached state save it into a new branch and continue from there:

git branch save-detached-head

Note: You will have to switch to the branch you saved to afterwards

Changing Branches

Saving work befor switching the branch - alternative to stage and commit:

git stash | git stash push

List stashes:

git stash list

Use a stash:

git stash apply | git stash apply stash@{2}

Switch to Branch:

git checkout [name_of_your_branch]

Cleaning up after branch switches - ie to remove untracked files from other branches on local disk:

-n flag is used to perform dry run. -f flag is used to remove untracked files. -fd flag is used to remove untracked files and folders. -fx flag is used to remove untracked and ignored files.

git clean -fd | git clean -f folderpath 

Update a Branch from master / main:

git fetch
git rebase origin/master

Tags

Create Lightweight tag :

git tag -l v1.1.0

Create Annotated tag :

git tag -a v2.0.1 -m "fixed Bug on replaced data layer. do not use v.2.0.0"

List all tags:

git tag

Show a specific tag:

git show v2.0.1

Push tags to Remote:

git push origin v2.0.1 | git push --tags

Delete tag:

git tag -d v2.0.1

Checkout tag:

git checkout 2.0.1

Remotes

A Remote is a GIT Repo on a Git Server, typically in the cloud, like GitHub.

Adding Remotes:

git remote add origin https://github.com/try-git/try_git.git

Pull / Push from / to repository:

git pull / git push

Forking Workflow - Getting Updates for Class Demos

forking-wf

Original Repo could be: https://github.com/ARambazamba/AZ-204 where ARambazamba is the original-owner-github-username and AZ-204 is the reponame

Listing the current Remotes

List the current configured remote repository for your fork.

git remote -v
> origin  https://github.com/your-github-username/reponame.git (fetch)
> origin  https://github.com/your-github-username/reponame.git (push)

Specify a new remote upstream repository that will be synced with the fork.

Adding the Repo of the original owner as Upstream

git remote add upstream https://github.com/original-owner-github-username/reponame.git

Verify the new upstream repository you've specified for your fork.

git remote -v
> origin    https://github.com/your-github-username/reponame.git (fetch)
> origin    https://github.com/your-github-username/reponame.git (push)
> upstream  https://github.com/original-owner-github-username/reponame.git (fetch)
> upstream  https://github.com/original-owner-github-username/reponame.git (push)

Getting Updates

Fetch from Upstream:

 git fetch upstream
 git merge upstream/main
 git push origin main

Working with Submodules

Add a Submodule:

git submodule add https://github.com/ARambazamba/FoodApp FoodApp
git commit -m foodapp-submodule

Updating a Submodule to it's latest commit:

git submodule update --remote --merge

Note: I use submodules to include samples in classes that are used in different classes or to shorten / avoid path problems in devops

Git-flow

GitFlow is a branching model for Git, created by Vincent Driessen. It has attracted a lot of attention because it is very well suited to collaboration and scaling the development team.

Git-flow Intoduction & Cheatsheet

git-flow

Note: Require GIT 2.24.0+ - Check with git --version

Initialize repo for gitflow:

git flow init

Start a new feature:

git flow feature start MYFEATURE

Finish feature:

git flow feature finish MYFEATURE

Publish a feature:

git flow feature publish  MYFEATURE

Start a release:

git flow release start RELEASE

Finish a release:

git flow release finish  RELEASE

Additional Labs & Walkthroughs

Learning Path - Introduction to version control with Git

Learning Path - Manage Source Control (GitHub)