GitHub is so hot right now I know you have heard of it and you may even have your own account there. But we are finding GitHub to be of use in ways far more than we expected it to be and think it may disrupt (in a good way) many business processes that it was not meant to disrupt. So even if your duties do not require you to use GitHub we suggest you stay up to speed on the functionality of this new system.
Doing that also requires at least a basic understanding of GIT. The two are related. Think of GIT as version control on your computer and GitHub as version control on the web.
What is Git?
Git is a software source code version control system. It records changes to a file (or sets of files) over time so specific versions can be recalled later. Git is free open source software that runs on most computers. It is designed to be used in a distributed way and can handle large or small projects and serve large or small teams of coders. Git is the most popular implementation of version control in use. It helps you store things in a local repository (call it a “repo”) on your computer.
One of the reason GIT came to dominate the version control field is its branching model and ease of creating, merging and recovering software code files. Developers can create a new branch of code, try out some ideas, decide to keep some ideas (by “committing” them) or discard them or just leave them around till later. GIT supports many different roles on development teams and it does so in ways that reduces error and makes continuous improvement easy.
Since GIT allows for distributed coding, large teams of coders can work together on projects in ways that do not require a single coder to “check out” the code for modification. Instead of checking out the code in a way that no one else can touch it, you clone it. GIT supports many ways for teams to manage this distributed process so chaos is not an issue.
It is very easy to download and learn and run GIT. To do so, just visit the website at http://git-scm.com/downloads
After you download the right version of GIT, open your command line or terminal window and type “git help -a” for a list of commands. Type “git help -g” for a list of concept guides.
If you are interested in really learning how GIT and GitHub work, create a user name and tell GIT your email address of choice, and remember those for our discussion below on GitHub and we will link your computer to GitHub. here are two commands to enter:
git config –global user.name “enter a user name”
git config –global user.email “this-is-your@emailaddress.com”
You can certainly dive deeper into GIT now, but I’d recommend holding off till you learn more about GitHub so you can see the power of these two systems together.
What is GitHub?
GitHub is a web-based platform designed to support software development projects that use the GIT revision control system. GitHub’s leaders describe it as a “social coding” site. GitHub can support single programmers/hobbyists to collegial collective teams to very large development efforts. GitHub provides collaborative tools (including wikis, checklists, task management capabilities, feeds, followers, discussion capabilities, pastebin-like sharing) that go far beyond just version control. Although developers are the core users, increasingly GitHub is also being used to manage versions on documents and to share data for analysis. It is also being used to manage creative projects.
When a person creates a GitHub account they also have an ability to add a bio and other features on themselves and to not only store their own project code but to “fork” code from others that have been shared. This copies a repository from one account to the other. If you make changes to that that you want to share back, you can send a “pull request” and the leader of the project can pull the changes in and evaluate them. They can then be merged back in. As this is done, GitHub tracks the developers who are making contributions that get accepted. This shows up on their bio page and is a way of helping others assess that developers credibility. The community will see who the contributors are.
GitHub also provides private capabilities, and those private capabilities can be used by broad, distributed teams.
With that as an introduction, if you have not signed up for an account on GitHub yet you should do so now. It is easy. Just visit http://github.com
Remember to use the same e-mail address you used when configuring GIT on your local system, this will make it easy to connect your local repositories to GitHub.
When you sign up, you can start with the free plan and that is certainly good enough for learning. After signup you will be on a page with some great tutorials. Read through them. Also click on your screen name in the top right corner of the page. View your profile and edit it so others can see a bit more about you.
When you want to create a repository, you can either fork someone else’s or you can create one from scratch. Creating one from scratch is pretty easy. Just hit the “create repository” button and fill in the blanks. Select the box that initializes the repo with a “readme” file and the description you put in the description field will be the start of your Readme file.
Now if you want to see the real power of this system, connect it to your local computer.
Do that by going to the terminal window in your local computer and creating a directory for your repo. (type mkdir ~/myrepo and then cd ~/myrepo)
Then in that directory type git init
Then point your repo to the remote repo on GitHub by typing:
git remote add origin https://github.com/yourgithubusername/yourreponame.git
This is just a start to give you a feel for what is going on here. Now you can make changes to your repository on your computers (you can run Git on as many as you like) and manage them all with GitHub. Although this is designed for coders, you could also do this with other files, creating a distributed (and more manual) version of iCloud or OneDrive or Box for yourself.
Now that you have a feel for this, go back to the website at http://github.com Look around for friends and interesting projects. Read what others are up to, and dont be afraid to fork interesting projects. That’s what this is for!
One to start with is the project page of the National Geospatial-Intelligence Agency. Find it at https://github.com/ngageoint
There are so many other things to learn and discuss about GitHub. For example, there are plugins for integrated development environments that make it even easier for GitHub to be used by developers. And their are mobile applications. It really is becoming a platform that other capabilities can be built on and delivered through.
To conclude, there are some things every enterprise technology professional should understand about both GIT and GitHub:
- GIT is for your computer. GitHub is on the web and enables social coding. They are related but know the difference.
- GitHub is so very virtuous for developers and for software management that it is making a huge impact in code quality.
- GitHub is not just for developers. Content creators, analysts and data scientists are also using it. It is about social coding and that will likely always be the focus, but these many other adjacencies can also be transformed by this model.