This document provides an overview of Git and BitBucket. It begins with an introduction to source code management systems and describes Git as a decentralized version control system. Popular open source projects that use Git and web-based hosting services are listed. The document then covers Git commands and workflows, including initializing a repository, staging changes, committing, branching and merging. BitBucket is introduced as a code hosting platform that supports both Git and Mercurial repositories.
With these slides we introduce the concept of source control and teach the core features to using Git, GitHub and BitBucket. You can find the accompanying video here. https://youtu.be/lZpNrCgGvuI
With these slides we introduce the concept of source control and teach the core features to using Git, GitHub and BitBucket. You can find the accompanying video here. https://youtu.be/lZpNrCgGvuI
Developing and releasing software in a team setting can be messy. With many developers working on the same code base, we need a workflow that allows a team to develop in parallel and allows for new functionality to be safely integrated into our environments and applications. In order to achieve such a workflow, leveraging a branching strategy is a must. There are, however, many to choose from. In this talk, we'll be discussing Trunk-Based Development, a branching strategy that we leverage extensively here at Nebulaworks.
Key Takeaways:
*Learn about the various benefits that we get from leveraging Trunk-Based Development.
*We will talk about general best practices that should be followed when developing new functionality
*We will be discussing the release process (How and when to leverage Release Candidate Branches and git tags)
*We will walk through the Trunk-Based Development process in a demo where we develop a simple python app!
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
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.
Introduction to Git & GitHub.
Agenda:
- What’s a Version Control System?
- What the heck is Git?
- Some Git commands
- What’s about GitHub?
- Git in Action!
One of the biggest advantages of Git is its branching capabilities. Unlike centralized version control systems, Git branches are cheap and easy to merge. This facilitates the feature branch workflow popular with many Git users.
A Basic Git intro presentation for SVN long timers doing their first steps in Git.
This presentation is meant to clear up most of the basic concepts which cause confusion with developers using Git as if it was an SVN.
GIT Details for people who:
* don't know what version control means
* don't know what distributed version control means
* Used to work on SVN (Subversion)
Developing and releasing software in a team setting can be messy. With many developers working on the same code base, we need a workflow that allows a team to develop in parallel and allows for new functionality to be safely integrated into our environments and applications. In order to achieve such a workflow, leveraging a branching strategy is a must. There are, however, many to choose from. In this talk, we'll be discussing Trunk-Based Development, a branching strategy that we leverage extensively here at Nebulaworks.
Key Takeaways:
*Learn about the various benefits that we get from leveraging Trunk-Based Development.
*We will talk about general best practices that should be followed when developing new functionality
*We will be discussing the release process (How and when to leverage Release Candidate Branches and git tags)
*We will walk through the Trunk-Based Development process in a demo where we develop a simple python app!
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
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.
Introduction to Git & GitHub.
Agenda:
- What’s a Version Control System?
- What the heck is Git?
- Some Git commands
- What’s about GitHub?
- Git in Action!
One of the biggest advantages of Git is its branching capabilities. Unlike centralized version control systems, Git branches are cheap and easy to merge. This facilitates the feature branch workflow popular with many Git users.
A Basic Git intro presentation for SVN long timers doing their first steps in Git.
This presentation is meant to clear up most of the basic concepts which cause confusion with developers using Git as if it was an SVN.
GIT Details for people who:
* don't know what version control means
* don't know what distributed version control means
* Used to work on SVN (Subversion)
FishEye opens your source code repository and helps development teams keep tabs on what's going on using a web interface.
Crucible is a peer code review tool that allows teams to review, edit, comment and record outcomes.
How Atlassian Scales Bitbucket Data Center on AWSAtlassian
Join a couple DevOps gurus for a deep dive into AWS configuration for Bitbucket Data Center and learn how Atlassian keeps our own developers happy with speedy clone times and better availability. Specifically we'll cover:
How Smart Mirrors can provide lightning fast Git access for teams all over the globe.
How to use AWS auto-scaling with Bitbucket Data Center for better performance.
How to provide continuous availability using an HA cluster in multiple AWS zones.
How to start using Git large file support (Git LFS) to dramatically reduce clone and build times.
Products covered:
Bitbucket
Building on the Shoulders of Giants: the Story of Bitbucket PipelinesAtlassian
When the Atlassian Dev Tools team looked to innovate on continuous integration and delivery, we explored many ways to bring the build and deployment pipeline closer to developers and Bitbucket. This led us to think outside the existing product boundaries of Bamboo and build on top of the Bitbucket Connect platform.
James Bryant, a senior designer on the Software Team, will take you through how his team decided to build on top of a platform instead of building out new products. It involves defining a vision, guiding a team with an experience, and testing with customers early and often to build the new Bitbucket Pipelines feature.
You’ll come away from this session with a framework for adopting an experience-driven strategy, and tips to help give your agile teams a vision to build on top of a platform.
Products covered:
Bitbucket, Bamboo
Introduction to Git/Github - A beginner's guideRohit Arora
Introduction to Git/Github - A beginner's guide
Agenda:
Installing Git
Introduction to Version Control
Git Basics
Creating a new local Git repository
Cloning a Git repository
Making use of Git commit history
Reverting files to previous states
Creating a Github Repository
Adding, Committing & Pushing changes
Branching
Merging Branches
Sending Pull Requests
Conflict Resolution
and 3 Exercises
Continuous Integration - Software development lifecycle for Force.com projectsAldo Fernandez
Continuous integration refers to the practice of frequently integrating and testing code, rather than waiting until the end of a project or development cycle. The practice of continuous integration is a well established best practice that has been used with software development across multiple platforms and languages.
Implementing an automated continuous integration system usually involves a source code repository, used to store the code during team development, and a continuous integration tool that polls the repository for changes and automatically builds and deploys the code in a sandbox.
AtlasCamp 2015: Bitbucket: Building kick-ass tools for 2.5M developersAtlassian
Tim Pettersen
With over 2.5 million users, Bitbucket is an exciting platform to integrate with. There is a huge opportunity to integrate static analysis, deployment, testing and monitoring tools into the Bitbucket experience. In this talk, Tim will show off Bitbucket's brand new integration framework and highlight best practices for building scalable, tightly integrated services that developers will love.
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, …
Introduction to Git source control, i will start a simple series as quick start to you for Git, this is only part 1, after finish it you will get the concept behind Git with simple example
Introduction to Git and Github - Google Developer Student Clubs CET, TrivandrumAbhijitNarayan2
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. This will be a beginner friendly session where we will explain to you how Git and Github works and how to use it for your future projects as well!
Source code management and version control are absolutely essential to a successful software and web development project, especially when working with a team of developers. If your development workflow does not include Git, you're doing it wrong! Git it right! Git was first developed in 2005 by Linus Torvalds (yes, THE Linus Torvalds) as a distributed system for managing the development of the Linux kernel. Today, Git is used by companies and organizations large and small. According to the official Git webiste (http://git-scm.com/), Git is used Google, Micorosoft, Facebook, Twitter, and LinkedIn, just to name a few. Even the Joomla CMS and Joomla Platform teams now use Git.
In this presentation, Cory Webb discusses Git and how his company uses Git to manage their web development workflow. He will go over some basic Git commands that every developer should know, as well as cover some popular tools for using Git locally and for hosting Git repositories. He will also open a discussion about how to overcome the limitations of Git, primarily when it comes to managing changes in the database between development and production servers.
GitHub is a web-based hosting service for version control using git. It is mostly used for computer code. It offers all of the distributed version control and source code management (SCM) functionality of Git as well as adding its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project
We will learn how to create repository, pushing, cloning and creating branches. Additionally we will talk about various workflows that are used by teams while collaborating in a project.
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.
1. Git and BitBucket
Medhat Dawoud
/med7atdawoud
/med7atdawoud
9 February 2013
2. This workshop will include
Source Code Management Systems
Web-Based Code Hosting
Popular open source projects using SCM
Intro to Git
Let’s try Git Commands
Bitbucket as a web code server and management tool
9 February 2013
3. Source Code Management System
• It’s a way that we use to store projects’ source
code files in a tree of versions.
• With no deal, all those SCMs creators build them
on the same rules and structure.
• A lot of popular open source projects source
codes are collected together all over the world
using SCM systems.
9 February 2013
5. Web based Code Hosting
• We can use SCMS on our machine locally that
manage the code for you and create versions.
• but you can also host your code on web, this
solution make it very secure and no lose of
data under any circumstances.
9 February 2013
6. Web based Code Hosting Examples
A lot of Web-Based Code Servers provide Free and paid services Like:
9 February 2013
7. Popular projects that use web-based code Hosting
and Source Code Management Systems
Source1: https://git.wiki.kernel.org/index.php/GitProjects
9 February 2013
Source2: https://github.com/popular/starred
8. Popular projects that use web-based code Hosting
and Source Code Management Systems
Source1: https://git.wiki.kernel.org/index.php/GitProjects
9 February 2013
Source2: https://github.com/popular/starred
9. Popular projects that use web-based code Hosting
and Source Code Management Systems
Source1: https://git.wiki.kernel.org/index.php/GitProjects
9 February 2013
Source2: https://github.com/popular/starred
10. Popular projects that use web-based code Hosting
and Source Code Management Systems
Source1: https://git.wiki.kernel.org/index.php/GitProjects
9 February 2013
Source2: https://github.com/popular/starred
11. SCMS
• We approved before when we start that all SCMSs are built on
the same structure without any deal between them.
• Those all are called Source Code Management Systems
(SCMSs).
• Main task of any SCMS is to:
Track changes to files.
Repository / database of changes
Working directory / current state
9 February 2013
12. SCMS Operations
We can sort operations that we can do
with any SCMS into 4 main categories:
Bootstrap (init, checkout, switch branch)
Modify (add, delete, rename, commit)
Information (status, diff, log)
Reference (tag, branch)
9 February 2013
13. Types of SCMS
There are 2 types of SCM systems:
Centralized SCM
Distributed SCM
9 February 2013
15. Centralized SCM
o Examples: Subversion, CVS, etc.
o Everything goes to the server, commit changes to the
sever, checkout the latest revision from the server.
o No direct exchange between developers
o Operations require server, there are some drawbacks:
Single point of failure
Bottleneck
9 February 2013
17. Decentralized SCM
o Examples: Git, Mercurial, Bazaar, etc.
o Each copy of repository is identical and self-sufficient
o No need for a central server, but one may choose to have one
o Developers may directly exchange change sets over Wi-Fi at a
local coffee shop :D
o Workflow :
– Clone
– Pull / fetch
– push
9 February 2013
18. Ok, Let’s Start that workshop now
• Yes, it was just an intro to the Source Code
Management Mechanism and the Web-Based
Code Servers.
• Now to start talking in our session, I packed Git as
our SCM or VCS and BitBucket as a Web-based
Code Server and management tool will be
discussed later.
Are you Ready?
9 February 2013
19. What is Git ?
Decentralized or Destributed Source Code
Management(SCMS).
Superior branching and merging mechanism.
Support various protection devices against
corruption.
Supported by various code servers.
9 February 2013
20. Git History
• 2002
Linus uses BitKeeper to track Linux.
And BK gets Better, and Linux scale better.
• April 6, 2005
BitKeeper drops free license.
Linus write his own SCM, Git.
• April 18, 2005
Git can merge.
• June 16, 2006
Git is officially used to track Linux.
• Feb 14, 2007
Git 1.5.0 is released.
Major usability efforts.
9 February 2013
21. “ Nothing is perfect. Git is just *closer* to
perfect than any other SCM out there ”
- Linus
9 February 2013
22. Git First use
• If you are using Git for the first time, you will need to
download the server into your machine according to
your operation system.
• Just go to: http://git-scm.com/downloads and choose
the suitable download and install it.
9 February 2013
23. Git First use continue ..
• If you are using linux you will find a command that
will install Git from terminal.
• For example if you are using Ubuntu you will write
this command in you terminal:
9 February 2013
24. Git Command line
• Now you have installed Git on your machine and you
can go to terminal or CMD according to you OS and
write any command, for example:
$ git –-version
this command returned the version of Git you have
installed, you should find the result as follow:
9 February 2013
25. Git Commands
• Ok, there is a general structure of the git
command that all commands use as follow:
$ git <options> command <options>
• Git includes approximately 137 commands.
• Actually we don’t use all of them every day, so
I’ll review here the every day use commands
and let you check others.
9 February 2013
26. Git Common commands
Add
status rm
push mv
pull branch
merge checkout
log clone
init commit
diff
9 February 2013
27. Git Help
• For any new command for you and need a brief
documentation for it use this:
$ git <command> -h
• When you need a complete help you should write
the following command and it will open a web
page locally with the full docs for this command:
$ git <command> --help
or
$ git help <command>
9 February 2013
28. Git Bootstrap
• Open the project work space (directory) and
run this command inside it:
$ git init
this will create .git directory
• This directory (.git) include all meta data
about versions and commits, working trees,
changes, all configurations, … .
9 February 2013
29. Git Staging
• Staging means specifying files that you will commit to
the server.
• Additions:
$ git add file #This add a specific file
$ git add . #This add all changed files
• Removal:
$ git rm file #This removes a specific file
• Renames:
$ git mv old new #This renames a specific file
9 February 2013
30. .gitignore file
• You can create a .gitignore file in your project directory
and add files or directories that you need not to add to
the server, examples for unwanted files:
Automatically generated code (e.g. R.java for Android)
Settings folder of editors that is created automatically.
If you are using any dependences on other libraries like in
PHP you can add them to composer.json and ignore them.
Or any other unwanted files.
• So when you use add all files, git will automatically
ignore the list of files you have written in this file.
9 February 2013
31. Git Commit
• Commit means to apply changes of staged files or all files to
the repository locally.
• Commit changes must provided by a message that you explain
in what is the changes in your commit from the last version:
$ git commit –m ”this is the message”
• The above command commit only the staged files but if you
want to commit all files you should use this:
$ git commit -a –m ”this is the message”
• This means that the commit command here in applied on
your machine only ??? …. The answer is yes
9 February 2013
33. Git information
• You can use status:
$ git status
to shows :
• Staged
• Unstaged
• Untracked
• You can use show:
$ git show
that shows the last commit information, changes,
author, and date. It has some more configurations
that customize the result.
9 February 2013
34. Git information
Git show additions:
Just shows stats
$ git show –-stat
Just shows name and status
$ git show -–name-status
9 February 2013
35. Git information
• To review the latest commits or even all commits on
some repository we use log command as follow:
$ git log
• But you can also limit it to review commits in a specific
period or in some branch or last 5 for example:
$ git log -5
or
$ git log -1 master@{yesterday}
or
$ git log --author=medhatdawoud
• There are lots of additions see in docs or help.
9 February 2013
37. References
• References are used to point to commits.
To get the local branches we use:
$ git branch –l
To get the remote branches we use:
$ git branch –r
And to get the local tags we use:
$ git tag -l
9 February 2013
38. References
• Creating new branch to HEAD:
$ git branch name
new branch “name” on HEAD
• Creating new branch to a commit:
$ git branch name commit
new branch “name” on that commit
9 February 2013
39. References
• Switching to branch:
$ git checkout name
• We have option of creating and switching in
the same command:
$ git checkout -b name
• If you are switching to a branch that has
changes, the switching might gives error, then
you should merge with switch:
$ git checkout -m name
9 February 2013
40. Merging
• If your HEAD is referring to a branch and want
to merge it to other branch, simply use the
following command, assume we have A, B
branches,
$ git checkout A
$ git merge B
Assume that we have A, B, C branches and want to merge
them all in one command.
$ git checkout A
$ git merge B C
9 February 2013
41. Cloning
• If you have a remote code server on some host
and want to get that repository on local, you
just want to write this:
$ git clone <remote>
• This will create a directory to the current root,
with the same name of the repository you are
cloning.
9 February 2013
43. What’s Next ?
• Git is already installed into some editors like
eclipse, aptana, … Search for your editor
installation.
• There is a good free book for git, I recommend
it for you to be more efficient in using Git as a
Source Code Management System, check it
from this link: http://progit.org
9 February 2013
44. An other Easy and Fast Solution
• I’ll tell you about another easy solution for
windows users, it’s a git client with great GUI that
makes every thing for you, it’s TortoiseGit
• Simply go to this link, download and install:
http://code.google.com/p/tortoisegit/wiki/Download
• Try it and I will write some more articles about
that later on my blog.
• There are 4 more clients check them on git site.
9 February 2013
45. BitBucket
• BitBucket is a web-based code server and also a
great management tool for software projects.
• On 29 September 2010, Bitbucket was acquired
by VC-funded Atlassian. Initially, Bitbucket only
offered hosting support for Mercurial projects.
On 3 October 2011, Bitbucket officially
announced support for Git hosting.
9 February 2013
46. Why Web-Based Code Hosting?
Not to be confused with a version control
system (or SCM system).
Not a necessity, but good to have for more
effective collaboration
9 February 2013
47. Why BitBucket?
• Bitbucket is completely free if you have a .edu
email address.
• Gives any one any number of repositories,
free for only 5 users, otherwise see the
payment on their site.
• Site: https://bitbucket.org
9 February 2013
49. Repository Page
o Notice these buttons in the right.
o Simple design that gives you only what you want
from a code hosting, no noisy design.
o Notice the menu ( overview, source, commits, pull
requests, issues, wiki, downloads)
This menu has the most important functionality that
bitbucket provide for us.
In the right of the menu is the settings of repository
9 February 2013
50. Let’s get a tour in the site features
Try Demos with
Online Repositories
9 February 2013
51. End of the workshop
Thanks
Medhat Dawoud
www.medhatdawoud.com
/med7atdawoud
/med7atdawoud
9 February 2013