Git LFS v2.6.0 is now available

Announcing Git LFS 2.6.0

A new version of Git LFS, the open source Git extension for versioning large files, is now available. Git LFS v2.6.0 comes with a more robust authentication mechanism, new options to git lfs checkout, a handful of bug fixes, new platforms, and more.

Download Git LFS v2.6.0

Authentication improvements

Git LFS can make two types of HTTP(s) requests: API requests (which allow the client to retrieve any metadata it might need), and storage requests (which allow the client to upload or download data to external storage).

Previously, Git LFS would determine how it should authenticate LFS API requests, then use the same method to authenticate transfer requests. However, API requests and transfer requests generally go to different places and aren’t guaranteed to require the same authentication method.

Git LFS now treats those requests as requiring different authentication and will determine the correct mode for each.

New git lfs checkout options

Git is designed to handle merge conflicts as best it can without the need for human intervention, but often it’s built-in merge facilities do not resolve conflicts correctly for large files. When that’s the case, it can be useful to compare the contents of both sides of the conflict by hand.

git lfs checkout now provides convenient options for doing just that: you can ask it to resolve “our” side of a merge, “their” side, or the merge base. Here’s an example:

$ git lfs checkout --ours --to=conflict.psd.ours -- conflict.psd 
$ git lfs checkout --theirs --to=conflict.psd.theirs -- conflict.psd 
$ git lfs checkout --base --to=conflict.psd.base -- conflict.psd 
$ ls -la
-rw-r--r--@  1 user  group   16789 Oct 22 18:59 conflict.psd.base
-rw-r--r--@  1 user  group   19810 Oct 22 18:59 conflict.psd.ours
-rw-r--r--@  1 user  group   18303 Oct 22 18:59 conflict.psd.theirs

From here, you can open each side of the conflict and resolve the differences however you see fit.

And all of the rest

You’ll see a handful of other new features and bug fixes in v2.6.0 like new release targets including arm64, enhanced support for more configuration options from Git, and more.

For instructions on configuring Git LFS, read the documentation.

Suggested changes—what we've learned so far

Two weeks ago we released suggested changes, a feature that allows you to suggest changes to code in a pull request. Once changes are suggested, the author or assignees can accept (and commit) suggestions with the click of a button.

Before

A code review comment before suggested changes

After

A code review comment with a suggested change

Since its release, more than 10 percent of all reviewers suggested at least one change, totaling over 100,000 suggestions—and nearly four percent of all review comments created included a suggestion. Based on these early numbers, we see you’re quick to adopt suggested changes and make them a natural part of your code review workflow.

Between the number of suggestions created and the feedback we received from over 2,500 people who have used the feature, you’ve helped us understand what we can improve moving forward.

By far the most frequent requests were:

  1. The ability to suggest changes to multiple lines at once.
  2. The ability to accept multiple changes in a single commit.

We want to make suggested changes the best feature it can possibly be. Your feedback is valuable and will inform our next steps. Until then, we encourage you to try out suggested changes and tell us what you think.

Game Off 2018 theme announcement

GitHub Game Off 2018

Game Off is our annual month-long game jam (hackathon for building games). This year’s theme is HYBRID.

You’re welcome to interpret the theme however you wish, but if you need some ideas to kickstart your creativity, think about how your game could:

How to participate

Participate by yourself or as a team. Multiple submissions are welcome, and of course, the use of open source software is encouraged.

Voting

Shortly after the jam ends, voting will be open to everyone who has submitted a game. Don’t worry—there will be plenty of time to play and vote on the entries. As always, we’ll highlight some of our favorites on the GitHub Blog, and the world will get to enjoy (and maybe even contribute to or learn from) your creations.

It’s dangerous to go alone

If you’re new to Git, GitHub, or version control

Don’t worry, we have several resources for you, from how to use Git to all things GitHub. You’ll “Git” it in no time.

  • Git Documentation: everything you need to know about version control and how to get started with Git
  • GitHub Help: everything you need to know about GitHub

More questions about GitHub? Contact our Support Team. They’d be happy to help.

Did you know? You don’t have to use Git on the command line. You can use GitHub Desktop (our client for macOS and Windows), or bring Git and GitHub to your favorite editors:

If you’re new to itch.io or game development

The itch.io community feature is enabled for this jam—it’s a great place to ask Game Off-specific questions, share tips, and more.

With so many free, open source game engines and tutorials available online, there’s never been an easier (or more exciting!) time to try out game development.

Are you…

  • Into JavaScript? You might be interested in Phaser.
  • Comfortable with Python, C++ or C#? Godot might be a good match for you.
  • Proficient with Python? Check out Pygame.
  • Dangerous with Java? Take a look at libGDX.
  • In love with Lua? Check out LÖVE or Defold. Like retro games too? Drop everything and check out LIKO-12!

Do you really like retro games? Maybe you can…

The official Twitter hashtag for the Game Off is #GitHubGameOff. We can’t wait to see what you build.

Octocat pixel art animation

The GitHub Community Forum is turning one

GitHub Community Forum turns 1

Today we are celebrating the first anniversary of the GitHub Community Forum. One year ago today, we began with just three discussion boards, a single GitHub Original Series article, and a burning desire to provide a new space for connecting, collaborating, and learning. Though our discussion boards and articles have evolved, we’re just as excited to bring you even more valuable content over the next year as we were when we initially started the Community Forum.

A reflection on the first year of the GitHub Community Forum

Since October 31, 2017, there have been:

  • 625,000 unique visitors to github.community
  • 18,000 registered people on the GitHub Community Forum
  • Visitors from over 100 countries
  • 5,500 conversations (and growing)
  • 40 GitHub Original Series articles published
  • Over 185 challenge badges earned

The future

We’re working hard to make the Community Forum even better. Over the next year, we will be adding new features and experiences. Here are a few new and exciting improvements you can look forward to in 2019…

  • A new look for our homepage
  • More GitHub Original Series articles with new and interesting topics
  • More challenges and contests, with chances to earn badges and swag
  • New ways to earn rewards and become more involved in the Community Forum
  • And so much more!

We want to thank you for your contributions, and hope you continue to share with the community.

Become a part of the community

If you haven’t joined the GitHub Community Forum, it’s never too late! Visit the Community Forum and log in with your github.com account to start sharing your experiences with the community.

Additionally, if you have any GitHub Community Forum ideas or requests, visit our one year celebration post and leave a comment. This platform can’t exist without all of you, and we want to hear how to make it even better for you to connect and learn.

Here’s to another year!

Atom understands your code better than ever before

Tree sitter has landed in Atom

Text editors like Atom have many features that make code easier to read and write—syntax highlighting and code folding are two of the most important examples. For decades, all major text editors have implemented these kinds of features based on a very crude understanding of code, obtained by searching for simple, regular expression patterns. This approach has severely limited how helpful text editors can be.

At GitHub, we want to explore new ways of making programming intuitive and delightful, so we’ve developed a parsing system called Tree-sitter that will serve as a new foundation for code analysis in Atom. Tree-sitter makes it possible for Atom to parse your code while you type—maintaining a syntax tree at all times that precisely describes the structure of your code. We’ve enabled the new system by default in Atom, bringing a number of improvements.

Crisp syntax highlighting

Atom’s syntax highlighting is now based on the syntax trees provided by Tree-sitter. This lets us use color to outline your code’s structure more clearly than before. Notice the consistency with which fields, functions, keywords, types, and variables are highlighted across a variety of languages:

This animated GIF shows a snippet of C code rendered in Atom. It then switches to show an equivalent snippet of code written in several different languages: C++, Go, Rust, and TypeScript.

Reliable code folding

In most text editors, code folding is based on indentation: lines with greater indentation are considered to be nested more deeply than lines with less indentation. But this doesn’t always match the structure of our code and can make code folding useless in some files. With Tree-sitter, Atom folds code based on its syntax, which allows folding to work as expected, even for code like this:

This animated GIF shows a snippet of Ruby code, containing a heredoc with unindented text. Code folding is used to first collapse the block containing the heredoc, then collapse the method containing that block, and then collapse the class containing that method.

Syntax-aware selection

Atom also uses syntax trees as the basis for two new editing commands: Select Larger Syntax Node and Select Smaller Syntax Node, bound to Alt+Up and Alt+Down. These commands can make many editing tasks more efficient and fun, especially when used in combination with multiple cursors.

This animated GIF shows a snippet of JavaScript code in Atom. First, nothing is selected. Then, larger and larger constructs in the code are selected.

Speed

Parsing an entire source file can be time-consuming. This is why most IDEs wait to parse your code until you stop typing for a moment, and there is often a delay before syntax highlighting updates. We want to avoid these delays, so we designed Tree-sitter to parse your code incrementally: it keeps the syntax tree up to date as you edit your code without ever having to re-parse the entire file from scratch.

tree-editing

Language support

Currently, we use Tree-sitter to parse 11 languages: Bash, C, C++, ERB, EJS, Go, HTML, JavaScript, Python, Ruby, and TypeScript. And we’ve added Rust support on our Beta channel. If you’d like to help us bring the power of Tree-sitter to more languages, check out the Tree-sitter documentation and the grammar page of the Atom Flight Manual.

Feedback

Want to know more about Tree-sitter? Check out this talk from this year’s StrangeLoop conference.

If you write code and you’re interested in trying our new system, give the new version of Atom a try. We’d love to hear your feedback—tweet us at @AtomEditor or if you’ve run into a bug, open an issue.

Changelog

Subscribe

Discover new ways to build better

Try Marketplace apps free for 14 days

Learn more