Git and GitHub
GitHub- A cloud platform used for collaborating that makes use of git.
Features of GitHub: Issues, Discussions, Pull requests, Notifications, Labels, Actions, Forks, Projects.
Git- Allows people to contribute to projects with the use of a distributed version control system (DVCS).
In its most basic form git is a content tracker
Basic Git Commands
- 
git init- Initialized an existing git repository or creates an empty git repository.
- 
git Status- Displays the status of the working tree. It could inform changes to be committed, changes not staged for commit, untracked files or if the tree is clean.
- 
git add- Add file contents to the index/working tree.
- 
git commit- Record changes to the repository
- 
git log- Displays commit logs history for the current repository.
Branches
Branch- Git branches are a reference to a snapshot of your changes. By default git initializes with the branch name of main or master.
- 
git branchcommand can also show the list of existing branches for a repository, create new branches or delete existing ones.
List
- The current selected branch in the screenshot bellow is masterthat's why it has an asterisk by its name and its color is green.  
Create
- Creates a new branch based of the selected branch named b1.  
List
- Lists two branches from the repo.
  
HEAD
- The HEAD of the current project is a reference to the selected branch that is - refs/heads/master.
- git switch- Allows one to switch the selected branch to an existing branch.
- Now the HEAD of the branch is - refs/heads/b1.
- git checkout- Also allows one to switch the selected branch to an existing branch o create new branches.
- Now the HEAD of the branch is back to refs/heads/master.
Basic Git Knowledge
Repository- A project that may contain files and folders with versioning.
Commit- represents a change with an assigned a unique ID to 1 or many files.
Pull Request- Responsible for alerting that a commit is ready for merging between branches.
Pull- The git pull command retrieves all base branch commits that hasn't been applied to the current branch.
Cloning and forking
Cloning a Repository- Represents a copy of the repository and its history to a machine.
Forking a Repository- Represents a copy of a repository in a GitHub account.
Merging
Merge- Allows one to adds the changes in the pull request and branch into the target branch.
- Lets say you have two branches master and b1 with the same ReadMe.txt file and different content on them. Lets assume you want the content in the - b1branch to merge into the- masterbranch. To start the merge you can switch to the master then run the following command.
- git merge b1
- As you can see from the screenshot above since the content differs there is a merge conflict that needs to be resolved. 
- Now you can resolve the merge conflict in the ReadMe.txt file then add and commit the merged file into the - masterbranch.
Merge Conflict- Occurs when a merge is attempted and changes to the same line of code from parallels changes.
Resolving Merge Conflicts- Git can generate a temporary file that contains differences from each branch. One can manually select what should or shouldn't be merged.
Preventing Merge Conflicts- pull updates frequently and keep branches close to base.
Rebasing
- Lets say you have two branches master and b1 with the same ReadMe.txt file and different content on them as seen in the figure bellow.
- The rebase command such as rebase masterchanges the base of the command to move b1 to the end of master as displayed in the image bellow:
 
 
              












 
    
Top comments (0)