Last updated March 20, 2014.

Git-specific issues

Are there screencasts to help me learn Git?
Here are a collection of helpful Github videos that can help: https://gist.github.com/423320. You can also check out http://buildamodule.com/#video_1717.

Can I use Eclipse with Git?
Yes, with an extension called EGit. This Eclipse Git user guide might help: http://wiki.eclipse.org/EGit/User_Guide

What's the difference between Git's HEAD and master?
In Git, master is a branch (one of them). Each commit has an SHA1 checksum that identifies it. Git will sometimes refer to branches as "heads" (lowercase); there can be many of these in your repository. HEAD (uppercase) specifically refers to the branch you're currently working on.

I did a git pull and it said "forced update"! Is that bad?
Yes, it is, but it's not your fault. While you're deciding who to yell at, read how you can deal with it.

Git on Drupal.org issues

What's the minimum I need to know to get my code up to my drupal.org project?
Follow the steps on the Version control tab on your project page.

Why are the number of commits so low?
CVS counted the number of files modified. Git counts the number of actual commits.

Why aren't my commits showing up?
You may not have properly identified yourself to Git. This must be done in order for your commit messages to be associated with your drupal.org user.

Shoot! I screwed up and forgot to identify and some of my commits are associated with a bunk e-mail address. Is there any hope of retrieving those?
Sorry, no. :( Not at this time.

Why do I need a username if I'm using SSH keys?
You don't! You can also use the familiar git@git.drupal.org:project/[projectname].git. It doesn't appear in user-personalized instructions because those focus on the least complex entry point. That means password-based authentication, which means using the Git username.

Can I create and push unlimited branches (with any name), even if I don't create a Project Release for that branch?
Yes, only when you create a release will naming conventions come into play. See Release naming conventions.

Can I delete branches and tags as easily as I do it with Github?
The only branches or tags you won't be able to delete are ones that have been attached to releases via the Drupal.org web interface. As long as that release node exists, the branch or tag will be protected from deletion. However, if the release node is deleted, you'll again be freely able to delete the branch/tag in the repository.

Can I fork any project, even if I don't own or co-maintain it?
Drupal.org does not (yet!) support GitHub-style "forking" as a first-class action (where the source project is "aware" of your fork and collaboration tools are provided). You can clone any project, even if you don't own or co-maintain it and may then push that repository into your own sandbox as a way of easing collaboration with that project. However, pushing a clone of a full project into another full project is grounds for removing your "Vetted user" status. See http://drupal.org/node/1014922 for more about collaboration.

What about Pull Requests, does that work? How?
Current plans are on per-issue repositories as an alternative to GitHub-style "Pull Requests". They don't exist yet, but may well be the most-desired feature currently being discussed for Phase Next. Until such a system is implemented, the primary recommended workflow continues to be patch-based. That said, nothing prevents enterprising maintainers from using proper Git workflows. We expect that as such maintainers experiment with more advanced workflows, we will learn more about how to facilitate Git-based workflows that are best for Drupal.org's particular collaboration needs.

Why am I seeing a commit made by "The Great Git Migration" removing $Id$ from my project's files?
CVS used those keywords to add information about the commit to the files generated in the tarball. Git won't be needing those keywords so you won't have to add them anymore.

All my translation (*.po) files are gone! "The Great Git Migration" commit removed them. Where did they go?
Translation files are no longer stored directly in project repositories. Instead translations are created and downloaded from http://localize.drupal.org/. More information about this move is available in the translation file announcement.

Can I use the git:// protocol? Isn't it faster than http://?
git:// is no faster than http:// for newer versions of Git (>=1.6.6), but you can use the git:// protocol if you prefer. The format is the same as http://: git://git.drupal.org/project/[projectname].git

Can I link to a diff for more than one commit?
The repository viewer has a less advertised feature to show a diff between commit hashes, or branches or tags for that matter.
For example, http://drupalcode.org/project/drupal.git/commitdiff/7.8..7.9 shows all changes between the tags for Drupal 7.8 and 7.9. And for a plain text version: http://drupalcode.org/project/drupal.git/commitdiff_plain/7.8..7.9

When doing an anonymous http clone, I get the message: error: RPC failed; result=22, HTTP code = 417. What do I do?
You can clone via the git:// protocol instead or, if you're connecting via as squid proxy, set "ignore_expect_100 on" in the squid.conf. See http://drupal.org/node/1101210

Woah, back-links to commit messages show up in the issue queue! How does that work?
If your commit message includes the issue number in the recommended format (Issue #123456), or actually anywhere as long as it's #nnnnnn, within a few minutes, a Jenkins job will tie the commit to the issue.