Git Tools
- Interactive Staging
git add -i/--interactive
to select some files to stage/unstage
git add -p/--patch
to do partial-file staging
Git Alias
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
: shortcut to unstage a staged file
git config --global alias.last 'log -1 HEAD'
: shortcut to get the last commit
git config --global alias.visual '!gitk'
add !
when call external command
git config --global alias.sl '!"C:\Program Files\Sublime Text 2\sublime_text.exe" $*'
: add sublime_text to git shortcut
-
origin
is the default name Git gives to the server you cloned from -
-v
: shows the URL that Git has stored for the shortname to be expanded to - can pull from many remote repositories, but only the origin remote is a SSH URL and can be pushed to.
-
git remote add [shortname] [url]
->git fetch [shortname]
/git pull
aftergit clone
->git push [shortname] [branchname]
aftergit clone
-
git remote show [remotename]
: show the remote repository -
git remote rename [shortname] [newshortname]
: rename a reference -
git remote rm [shortname]
: remove a reference to the remote repository
-
git commit --amend
: replace the previous commit -
git reset HEAD <file>
: unstage a staged file -
git checkout -- <file>
: unmodify a modified file dangerous
- visual tool for git log: gitk
-
-p
: shows the diff introduced in each commit -
-2
: limits the output to only the last two entries -
--word-diff
: get word diff instead of normal line by line diff -
--stat
: show abbreviated stats --pretty=oneline/format --graph
--pretty=oneline/short/full/fuller
--pretty=format:""
Option Description of Output
%H Commit hash
%h Abbreviated commit hash
%T Tree hash
%t Abbreviated tree hash
%P Parent hashes
%p Abbreviated parent hashes
%an Author name
%ae Author e-mail
%ad Author date (format respects the --date= option)
%ar Author date, relative
%cn Committer name
%ce Committer email
%cd Committer date
%cr Committer date, relative
%s Subject
```
> *author: the person who originally wrote the patch*
> *Committer: a person who last applied the patch*
----------------------
`git status`
`git add` : a multipurpose command, use to begin tracking new files, to stage files, and to do other things like marking merge-conflicted files as resolved
##### .gitignore
* `#` as comments
* end with `/` as directory
* `!` to negate a pattern
* `*`: 0+ characters; `?` 1 character; `[0-9]` & `[abc]`
* `**/` as any directory
`git diff` : see what changed but not yet staged
`git diff --cache` or `git diff -staged`: see what staged but not yet committed
`git commit -a` to skip staging area
`git rm` : remove file from working directory and staging area
`git rm --cached` : remove only from staging area
`git mv` : can also do renaming