This document provides an overview of version control systems and Git/GitHub basics. It defines centralized and distributed version control systems, and explains how Git is a distributed system. It then gives instructions for Git configuration, committing files, branching, merging, rebasing, stashing changes, and using GitHub as a remote repository.
Do you know the basics of Git but wonder what all the hype is about? Do you want the ultimate control over your Git history? This tutorial will walk you through the basics of committing changes before diving into the more advanced and "dangerous" Git commands.
Git is an open source, distributed version control system used to track many different projects. You can use it to manage anything from a personal notes directory to a multi-programmer project.
This tutorial provides a short walk through of basic git commands and the Git philosophy to project management. Then we’ll dive into an exploration of the more advanced and “dangerous” Git commands. Watch as we rewrite our repository history, track bugs down to a specific commit, and untangle commits into an LKML-worthy patchset.
Git is a distributed revision control system that is widely used in the software development industry. The presentation was used in a lecture delivered in BITS-Pilani, India. The lecture served as a basic crash course on Git.
First, it sets off with a guide to install and configure git on various platforms.
Then, the basic working concepts of Git are explained.
This is followed by a detailed step-by-step guided demonstration of a sample workflow in Git.
Afterwards, Some auxillary commands that are frequently used are discussed briefly.
Finally, basic concepts of branching and merging are detailed.
The presentation ends with a few possible merge conflicts that occur in Git.
To introduce and motivate some best practice around version control and Git.
Resources:
https://en.wikipedia.org/wiki/Version_control
https://git-scm.com/
https://try.github.io
http://rogerdudler.github.io/git-guide/
http://ohshitgit.com/
https://www.atlassian.com/git/tutorials
https://www.datacamp.com/courses/introduction-to-git-for-data-science
Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
GitHub is a Git repository hosting service, but it adds many of its own features. While Git is a command line tool, GitHub provides a Web-based graphical interface. It also provides access control and several collaboration features, such as a wikis and basic task management tools for every project.
Version Control History and Git BasicsSreedath N S
A 45 minutes presentation slides on Version Control History and Git Basics by
1. Sreedath N S, Devops Engineer, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/sreedathnamangalam
2. Fahad Basheer, Cloud Computing Consultant, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/fahadpv
http://www.zbeanztech.com/
Do you know the basics of Git but wonder what all the hype is about? Do you want the ultimate control over your Git history? This tutorial will walk you through the basics of committing changes before diving into the more advanced and "dangerous" Git commands.
Git is an open source, distributed version control system used to track many different projects. You can use it to manage anything from a personal notes directory to a multi-programmer project.
This tutorial provides a short walk through of basic git commands and the Git philosophy to project management. Then we’ll dive into an exploration of the more advanced and “dangerous” Git commands. Watch as we rewrite our repository history, track bugs down to a specific commit, and untangle commits into an LKML-worthy patchset.
Git is a distributed revision control system that is widely used in the software development industry. The presentation was used in a lecture delivered in BITS-Pilani, India. The lecture served as a basic crash course on Git.
First, it sets off with a guide to install and configure git on various platforms.
Then, the basic working concepts of Git are explained.
This is followed by a detailed step-by-step guided demonstration of a sample workflow in Git.
Afterwards, Some auxillary commands that are frequently used are discussed briefly.
Finally, basic concepts of branching and merging are detailed.
The presentation ends with a few possible merge conflicts that occur in Git.
To introduce and motivate some best practice around version control and Git.
Resources:
https://en.wikipedia.org/wiki/Version_control
https://git-scm.com/
https://try.github.io
http://rogerdudler.github.io/git-guide/
http://ohshitgit.com/
https://www.atlassian.com/git/tutorials
https://www.datacamp.com/courses/introduction-to-git-for-data-science
Two days git training with labs
First day covers git basis and essential commands
Second day covers git additional command with a big lab using a git workflow
GitHub is a Git repository hosting service, but it adds many of its own features. While Git is a command line tool, GitHub provides a Web-based graphical interface. It also provides access control and several collaboration features, such as a wikis and basic task management tools for every project.
Version Control History and Git BasicsSreedath N S
A 45 minutes presentation slides on Version Control History and Git Basics by
1. Sreedath N S, Devops Engineer, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/sreedathnamangalam
2. Fahad Basheer, Cloud Computing Consultant, Zesty Beanz Technologies Pvt. Ltd. http://in.linkedin.com/in/fahadpv
http://www.zbeanztech.com/
Git is an important part of daily programming (especially if you're working with a team) and is widely used in the software industry. Since there are many various commands you can use, mastering Git takes time. But some commands are used more frequently (some daily). So in this post, I will share and explain the most used Git commands that every developer should know. Note: To understand this PDF, you need to know the basics and advances of Git. https://www.9series.com/
By far, the most widely used modern version control system in the world today is Git. Git is a mature, actively maintained open source project originally developed in 2005 by Linus Torvalds, the famous creator of the Linux operating system kernel. A staggering number of software projects rely on Git for version control, including commercial projects as well as open source. Developers who have worked with Git are well represented in the pool of available software development talent and it works well on a wide range of operating systems and IDEs (Integrated Development Environments).
https://www.atlassian.com/git/
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.
The slide contains Git workflow, command line instructions to work with Git, examples of project management over GitHub.
A Beginner's Guide to Git and GitHub, CLI version.
What is Git?
What is Github
Basic commands
Difference between Central and Distributed Version Controlling System
a way to manage files and directories.
track changes over time.
recall previous versions.
source control is subset of VCS.
sharing on multiple computers
Types of vcs:
Local VCS
Centralized VCS
Distributed VCS
Features of git
commands in git
In one of our weekly training, we’ve talked about Git. Here is a quick overview of the main concepts, basic commands and branching strategy, how to work with Git, how to contribute to an OSS project, …
In this slide, I have a fully explanation about what is Git and why use it. I also give a fully explanation about the basic command that mostly use with git.
Git Bash is a command line interface that allows you to interact with Git, a version control system that tracks changes in your code and lets you collaborate with other developers. Git Bash is based on a popular Unix shell called Bash, and it works on Windows operating systems. With Git Bash, you can create and manage Git repositories, stage and commit your code, push and pull from remote servers, create and merge branches, and much more. In this article, I will give you an introduction to Git Bash and show you how to use some basic commands. ¹²³
المصدر: محادثة مع Bing، 29/9/2023
(1) Git bash: Definition, commands, & getting started | Atlassian. https://www.atlassian.com/git/tutorials/git-bash.
(2) An introduction to Git: what it is, and how to use it - freeCodeCamp.org. https://www.freecodecamp.org/news/what-is-git-and-how-to-use-it-c341b049ae61/.
(3) Introduction to Git Bash: A Beginner's Guide to Using the Command Line .... https://marketsplash.com/tutorials/git/git-bash/.
(4) undefined. https://git-scm.com/book/en/v2/Getting-Started-Installing-Git.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
2. Terminology
CVCS / DVCS
What is GIT & what is GITHUB
Quick Start
Version control system
Branches
GIT basics
Comparison in GIT
Branching & Merging
GIT rebase
GIT stashing
3. Git Goals and Objectives
Repository contain: files, history, configuration managed by GIT
Working Directory / Repository
Tree stages of GIT (Working directory, Staging area /pro commit staging
area/,Commit /GIT repository - history/)
Remote repository (GITHUB)
Master branch
4. What you get from VERSION CONTROL SYSTEM
Save you from creating multiple backups of your files
Allow multiple people to work on the same time on file
Track changes & also who have made the changes
Easy to switch back to folder versions as and when required
Make you more productive
5. Version Control is the management of changes to documents, computer program,
large websites and other collection of information
- Centralized Version Control System (CVCS)
- Distributed Version Control System (DVCS)
6. - CVCS uses a central server to store all
files
- It works on a single repository to which
users can directly access a central server
- The central server can be local on the
remote machine directly connected to
each of the programmers workstations
7. - The centralized repository is not locally available
- Since everything is centralized in any case of the central server getting crash or
corrupted will result in losing the entire data of project
8. - In DVCS every contributor has a local
copy or clone of the main repository
- The developer can update their local
repository with new data from the
central server by an operation called
“pull” and affect changes to the main
repository bu an operation called
“push” from their local repository
9. - All operations are very fast because the tool needs to access the HDD only
- Committing new change-set can be done locally without manipulating the data on
the main repository
- If the central server get crashed at any point of the time, the data can be easily
recovered from anyone of the contributor's local repositories
10. The most widely used modern version control system in the world today is Git. Git is a
mature, actively maintained open source project originally developed in 2005 by Linus
Torvalds, the famous creator of the Linux operating system kernel. A staggering number
of software projects rely on Git for version control, including commercial projects as well
as open-source.
source - https://gdgucc.blogspot.com/2017/10/what-is-git.html
Design philosophy:
- Free and open-source
- blazingly fast
- Distributed
- Data assurance
11. We’ve established that Git is a version control system, similar to but better than the
many alternatives available. So, what makes GitHub so special? Git is a command-
line tool, but the center around which all things involving Git revolve is the hub—
GitHub.com—where developers store their projects and network with like-minded
people.
A repository (usually abbreviated to “repo”) is a location where all the files for a
particular project are stored. Each project has its own repo, and you can access it
with a unique URL.
Source - https://www.howtogeek.com/180167/htg-explains-what-is-github-and-what-
do-geeks-use-it-for/
12. - First step is to download GIT from the link below, it is available for all operation
systems:
https://git-scm.com/downloads
- GIT Basic start configuration
$ git config --global user.name “Your Name Here”
$ git config --global user.email “email@example.com”
$ git config --list (show all properties)
$git help <attribute> (example: $git help add)
13. Enter to the folder you want to use for the project and open terminal on it
$git init
Commiting first file
$ git status
$ git add file.txt | $ git add . (add all files you made changes on)
$ git commit –m “message with wich you want to commit the file”
$ git push origin master (explanation after)
If you want to see the changes from certain user
$ git log --author ”name”
15. Verify changes in GIT
$ git diff
Compare staged with repo in GIT
$git diff --staged
Delete file
$git rm file.txt
16. GIT – DVCS is a tool
GITHUB is
- Code hosting platform
- Central repository
- Repository hosting service
To create a central repository:
$ git pull origin master
$ git clone https://github.com/user/repo
$ git push origin master
17. - Branch in GIT is pointer to commit
- To create a new branch we use the following command:
$ git branch <branch_name>
$ git branch development
$ git checkout development (to switch branches)
$ git branch (to check in which branch you are)
18. - Get to the branch you want to merge the changes (for example from development
to master)
$ git checkout master
$ git merge development
$ git push origin master (sync with github)
19. $ git reset HEAD filename
(HEAD - alias for the current branch ex. $git reset master|development filename)
$ git reset HEAD~ filename
(HEAD~ last commit reverted | HEAD~5 delete the last 5 commits from the
history)
The prefered command for many cases is
$ git revert commit_id
You can coppy the commit_id from
$ git log
20. $ git reset HEAD filename
$ git checkout --filename
$git rm –rf directory
(r – recursive, f – force, all in the direcory)
$ git commit –m “message” | $ git push origin master
$ git mv filename new_filename
$ git mv filename new_dir_path
21. Command to verify last commit
$ git log
Get GIT abbrev commit hash
$ git log --abbrev --log
GIT oneline commit
$ git log --oneline --graph --decorate
Logs that have been executed last day or last 5 days
$ git log --since=“5 days ago”
$ git show commit_id
$ git help log
22. GIT alias is a short way to display a results from long command
In order to add an alias we need to add the alias at GIT global config
$ git config --global <shot_command> “long_command”
Example: $ git config global alias.history “log --all --graph --decorate --oneline”
or:
$ nano ~/gitconfig
24. Working directory and staging directory
$ git diff
$ git fiff filename
Compare working directory and repository
$ git diff HEAD (compare working directory with last commit)
$ git diff HEAD filename
Staging area and repository
$ git diff --staged HEAD
$ git diff --staged HEAD filename
Compare commits in GIT
$ git diff commit_it commit_it
$ git diff HEAD HEAD^ (compare last commit and the commit previews last head -
1)
25. Verify branch
$ git branch -a
Switch GIT branches
$ git checkout <branch_name>
Rename branch
$ git branch –m <old_name> <new_name>
Delete branch
$ git branch -d <branch_name>
(before delete branch switch to another)
Merge one branch to another
$ git merge <source>
Example (first move to master):
$ git merge development
26.
27. - GIT merge to create a new “merge commit” in the development branch that ties
together the histories of both branches, giving you a branch structure that looks
like graph
- How this impact:
in this case, the development branch will have an extraneous merge commit
every time you need to incorporate upstream changes. If the master is very
active this can pollute your development branch history.
28. - As an alternative to merging you can rebase the development branch into the
master branch
$ git checkout development_branch
$git rebase master
- This moves the entire development branch to begin on the top of the master
branch, effectively incorporating all of the new commits in the master. Instead of
using merge commit, re-base re-write the project history by creating brand new
commits for each commit in the original branch
- Benefits:
you get much cleaner project history, it also results in the perfectly linear
project history
29. What is GIT Stash?
- When you create a stash, you are saving uncommitted changes so that you can
work on other things without losing your changes.
Example: you are working on a function, but your boss wants you to do something
immediately and you need to change branches and your code is not ready for
commitment and you do not want to lose your work as well… so you stash
$ git stash save “message of what you were doing”
$ git stash list (list the changes made on stash with them id)
In order to work again on the stashed file:
$ git stash apply stash_id (example: stash@{1})
30. When you’re ready to finalize these saved changes, you have two options: apply or
pop.
- Apply will take the stashed changes, apply them to your working directory, and
keep the changes saved as a stash.
$ git stash apply stash@{0}
- Pop will do the exact same thing for the first two steps, but it will permanently
delete the stash.
$ git stash pop (will drag the very first stash on the stash list)
Source - https://dzone.com/articles/learning-git-what-is-stashing
31. - Discard the stashed changes:
$ git stash drop stash@{0}
- Discard all stashed changes:
$ git stash clear