Git经常用到的命令(更新20140619):
*******初始化:********
$ git config --global user.name "polarrwl"
$ git config --global user.email "polarrwl@163.com"
$ git init //工程目录初始化
$ git status //查询状态
*******修改提交:*******
$ git add xxxfile //暂存区(增加和修改)
$ git add xxxfile2 //暂存区
$ git add *.* //当前目录所有文件(不包含文件夹)
$ git add * //当前目录所有文件(包含文件夹)
$ git rm xxxfile //删除,暂存区
$ git commit -m "说明" //版本库
$ git diff HEAD -- xxxfile //工作区和版本库的比较,HEAD当前库版本,HEAD^上一个版本,直接输入SHA1也可以
$ git checkout . //撤销所有修改
$ git reset --hard HEAD^ //恢复上一个版本
$ git reset --hard 3628164 //恢复指定SHA1计算的版本号
$ git checkout -- xxxfile //撤销修改(工作区)
*******查询日志:*******
$ git log --pretty=oneline //一行显示,配合git reset使用
$ git reflog //查询历史命令
$ git log --graph --pretty=oneline --abbrev-commit //图形方式
*******远程仓库:*******
$ ssh-agent bash --login -i //切换到agent登陆
$ ssh-keygen -t rsa -C "youremail@example.com" //生成rsa公私密匙对
$ ssh-add /c/Users/polarrwl/.ssh/gittests //动态添加rsa私匙,用于多个私匙使用
$ ssh -T git@github.com //进行验证
$ ssh -Tv git@github.com //详细检测,打印debug信息
$ git clone git@github.com:michaelliao/gitskills.git //从远程克隆到本地
$ git remote add origin git@github.com:polarrwl/gittest.git //关联远程的库
$ git remote add gittest2 /i/temp/20140609/gittest2 //关联到本地的另外一个库上
$ git remote //查看远程仓库的信息
$ git remote -v //查看远程更详细信息
$ git push -u origin master //推送(空的情况下的第一次推送)
$ git push -f -u origin master //强推,把远程的git目录覆盖掉
$ git push origin master //推送修改(主分支),本地master推送到远端的master(缺省)
$ git push origin master:branch1 //把本地的master分支提交到远程origin的branch1分支上,如果远程没有branch1分支,则创建
$ git push origin dev //推送其他分支(dev)
$ git fetch origin master:tmp //拉取远程的master分支到本地tmp分支,注意是本地分支
$ git fetch origin master //拉取远程的master分支到默认的本地远程分支origin/master中,远程有更新就可以考虑去fetch一下
$ git merge --no-ff -m "merge remote" origin/dev //将远程origin/dev分支合并到当前分支
$ git checkout -b dev origin/dev //创建远程的dev分支到本地dev分支,前提是clone中有
$ git pull //执行当前分支的pull拉取动作,当远程被其他用户提交后,需要拉下来才能提交,自动merge
$ git branch --set-upstream dev origin/dev //将分支dev和远程的origin/dev分支绑定起来,这样才能pull
$ git branch -r //查看远程跟踪分支
$ git checkout --track -b refactored origin/refactored //基于远程跟踪分支创建本地分支
*******分支管理*******
$ git checkout master //切换到主分支
$ git checkout dev //切换到dev分支
$ git checkout -b dev2 //创建并切换分支dev2
$ git branch dev2 //创建dev2分支但不切换分支
$ git branch //查看当前分支
$ git branch -r //列出远程分支
$ git branch -a //列出所有分支
$ git branche -d dev2 //删除分支
$ git branch -D feature-vulcan //强行删除分支,如果分支还没有被合并
$ git branch -d -r branchname //删除远程branchname分支
$ git merge dev2 //将dev2分支合并到当前分支
$ git merge --no-ff -m "merge with no-ff" dev2 //非fast-forward模式合并分支,创建新的节点
$ git mergetool foofile.txt //调用merge的合并工具打开冲突文件进行处理(当有冲突的时候)
$ git stash //储存当前分支工作现场
$ git stash list //查看当前分支的工作现场
$ git stash pop //恢复上一个储存的工作现场并清理stash list
$ git stash apply stash@{0} //多次stash,通过stash list找到对应的恢复
*******标签管理*******
$ git tag v1.0 //添加标签
$ git tag //查看标签
$ git tag v0.9 6224937 //给指定的commit id(log sha1值)打上标签
$ git show v0.1 //查看标签对应的信息
$ git -a tagname -m "blablabla..." //指定标签信息
$ git tag -d v0.1 //删除标签
$ git push origin v1.0 //推送标签到远程
$ git push origin --tags //一次性推送全部尚未推送的标签
$ git push origin :refs/tags/v0.9 //删除远程标签,前提是本地先删除 git tag -d xxxx
*******关联Diff和Merge工具*******
$ git config --global diff.tool bc3
$ git config --global difftool.bc3.cmd "\"c:/program files/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
$ git config --global difftool.prompt false
$ git config --global merge.tool bc3
$ git config --global mergetool.bc3.cmd "\"c:/program files/beyond compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""
$ git config --global mergetool.bc3.trustExitCode true
注意$的变量会被清空掉,所以需要在.gitconfig里面再修改下。
$ git mergetool foofile.txt //调用merge的合并工具打开冲突文件进行处理(当有冲突的时候)