From Fedora Project Wiki

Revision as of 20:22, 23 October 2008 by Kwade (talk | contribs) (adding tip about putting current branch in $PS1 envar.)


Warning.png
Quick Reference Only
This is not intended to be an exhaustive list of git operations. See the documentation for that.

Basic Operations

Configure your global git settings

Running these commands will setup your global git settings. You should obviously use your own contact details. Should you wish to change your details, you can edit the '~/.gitconfig' file for global settings, or edit '.git/config' to change settings on a particular repo.

git-config --global user.name "John Q. Public"

git-config --global user.email "john.public@example.com"

git-config --global color.diff auto

git-config --global color.status auto

git-config --global color.branch auto

Display current branch in bash

If you work with branches, and you should, this setting helps you keep track of which branch you are in at a given time. If you are in a git working directory, it shows the current branch as part of the prompt:

[user@host directory-name {master}]$

To enable this, add these lines as a function to ~/.bashrc:

if [ -z "`declare -p | grep __git_ps1`" ]; then
    export PS1="[\u@\h \W\$(git-branch 2> /dev/null | grep -e '\* ' | sed 's/^..\(.*\)/ {\1}/')]\$ "
fi

To activate bash configuration changes, run source ~/.bashrc.

Initialize a new repo

mkdir repo && cd repo && git init

Once you've created a repo, you'll find a '.git' folder inside it. What you essentially have at this point is a bare repo -- a repository with the git configs, but no actual files contained in the repository. Now let's create a file and tell git that we want it to be part of our repo. From the repo directory (not the .git directory), type:

echo "Blah" > test.txt

git add test.txt

We can then commit the changes by typing:

git commit test.txt

Another way of committing all the changes (without having to specify all the files that have changed) is to type:

git commit -a

Either way, it will bring up whichever editor you have defined in $EDITOR and allow you to write a commit log message explaining the changes you've made. A commit log message usually consists of:

  • a one-line summary of your changes
  • a blank line
  • one or more additional lines with more detail. These lines are optional.

You can always check the status of your current repo by typing

git status

Developer Operations

Create a new local branch

git checkout -b <branch>

Push and create a new remote branch from an existing local branch of the same name

git push origin <branch>

Switch to a branch that was pushed remotely

Use:

git branch -a

to determine the name of the remote branch you want to work on. Remote branches will be preceded by origin/. Then use this to switch to it:

git checkout --track -b <branch> origin/<branch>

Maintainer Operations

Remove a remote branch

Assuming you had a branch named blah on the remote server, you could remove it by typing:

git push origin :blah

Apply mailed git patch

git am <file>