git实用手册
git.exe clone --progress -v "git@code.sohuno.com:huimingtao/focus-wap.git" "D:\workspace1\focus-wap"
git.exe checkout -b pad remotes/origin/pad
git remote show origin
查看名称为origin的远程仓库的详细信息
git init
初始化一个git项目
git remote add origin git@code.sohuno.com:rogantian/git-test.git
添加一个叫origin的远程仓库
git push -u origin master
将本地仓库的master分支推送到名为origin的远程仓库上去。-u表示绑定本地的master和origin上的master分支,下次再在本地的master分支上pull或push的时候可以直接使用git pull 或 git push
git checkout -- src/main/webapp/views/pad/filterBuilding.jsp
放弃本地修改的filterBuilding.jsp文件,从暂存区检出这个文件,如果filterBuilding.jsp没有与分支名冲突的话,使用git checkout src/main/webapp/views/pad/filterBuilding.jsp也可以
(该方式可以在本地不小心修改了或者删除了某个文件,并且尚未添加到暂存区时用来恢复这些文件)
git reset HEAD -- README
如果README这个文件修改了之后add到了暂存区,可以使用该命令将其从暂存区取出,状态变为修改状态,然后可以结合上一个checkout命令将之恢复到修改之前的状态
reset实际上是从仓库中恢复到暂存区
git checkout HEAD --file
将当前工作区的file文件回滚到最后一次提交,并保存到暂存区,比如git checkout HEAD~ --file将file回滚到最后一次提交的父提交并暂存,如果没有指定提交节点,则从暂存区回滚(即上上一条命令)
git log master ^origin/master
可以查看远程分支master上有但本地有,但远程分支没有的提交(即可以查看没有push到远程的commit有哪些)
git log origin/master ^master
同上一条,可以查看远程有,但本地没有的提交
git commit -am "test test"
将当前工作区中已经跟踪文件的修改和删除添加到暂存区并且提交(即包括add和commit),但是不会影响到新建的文件
git log -p
列出详细区别(generate patch,包括增加了那一行,删除了哪一行)
git log --stat
列出次一级别的详细区别(只列出某个文件总共增加了多少行,删除了多少行等)
git log -2
仅列出最近两次的提交
git log --pretty=oneline
以简洁的格式显示日志,有oneline,short,full,fuller,format等
git log --graph
会显示简单图形
git diff
比较暂存区和工作区
git diff HEAD
比较最近一次提交和工作区
git diff maint
比较maint分支和当前工作区
git diff da895 b325c
在两个提交点之间比较
git diff --cached
比较最近提交和暂存区
git diff <branch1> <branch2>
在两个分支之间比较
git status -s
-s表示give the output in the short-format 其中绿色表示在暂存区没有提交的文件,红色表示修改了而没有添加到暂存区的文件
==============查看、切换、创建和删除分支=================
git checkout -b <newbranch>
新建一个名为newbranch的分支,然后切换到该分支,同git branch newbranch git checkout newbranch这两个命令分别执行时的效果一样
git checkout -b <newbranch> <oldbranch>
基于oldbranch创建新的newbranch
git checkout $id
把某次历史提交记录checkout出来,但无分支信息,切换到其它分支会自动删除,此时可以使用git checkout -b <newbranch>就可以在这个提交点上创建分支了,同下面这个命令
git checkout $id -b <newbranch>
把某次提交记录checkout出来,创建成一个分支
git branch --list
查看本地的分支情况,同没有参数的git branch命令效果一样,可以使用pattern来过滤
git branch -r
显示远程分支情况 可以使用pattern过滤
git branch -a
包含--list和-r的效果,可以使用pattern过滤
git branch -d branchname
删除名为branchname的分支
git branch -D <branchname>
强制删除某个分支(未被合并的分支被删除的时候需要强制)
git push origin :<branchName>
删除远程分支,这是gitV1.7.0之前的版本
git push origin --delete <branchName>
新版git删除远程分支
git branch -v
查看各个分支最后的提交信息
git branch --merged
查看已经被合并到当前分支的分支
git branch --no-merged
查看尚未合并到当前分支的分支
================标签==========================
git tag
列出所有标签
git tag -l <pattern>
列出所有标签,并且可以使用匹配,-l是--list的缩写
git tag <tagname>
新建一个轻量级的tag
git -a <tagname>
新建一个含附注的标签
git -a <tagname> $id
在某次提交上加标签
git push origin <tagname>
将某个标签推送到远程仓库
git push origin --tags
一次性推送本地所有标签到远程仓库
git tag -d <tagname>
删除本地标签
git push origin :refs/tags/<tagname>
删除远程标签,这种方法是在v1.7.0
git push origin --delete tag <tagname>
新版git里删除远程分支的方法
git config --global mergetool.keepBackup false
为了在使用mergetool时不再生成烦人的.orig备份文件
===============远程仓库===================
git remote show <name>
查看名为name的远程仓库信息
git remote prune <name>
删除所有与远程仓库name相关,已经在name里被删除但是本地仍然保留的分支(ie. git remote prune origin)
git cherry-pick <commit id>
把commit从一个分支copy到另一分支
git branch --set-upstream master origin/master
远程分支拷贝本地