Task |
Description |
Command |
Create a new local repository |
|
|
Check out a repository |
Create a working copy of a local repository: |
1
| git clone /path/to/repository |
git clone /path/to/repository
|
For a remote server, use: |
1
| git clone username@host:/path/to/repository |
git clone username@host:/path/to/repository
|
Add files |
Add one or more files to staging (index): |
1
2
3
| git add <filename>
git add * |
git add <filename>
git add *
|
Commit |
Commit changes to head (but not yet to the remote repository): |
1
| git commit -m "Commit message" |
git commit -m "Commit message"
|
Commit any files you’ve added with git add , and also commit any files you’ve changed since then: |
|
Push |
Send changes to the master branch of your remote repository: |
|
Status |
List the files you’ve changed and those you still need to add or commit: |
|
Connect to a remote repository |
If you haven’t connected your local repository to a remote server, add the server to be able to push to it: |
1
| git remote add origin <server> |
git remote add origin <server>
|
List all currently configured remote repositories: |
git remote -v |
Branches |
Create a new branch and switch to it: |
1
| git checkout -b <branchname> |
git checkout -b <branchname>
|
Switch from one branch to another: |
1
| git checkout <branchname> |
git checkout <branchname>
|
List all the branches in your repo, and also tell you what branch you’re currently in: |
|
Delete the feature branch: |
1
| git branch -d <branchname> |
git branch -d <branchname>
|
Push the branch to your remote repository, so others can use it: |
1
| git push origin <branchname> |
git push origin <branchname>
|
Push all branches to your remote repository: |
|
Delete a branch on your remote repository: |
1
| git push origin :<branchname> |
git push origin :<branchname>
|
Update from the remote repository
|
Fetch and merge changes on the remote server to your working directory: |
|
To merge a different branch into your active branch: |
|
View all the merge conflicts:
View the conflicts against the base file:
Preview changes, before merging: |
git diff
git diff --base <filename>
1
| git diff <sourcebranch> <targetbranch> |
git diff <sourcebranch> <targetbranch>
|
After you have manually resolved any conflicts, you mark the changed file: |
|
Tags |
You can use tagging to mark a significant changeset, such as a release: |
1
| git tag 1.0.0 <commitID> |
|
CommitId is the leading characters of the changeset ID, up to 10, but must be unique. Get the ID using: |
|
Push all tags to remote repository: |
|
Undo local changes |
If you mess up, you can replace the changes in your working tree with the last content in head:
Changes already added to the index, as well as new files, will be kept. |
1
| git checkout -- <filename> |
git checkout -- <filename>
|
Instead, to drop all your local changes and commits, fetch the latest history from the server and point your local master branch at it, do this: |
1
2
3
| git fetch origin
git reset --hard origin/master |
git fetch origin
git reset --hard origin/master
|
Search |
Search the working directory for foo() : |
git grep "foo()" |