Announcements - page 2

Git LFS 2.5.0 is now available

A new version of Git LFS, the open-source Git extension for versioning large files, is now available. Git LFS v2.5.0 comes with three new migration modes, a handful of bug fixes, and more.

Download Git LFS v2.5.0

New migration modes

With v2.5.0, you can use the git lfs migrate command in a few new ways.

Sometimes repositories can get into a broken state when large files that should have been committed with Git LFS aren’t. If your file is over 100 MB, you won’t be able to push to GitHub, and your history will require rewriting with git lfs migrate import. If you have a file smaller than 100 MB, you can use git lfs migrate import --no-rewrite to create new commits that move the file to Git LFS, allowing you to repair the state of your repository more easily than ever.

If you have committed a handful of files that should have been stored with Git LFS, but aren’t, you can let Git LFS determine the affected files for you by running git lfs migrate import --fixup. The --fixup flag automatically reads .gitattributes file(s) in your repository, and converts Git objects that should be stored with Git LFS automatically:

In the following example, notice how our .gitattributes file says that *.png’s should be tracked using Git LFS, but we added mona.png without Git LFS:

$ cat .gitattributes
*.png filter=lfs diff=lfs merge=lfs -text

$ git cat-file -p :mona.png | file -s
/dev/stdin: PNG image data, 896 x 896, 8-bit/color RGBA, non-interlaced

We can easily fix this without having to tell Git LFS which files to start tracking:

$ git lfs migrate import --fixup
migrate: Fetching remote refs: ..., done
migrate: Sorting commits: ..., done
migrate: Rewriting commits: 100% (2/2), done
  master        1002728154804338fe645976ad8b7258b0be0810 -> 076e2bfe114df5575b1130f694c18d1b26c86b86
migrate: Updating refs: ..., done
migrate: checkout: ..., done

$ git cat-file -p :mona.png
oid sha256:49afbfc61b10df78377f8f7dac774158e1a0197740e160ea3572d9839c61ac04
size 106277

Now mona.png is stored correctly using Git LFS!

Lastly, if you want to stop using Git LFS and export your large objects, you can use git lfs migrate export. It accepts the same arguments as git lfs migrate import, and easily allows you to take files out of Git LFS.

Developer ergonomics

We have updated several of the scripts and programs used to develop and hack on Git LFS to feel more familiar to open source contributors. The test suite now outputs results using the TAP format, enabling it to be run with prove. Similarly, the project can now be built using a Makefile, which should feel more familiar to developers comfortable working with Git.

Additional updates

You’ll see a handful of other new features and bug fixes in v2.5.0 like improved support for object alternates, correct git lfs status output from subdirectories, and more.

For instructions on configuring Git LFS, refer to this article.

Download Git LFS v2.5.0

Simplify your CI process with GitHub and Google Cloud Build

Simplify your CI process with GitHub and Google Cloud Build

Developers use more than one kind of tool to build software. With the flexibility to integrate exactly the right tools for the job, your team can work productively, however you work best. And when software development is accessible, intelligent, and open, you can spend less time calibrating your tool chain and more time focusing on the work that matters most.

Today, we’re simplifying an important part of your workflow: Continuous Integration (CI). We’re excited to be partnering with Google to bring Google Cloud Build to GitHub. Cloud Build helps you create fast, consistent, reliable builds across all languages. With this new integration, you can easily set up CI through Cloud Build and automate builds and tests as part of your GitHub workflow.

“The release of Cloud Build on GitHub Marketplace is the first step in an exciting partnership. Bringing our fully-managed continuous integration to the GitHub platform will provide fast, frictionless, and convenient CI for any repository on GitHub. Google Cloud and GitHub share a vision for developer productivity and we look forward to continuing to build on this partnership.” — Melody Meckfessel, Vice President of Engineering at Google Cloud

Get smart recommendations

GitHub will detect Dockerfiles in the root of a repository and automatically suggest you use a CI tool like Cloud Build from GitHub Marketplace if one isn’t already set up. These smart recommendations will be rolling out to everyone in the coming months.

Recommender view

Reduce context switching

Cloud Build uses the new Checks API, a better way to get feedback from integrations on your code. Once a build is complete, you can see rich status reports, annotated code, and detailed information—all without leaving GitHub.

Checks UI

Learn more about the Google Cloud Build integration

From large businesses to open source projects, every team has their own approach to CI. We built GitHub to support yours. And we’ll keep working with our partners to create an open platform, where your team can use the tools they need to stay productive and do their best work on GitHub.

Interested in building on our platform? Contact the Marketplace team to learn more.

New courses on GitHub Learning Lab

header image

Earlier this year, we launched GitHub Learning Lab to help people of all skill levels use GitHub. Our initial course offerings included “Introduction to GitHub”, “Communicating using Markdown”, “Managing Merge Conflicts”, “GitHub Pages”, and “Moving Your Project to GitHub”. More than 3,700 students have successfully completed a Learning Lab course.

Now we’re releasing four new courses on Learning Lab for learners of all skill levels:

Uploading to GitHub and Migrating to GitHub

We broke out the existing “Moving to GitHub” course into two new courses: “Uploading to GitHub” and “Migrating to GitHub”. This lets you focus on bringing your projects to GitHub, no matter where they are.

Start Uploading to GitHub or Migrating to GitHub now

Community Starter Kit

GitHub loves the open source community, and we want your project to appeal to both veteran open source contributors and newcomers alike. In this course, you will learn what settings to use and files you should add to your repository to provide the information and features new contributors will need to be successful.

Access your Community Starter Kit

Introduction to HTML

Learning Lab is a great way to learn how to use GitHub more effectively, but why stop there? In our first non-GitHub focused course, join Learning Lab for an “Introduction to HTML”.

Build your first webpage with an Introduction to HTML

Now available in Marketplace

Learning Lab is now also available in GitHub Marketplace. In addition to Learning Lab, Marketplace houses integrations you can add to your repository. If you currently access Learning Lab from, your experience isn’t going to change—and thanks for the support!

Sign up for Learning Lab

How the Nintendo Entertainment System lives on in open source - Game Bytes

Welcome to the July edition of Game Bytes, a monthly series focused on the game developer community. This month, we take a look at the legacy of the Nintendo Entertainment System (NES) in open source.

The NES was released 35 years ago today. While official NES games haven’t been released in over 20 years, a “homebrew” scene exists where developers are still creating NES games (playable on the original hardware or on emulators) in the original 6502 Assembly Language.

Whether you grew up playing NES games, or your parents did, you’re bound to find something of interest—either in the gameplay or in the code—for some of these games below.

Open source homebrew NES games

Super Tilt Bro

Super Tilt Bro screenshot

Super Tilt Bro is a game inspired by Super Smash Bros–a two-player fighting game where you must knock a friend (or the computer) off of a platform. The latest release introduces a new stage and mysterious orb that gives one player incredible strength.

Pwn Adventure Z

Pwn Adventure Z screenshot

Pwn Adventure Z is a zombie survival game made to be hacked. It was originally released as a physical cartridge at CSAW (Cyber Security Awareness Week), the largest student-run cyber security event in the world, for the 2015 CTF (Capture the Flag) competition.

Nova the Squirrel

Nova the Squirrel screenshot

Nova the Squirrel is a platform game featuring a squirrel by the name of Nova Storm. Help her uncover new abilities and save the strange new world that she’s found herself in.


Thwaite screenshot

In Thwaite, you must protect a small town from destruction by taking out incoming missiles with fireworks. Defend it for seven nights to win the game.


Falling screenshot

Not much is known about why our hero is “Falling” from the sky, but they must collect as many coins as possible while avoiding all platforms. This was @tragicmuffin’s first time creating a game from scratch and working with Assembly.


Sprilo screenshot

Sprilo is a small, time-attack racing game. Test your ability to drive a tiny car around a track as fast as you can in over three unique courses. Created in less than 30 days for last year’s GitHub Game Off competition, this was @cbrwn’s first time creating a game using Assembly for any sort of console. It was created in less than 30 days for last year’s GitHub Game Off competition.

Interested in building your own NES game? This guide to 6502 Assembly from @skilldrick is an excellent place to start.

Little bits

SuperTux: help wanted

SuperTux screenshot

You might not know 6502 Assembly Language, but if you have some experience with C++ then the SuperTux team are looking for people to assist with continuing development of the classic platform game. Contribute to the core gameplay or contribute content through the integrated level editor.

Js13kgames starts next month

The seventh annual js13kgames–a JavaScript coding competition for HTML5 game developers–kicks off next month. If you don’t know 6502 Assembly Language or C++, but are comfortable around HTML/CSS/JS, @end3r’s month-long game jam to create a JavaScript game in less than 13 kilobytes might be for you!

See the website for more details.

New desktop app in beta client app beta

The latest version of the desktop app is in open beta. The Electron-based app is available for download on Windows, macOS, or Linux. You can use it to browse, download and stay up to date with the latest indie games on Take it for a spin and be sure to report any bugs you find. Nice work @fasterthanlime!

Dear Weather Guy

Dear Weather Guy screenshot

Dear Weather Guy was created for the recent Godot Community Jam. Thanks to a nice little integration with the Open Weather Map API, you can have fun trying to guess the real temperature of world cities. It works on Windows, macOS and Linux. Beautiful work, Emilio and Andre Mari Coppola!

Join us in August for the next edition of Game Bytes!

Bringing GraphQL to Octokit.NET

If you’ve built apps that connect with GitHub, you are no doubt familiar with Octokit. GitHub offers three official flavors of the easy-to-use Octokit library—one for Ruby, .NET, and Node.js—that work with the GitHub REST API v3. Back in September of 2016, we announced that we would move to GraphQL, the query language developed by Facebook, in part due to the ability to fetch all of the data we wanted in a single request. As a result, the GitHub API v4 is built on GraphQL instead of REST.

Introducing Octokit.NET in GraphQL

The Editor Tools Team is particularly excited about this move to GraphQL because loading lists of pull requests in Visual Studio through our extension can be time consuming for some projects. We’ve experimented with GraphQL APIs, but we wanted to make it as easy to use as the Octokit.NET library. As such, we are excited to announce the GraphQL flavor of the Octokit.NET library is now available.

Creating a GraphQL-based .NET API presents certain challenges. GraphQL is a query language best suited for dynamic languages. Developers that want to take advantage of GraphQL in statically compiled languages like .NET have to make some compromises, resulting in a much different experience.

This started as an experiment to see if we could use GraphQL’s self documenting functionality to generate a library that gets the benefit of static compilation while retaining the flexibility and spirit of GraphQL. In GitHub for Visual Studio, we perform many round trip queries when displaying pull requests. We’ve used this library in our extension, and it has helped us improve performance, most notably with pull request lists. Before, these lists took minutes to display and now load in under two seconds.

The syntax is designed to look as much like GraphQL as possible while still feeling familiar to .NET developers:

using Octokit.GraphQL;
using Octokit.GraphQL.Core;
using static Octokit.GraphQL.Variable;

var connection = new Connection("", YOUR_OAUTH_TOKEN); 

var query = new Query()
    .Select(repo => new

var vars = new Dictionary<string, object>
    { "owner", "octokit" },
    { "name", "" },

var result =  await Connection.Run(query, vars);

Console.WriteLine(result.Login + " & " + result.Name + " Rocks!");

If you want to use the GraphQL API in .NET and make queries in your statically compiled C# code, try out the new GitHub v4 Octokit.NET library.

We’re excited to hear from you. Are you a .NET developer? Is this something that you would find useful? Get in touch with us in our GitHub for Visual Studio repo or on Twitter (@GitHubVS).



Discover new ways to build better

Try Marketplace apps free for 14 days

Learn more