声明:本文内容借鉴于国外某不知名网友,仅供个人学习。
CREATE
Clone an existing repository:
1 | $ git clone ssh://user@domain.com/repo.git |
Create a new local repository:
1 | $ git init |
LOCAL CHANGES
Changed files in your working directory
1 | $ git status |
Changes to tracked files
1 | $ git diff |
Add all current changes to the next commit
1 | $ git add . |
Add some changes in
1 | $ git add -p <file> |
Commit all local changes in tracked files
1 | $ git commit -a |
Commit previously staged changes
1 | $ git commit |
Change the last commit
Don‘t amend published commits!
1 | $ git commit --amend |
COMMIT HISTORY
Show all commits, starting with newest
1 | $ git log |
Show changes over time for a specific file
1 | $ git log -p <file> |
Who changed what and when in
1 | $ git blame <file> |
BRANCHES & TAGS
List all existing branches
1 | $ git branch -av |
Switch HEAD branch
1 | $ git checkout <branch> |
Create a new branch based on your current HEAD
1 | $ git branch <new-branch> |
Create a new tracking branch based on a remote branch
1 | $ git checkout --track <remote/branch> |
Delete a local branch
1 | $ git branch -d <branch> |
Mark the current commit with a tag
1 | $ git tag <tag-name> |
UPDATE & PUBLISH
List all currently configured remotes
1 | $ git remote -v |
Show information about a remote
1 | $ git remote show <remote> |
Add new remote repository, named
1 | $ git remote add <shortname> <url> |
Download all changes from
1 | $ git fetch <remote> |
Download changes and directly merge/integrate into HEAD
1 | $ git pull <remote> <branch> |
Publish local changes on a remote
1 | $ git push <remote> <branch> |
Delete a branch on the remote
1 | $ git branch -dr <remote/branch> |
Publish your tags
1 | $ git push --tags |
MERGE & REBASE
Merge
1 | $ git merge <branch> |
Rebase your current HEAD onto
Don‘t rebase published commits!
1 | $ git rebase <branch> |
Abort a rebase
1 | $ git rebase --abort |
Continue a rebase after resolving conflicts
1 | $ git rebase --continue |
Use your configured merge tool to solve conflicts
1 | $ git mergetool |
Use your editor to manually solve conflicts and (after resolving) mark file as resolved
1 | $ git add <resolved-file> |
UNDO
Discard all local changes in your working directory
1 | $ git reset --hard HEAD |
Discard local changes in a specific file
1 | $ git checkout HEAD <file> |
Revert a commit (by producing a new commit with contrary changes)
1 | $ git revert <commit> |
Reset your HEAD pointer to a previous commit …and discard all changes since then
1 | $ git reset --hard <commit> |
…and preserve all changes as unstaged changes
1 | $ git reset <commit> |
…and preserve uncommitted local changes
1 | $ git reset --keep <commit> |