Git: Difference between revisions
→Useful git aliases: update aliases |
→Commands: add git maint commands |
||
Line 103: | Line 103: | ||
$ git config core.filemode false | $ git config core.filemode false | ||
</source> | </source> | ||
== Maintenance command == | |||
Verify the connectivity and validity of the objects | |||
<syntaxhighlight lang="bash"> | |||
$ git fsck --unreachable | |||
</syntaxhighlight> | |||
Manage reflog information | |||
<syntaxhighlight lang="bash"> | |||
$ git reflog expire --expire=0 --all | |||
</syntaxhighlight> | |||
Pack unpacked objects in a repository | |||
<syntaxhighlight lang="bash"> | |||
$ git repack -a -d -l | |||
</syntaxhighlight> | |||
Prune all unreachable objects from the object database | |||
<syntaxhighlight lang="bash"> | |||
$ git prune | |||
</syntaxhighlight> | |||
Clean up unnecessary files and optimize the local repository | |||
<syntaxhighlight lang="bash"> | |||
$ git gc --aggressive | |||
</syntaxhighlight> | |||
= Useful git aliases = | = Useful git aliases = |
Revision as of 16:12, 6 July 2016
signing work
This is an example of GPG key.
git config --global user.signingkey 0A46826A
Commands
Add a local branch that tracks a remote branch
$ git branch --track greet origin/greet
$ git branch -a
$ git merge origin/master
Pulling changes from a remote
$ git fetch
$ git merge origin/master
is equivalent to:
$ git pull
Rebase a branch
$ git checkout cbranch
Switched to branch 'cbranch'
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: added Greeter class
Applying: hello uses Greeter
Applying: updated Rakefile
$
Merge a branch
$ git checkout autonotif
Switched to branch 'autonotif'
$ git merge <branchname>
Merge made by the 'recursive' strategy.
foobarrecords_savenew.hns | 1 +
1 file changed, 1 insertion(+)
create mode 100644 foobarrecords_savenew.hns
Merges <branchname> onto autonotif branch
Remove a tag
$ git tag -d <tagname>
Undo last commit
This undo is recorded as a part of the git log.
$ git revert HEAD
Reset the branch to a specific point in the past
$ git reset --hard <hash>
--hard parameter also updates the working directory. Reset shouldn't be used in a group project on a remote repository because of its potential for confusion.
Ignore files
- Temporary ignore changes to a file
$ git update-index --assume-unchanged <filename>
- Back to tracking changes to the file
$ git update-index --no-assume-unchanged <filename>
Ignore file modes
This is useful when working with multiple file systems.
$ git config core.filemode false
Maintenance command
Verify the connectivity and validity of the objects
$ git fsck --unreachable
Manage reflog information
$ git reflog expire --expire=0 --all
Pack unpacked objects in a repository
$ git repack -a -d -l
Prune all unreachable objects from the object database
$ git prune
Clean up unnecessary files and optimize the local repository
$ git gc --aggressive
Useful git aliases
This is a snapshot of my ~/.gitconfig
[user]
name = Michael Han
email = mhan@pfg.fjfj.com
[core]
editor = vim
autocrlf = input
safecrlf = true
[color]
ui = always
[alias]
co = checkout
ci = commit
st = status
br = branch
df = difftool
hist = log --pretty=tformat:\"%C(yellow)%h %C(green)%ad %Creset| %s%C(red)%d %C(bold blue)[%an]\" --graph --date=short
hist2 = log --graph --abbrev-commit --decorate --date=relative --format=tformat:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold blue)\" --graph --date=short
histall = log --pretty=tformat:\"%C(yellow)%h %C(green)%ad %Creset| %s%C(red)%d %C(blue)[%an]\" --graph --date=short --all
hist10 = !git log --pretty=tformat:\"%C(yellow)%h %C(green)%ad %Creset| %s%C(red)%d %C(blue)[%an]\" --graph --date=short | head -n 10
hist10all = !git log --pretty=tformat:\"%C(yellow)%h %C(green)%ad %Creset| %s%C(red)%d %C(blue)[%an]\" --graph --date=short --all | head -n 10
listnames = diff-tree --no-commit-id --name-status -r
type = cat-file -t
dump = cat-file -p
ignore = update-index --assume-unchanged
track = update-index --no-assume-unchanged
ignorelist = !git ls-files -v | grep -s ^'h ' | cut -b 1-2 --complement[diff]
tool = vimdiff
[difftool]
prompt = false
[merge]
defaultToUpstream = true
Links
- http://longair.net/blog/2009/04/16/git-fetch-and-merge/
- a warning against pull
'http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging