Git - Simple Workflow


A Git Workflow is a recipe or recommendation for how to use Git to accomplish work in a consistent and productive manner. Git workflows encourage users to leverage Git effectively and consistently. Git offers a lot of flexibility in how users manage changes. Given Git's focus on flexibility, there is no standardized process on how to interact with Git. When working with a team on a Git managed project, it’s important to make sure the team is all in agreement on how the flow of changes will be applied. To ensure the team is on the same page, an agreed upon Git workflow should be developed or selected. There are several publicized Git workflows that may be a good fit for your team. 1

For a small agile team, adapting a simple workflow is the best option; the following is an overview of a simple workflow with references to more detailed discussions. "Simple Git workflow is simple" details a seven-step process, with two main points.

  • master is always production-like and deployable
  • rebase during feature development, explicit (non fast-forward) merge when done

The seven steps are as follows:

  1. Start by pulling down the latest changes from master
  2. Branch off to isolate the feature or bug-fix work in a branch
  3. Now you can work on the feature
  4. To keep your feature branch fresh and up to date with the latest changes in master, use rebase
  5. When ready for feedback push your branch remotely and create a pull request
  6. Perform a final rebase cleanup after the pull request has been approved
  7. When development is complete record an explicit merge

Steps 5 and 6 facilitate a Code Review Process, "statistics prove that peer code review is one of the most effective ways to improve software quality by reducing defects upstream", but this a part of another discussion.


The gitignore file is an essential part of a Git repository.

The gitignore file is an essential part of a Git repository. Various files should not be deployed to a production environment or shared between development environments. "A gitignore file specifies intentionally untracked files that Git should ignore. Files already tracked by Git are not affected." (https://git-scm.com/docs/gitignore) There are standard templates for IDE's, such as JetBrains, VSCode, and Sublime, there are also templates for CMS/Frameworks, such as Django, Drupal, WordPress, and Larval. gitignore.io provides a command line interface to include various templates into a .gitignore file, https://docs.gitignore.io/install/command-line.

For Example:

gi java,python >> .gitignore

Amazon Web Services (AWS) Administration via CLI

"The AWS Command Line Interface (CLI) is a unified tool to manage your AWS services. With just one tool to download and configure, you can control multiple AWS services from the command line and automate them through scripts."

Installing Chocolatey and AWS CLI

"Chocolatey - Software Management Automation"

  1. Launch PowerShell as Administrator
  2. PS > Set-ExecutionPolicy Bypass -Scope Process -Force; iex New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'
  3. Close and Reopen PowerShell as Administrator
  4. PS > choco install awscli


Quick How to Connect to Office 365 via PowerShell

How-To create a remote PowerShell session to your Exchange Online organization

  1. Open Windows PowerShell as Administrator
  2. PS > Set-ExecutionPolicy RemoteSigned
  3. PS > $UserCredential = Get-Credential
  4. PS > $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
  5. PS > Import-PSSession $Session -DisableNameChecking
  6. PS > Connect-MsolService –Credential $UserCredential
  7. PS > Connect-AzureAD –Credential $UserCredential

"Be sure to disconnect the remote PowerShell session when you're finished. If you close the Windows PowerShell window without disconnecting the session, you could use up all the remote PowerShell sessions available to you, and you'll need to wait for the sessions to expire. To disconnect the remote PowerShell session, run the following command."

  1. PS > Remove-PSSession $Session


Microsoft Office 365 Administration with PowerShell

As a Microsoft Office 365 Global Administrator, PowerShell and Git are the necessary tools for effective management. The following is a quick guide for installing the Office 365 and Azure PowerShell modules and Git.

Manage Office 365 with Office 365 PowerShell

"With the Microsoft 365 admin center, you can not only manage your Office 365 user accounts and licenses, but you can also manage your Office 365 server products: Exchange, Skype for Business Online, and SharePoint Online. However, you can also manage these elements with Office 365 PowerShell commands, taking advantage of a command-line and scripting language environment for speed, automation, and additional capability."

Install the required software:

  1. Launch PowerShell as Administrator
  2. PS > Install-Module -Name AzureAD
  3. Install - Microsoft Online Services Sign-In Assistant for IT Professionals RTW - https://www.microsoft.com/en-us/download/details.aspx?id=41950
  4. PS > Install-Module MSOnline

Manage PowerShell Scripts with Git

"Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike."

Installing Chocolatey and Git:
"Chocolatey - Software Management Automation"

  1. Launch PowerShell as Administrator
  2. PS > Set-ExecutionPolicy Bypass -Scope Process -Force; iex New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'
  3. Close and Reopen PowerShell as Administrator
  4. PS > choco install git


General documentation writing concepts, including structure, mechanics and language.


  • Descriptive Title – The title should be descriptive and include common search terms based on the subject of the document.
  • Introduction – A summary of the procedure, including context of the procedure, a high level purpose of the process and the technology involved.
  • Prerequisites – What needs to be in place before starting the procedure? What is needed to allow the procedure to be completed without disrupting the flow of the procedure?
  • Procedure – Document all steps needed to complete the procedure.


Mechanics can help with the readers’ understanding of the document.

  • Screenshots – Screens provide visual ques and context for steps of the process. Use tight screenshots, only including the part of the screen that is focus of the step or process. Do not capture the whole screen.
  • Related Assets – If a step or process is related to another asset (document, configuration, password, user, etc.) include a link to that other asset. This provides both context to the process and allows for quick access to the other asset. Relationships are bi-directional, meaning that a user can move between assets, from a process to a configuration, or from a configuration to a related process. For example, Creating an Active Directory User, linking the steps of the process to an organization AD server, provides information on where to create the user, and when viewing a server knowledge of what services / functions that server provides.
  • Bold Text – Use Bold Text to form onscreen buttons or text to help differentiate them from the rest of the text in a given step or procedure. This allows for text to be skimmed, and a user can quickly find links, text, or buttons that are needed for a process.
  • Italicized Text – Use Italicized Text for examples to also help differentiate them from the rest of the text.


  • Audience – Who will be reading the document? Knowing your audience will help determine if and what jargon, acronyms or slang can / should be used.
  • Assumptions – Document assumptions should be added to the Prerequisites section of the document.
  • Brief – Keeps the steps short, clear and precise.
  • Avoid Time-Sensitive Information – Use job roles instead of an individual’s name, for example.


Chocolatey Package Manager for Windows

Chocolatey - Package Manager for Windows

“Chocolatey is a package manager for Windows (like apt-get or yum but for Windows). It was designed to be a decentralized framework for quickly installing applications and tools that you need. It is built on the NuGet infrastructure currently using PowerShell as its focus for delivering packages from the distros to your door, err computer.” - https://chocolatey.org/about

Chocolatey provides an easy to use process to install common applications. For Microsoft Windows System Administrators, it is a tool to install applications used on a daily basis, such as Git, Python 2 and 3, Java JRE, Notepad++, Putty, Sysinternals and FileZilla.


  • Windows 7+ / Windows Server 2003+
  • PowerShell v2+
  • .NET Framework 4+ (the installation will attempt to install .NET 4.0 if you do not have it installed)

Installing Chocolatey with PowerShell

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Git - Version Control

“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.” - https://git-scm.com/

Git is needed to access countless public PowerShell and Python repositories on (Microsoft) GitHub. Git is used to manage Infrastructure-as-Code scripts and configuration files for both cloud and on-prem systems, for example Amazon Web Services (AWS), Google Cloud Platform (GCP), Microsoft Azure, Microsoft Office 365, Windows PowerShell Desired State Configuration, etc. Git is must have in any System Administrator’s toolbox.

Installing Git with Chocolatey

choco install git

Python - Programming Language

“Python is a programming language that lets you work quickly and integrate systems more effectively.” - https://www.python.org/

Python is a general purpose programming language that can be used by System Administrators to manage cloud services, such as Amazon Web Services (AWS) and Google Cloud Platform (GCP).

Installing Python with Chocolatey

Python 2:
choco install python2
Python 3:
choco install python


"The Sysinternals Troubleshooting Utilities have been rolled up into a single suite of tools.
This file contains the individual troubleshooting tools and help files.
It does not contain non-troubleshooting tools like the BSOD Screen Saver or NotMyFault." - https://chocolatey.org/packages/sysinternals

Installing Sysinternals with Chocolatey

choco install sysinternals

Azure CLI

“The Azure CLI 2.0 is a command-line tool providing a great experience for managing Azure resources. The CLI is designed to make scripting easy, flexibly query data, support long-running operations as non-blocking processes, and more.” - https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest

Installing Azure CLI with Chocolatey

choco install azure-cli

Azure PowerShell

“Azure PowerShell provides a set of cmdlets that use the Azure Resource Manager model for managing your Azure resources.” - https://docs.microsoft.com/en-us/powershell/azure/overview?view=azurermps-6.7.0

Installing Azure PowerShell with Chocolatey

choco install azurepowershell

Chocolatey makes installing these and other System Administrator tools easy.

Monitoring Amazon Web Services (AWS) - AWS CloudTrail

Collect, manage, and analyze audit logs of events that could help detect, understand, or recover from an attack.” (https://www.cisecurity.org/controls/maintenance-monitoring-and-analysis-of-audit-logs/)

CIS Control 6: Maintenance, Monitoring, and Analysis of Audit Logs

"Deficiencies in security logging and analysis allow attackers to hide their location, malicious software, and activities on victim machines. Even if the victims know that their systems have been compromised, without protected and complete logging records they are blind to the details of the attack and to subsequent actions taken by the attackers. Without solid audit logs, an attack may go unnoticed indefinitely and the particular damages done may be irreversible." (https://www.cisecurity.org/controls/maintenance-monitoring-and-analysis-of-audit-logs/)

"Sometimes logging records are the only evidence of a successful attack. Many organizations keep audit records for compliance purposes, but attackers rely on the fact that such organizations rarely look at the audit logs, and they do not know that their systems have been compromised. Because of poor or nonexistent log analysis processes, attackers sometimes control victim machines for months or years without anyone in the target organization knowing, even though the evidence of the attack has been recorded in unexamined log files." (https://www.cisecurity.org/controls/maintenance-monitoring-and-analysis-of-audit-logs/)


“AWS CloudTrail is a service that enables governance, compliance, operational auditing, and risk auditing of your AWS account. With CloudTrail, you can log, continuously monitor, and retain account activity related to actions across your AWS infrastructure. CloudTrail provides event history of your AWS account activity, including actions taken through the AWS Management Console, AWS SDKs, command line tools, and other AWS services. This event history simplifies security analysis, resource change tracking, and troubleshooting.” (https://aws.amazon.com/cloudtrail/)


Creating a trail for all AWS regions, storing the logs in AWS Simple Storage Service (S3) and encrypting the logs using AWS Key Management Service (KMS).


  • An AWS Account
  • An AWS user, preferably not the Root User, with access to AWS CloudTrail, S3, KMS, etc.


Creating a Trail - https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html


The NIST Definition of Cloud Computing

"Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model is composed of five essential characteristics, three service models, and four deployment models." - https://csrc.nist.gov/publications/detail/sp/800-145/final

A Manifesto for 21st-Century IT

"A Manifesto for 21st-Century IT - So what are the essential characteristics of this new kind of IT? Whatever we call it, whether “21st-Century”, “Post-Industrial”, or “Adaptive”, what differentiates it from current IT practice..." - http://blog.ingineering.it/post/39385342347/21st-century-it-manifesto

Numerous blogs have described how Barack Obama’s IT team dramatically outperformed Romney’s team during the 2012 Presidential election. Obama’s team delivered greater quality, better functionality, and superior results for the campaign at significantly lower cost. They did it using cutting-edge tools and techniques such as public cloud computing, DevOps, gameday testing, and open source.

The Obama IT team’s methodology is reminiscent of those used by 21st-century digital properties like Netflix and Facebook. Detractors have dismissed success stories from these companies as only applying to “non-mission-critical entertainment” applications. It would be hard, though, to find a more-mission critical situation than a presidential election. This year’s campaign invested a billion dollars to decide which single person would have unparalleled influence on the state of the U.S. and the world for the next four years. The election also provided a rare public opportunity to observe a bake-off between current-generation and next-generation approaches to similar IT problems. For these reasons, I think we may look back at the 2012 election as the seismic moment where next-generation IT moved out of its niche and proved itself in a major way.

So what are the essential characteristics of this new kind of IT? Whatever we call it, whether “21st-Century”, “Post-Industrial”, or “Adaptive”, what differentiates it from current IT practice as epitomized by the Romney campaign? I find myself answering this question in terms of not-entirely-binary value choices, along the lines of the Agile Manifesto. I offer a strawman set of statements, and invite others to help refine it:

1. We value resiliency over stability: since both external environments and internal structures for accomplishing things are complex and ever-shifting, failure is “always around the corner”. It should be be treated as just another expected event rather than as an exception

2. We value minimizing Mean Time To Repair (MTTR) over maximixing Mean Time Between Failures (MTBF): the inevitability of failure makes trying to maximize MTBF a futile exercise. Instead the focus should be on maximizing one’s ability to repair failures. The dynamic nature of the market means that even working applications quickly fail to match shifting requirements. Not only operations but also development becomes an exercise in minimizing MTTR.

3. We value elasticity over planning: Static planning produces solutions that are brittle when forced to change. Elasticity treats unpredictability as the plan.

4. We value lightweight tools over comprehensive solutions: the more global, comprehensive, and tightly structured things are, the harder they are to adapt, change, or repair.

5. We value loose coupling over coordination: the more complicated a situation is, the more overhead is required to coordinate it, and the more fragile a coordination solution becomes. Adaptability favors figuring out how to enable solution components to move independently from each other, while coordinating as needed.

6. We value continuous innovation over best practices: the traditional approach to defining, encoding, and propagating best practices can never keep up with constant change. Instead, innovation itself should be a continuous practice.

7. We value diversity over monoculture: forced adherence to single sets of tools and practices reduces opportunities for learning, change, and innovation, while simultaneously slowing selection, implementation, and propagation of those tools and practices.

8. We value open source communities over hierarchical organizations: the open source model offers a mechanism for reconciling apparently conflicting needs for coherency and flexibility.

9. We value unity of purpose over separation and specialization: providing service to customers is the overriding purpose for all employees, regardless of their role or location in an org chart. New functionality, the quality of that functionality, its operability, and its communication to customers are all intrinsically linked, and so should be the people, processes, and tools that deliver them.

  • «
  • 1 (current)
  • 2


Linux Command Line and Shell Scripting Bible Linux Command Line and Shell Scripting Bible - Linux Command Line and Shell Scripting Bible is your essential Linux guide. With detailed instruction and abundant examples, this book teaches you how to bypass the graphical interface and communicate directly with your computer, saving time and expanding capability.

Linux Bible Linux Bible - Linux continues to be an excellent, low-cost alternative to expensive operating systems. Whether you're new to Linux or need a reliable update and reference, this is an excellent resource. Veteran bestselling author Christopher Negus provides a complete tutorial packed with major updates, revisions, and hands-on exercises so that you can confidently start using Linux today.

Learning Python Learning Python - Portable, powerful, and a breeze to use, Python is the popular open source object-oriented programming language used for both standalone programs and scripting applications.

Modern PHP: New Features and Good Practices Modern PHP: New Features and Good Practices - PHP is experiencing a renaissance, though it may be difficult to tell with all of the outdated PHP tutorials online. With this practical guide, you'll learn how PHP has become a full-featured, mature language with object-orientation, namespaces, and a growing collection of reusable component libraries.