初始化一个空git:
git init
从已有仓库clone一个:
git clone git://10.85.21.71/vm/test.git kris_test //指定clone到本地kris_test目录
查看文件状态:
git status
Note: 当只修改文件权限时,git只关注执行bit,其他bit改变之后git status不会受影响。
跟踪或者添加文件:
git add test //只添加test文件
git add . //添加已修改文件和新文件
git add –A //添加所有文件,包括被删除的文件
git add –u //添加已修改和被删除文件
添加忽略文件: //自己生成文件等
创建.gitignore, 往此文件添加内容即可,可以是相对路径,可是匹配格式,格式规范如下:
1. 空行和#开头的行被git忽略。
2. glob模式匹配(正则表达式简化版本),有*,[abc],?,[0-9]。
3. 以/结尾的表明要忽略整个目录。
4. 忽略指定模式以外的文件或目录,可以在模式前加上!取反。
Note: 想要忽略文件,此文件必须不能在git仓库中。
查看文件差异:
git diff //查看已修改文件的差异, 比较已修改和暂存区文件
git diff –cached //查看暂存区和git目录的差异,也可以用git diff –staged
git diff test.file //查看某个文件的差异
提交文件: //git add/rm之后才会被提交
git commit
git commit –a //相当于git add + git commit
删除文件:
git rm file //git rm没有 git rm .
git rm –f file //删除之前修改并且已放到暂存区域需要加-f
git rm –cached file //只删除git仓库文件,本地保存,例如日志文件。
git rm dir/\*.log //递归删除dir下的*.log文件,\是git自己的语法,表示要递归,
有\则只删除当前目录。
查看提交历史:
git log
git log –p -2 //-p显示每次提交内容差异,-2显示最近两次更新。
git log –stat //仅显示简要的增该行数统计
git log –pretty=oneline //只在一行显示commit信息,pretty后面可以跟online,format, short, full等。
git log –pretty=format:”%h - %an:%s” //提交简短哈希串,作者,提交说明。
git log –since=2.weeks //显示最近两周提交
git log –author=Kris //只显示作者Kris的提交
git log file //只显示某个文件或者目录的提交信息
修改最后一次提交:
git commit –amend //在当前的commit上提交,也就是同一个commit id。执行后后面的提交改动会覆盖上一次的。
Note: 在操作次命令前先运行git add/rm将文件加到暂存区域才有意义。
取消已修改的文件:
git checkout file //file会被还原成未修改状态
取消已暂存的文件:
git reset –hard //本地目录,暂存区域都会被reset
git reset –soft //最后一笔改动会到暂存区, 本地和暂存区域原有部分不变化
git reset –mixed //默认模式,暂存区域会被改变,本地目录不做变化
git reset –hard HEAD^ //上一次提交,也可以写成HEAD~1。
git reset –hard HEAD^^ //上上一次提交,可以写成HEAD~2.
查看远程仓库:
git remote –v
添加远程仓库:
git remote add qcs_mirror git://10.85.21.71/x6_vm/non_hlos.git //将远程non_hlos git仓库添加到本地,名字为qcs_mirror, 后面操作qcs_mirror就等同于操作远程non_hlos git。
从远程仓库抓数据:
git fetch qcs_mirror //会将远程仓库数据抓到本地,但是并不做merge
抓取数据并合并:
git pull //相当于git fetch + git merge, 抓取的是当前分支对应远程仓库数据并和本地的代码合并。
推送数据到远程仓库:
git push origin master //本地master分支的code推送到远程origin仓库中。Git clone时默认使用master作为远程仓库对应本地的名字。
查看远程仓库信息:
git remote show origin
重命名远程仓库名字:
git remote rename qcs_mirror qth_mirror //将远程仓库对应本地的名字从qcs_mirror改成qth_mirror。
删除远程仓库:
git remote rm qcs_mirror //只是删除远程仓库和本地的连接,并不是真删除了远程仓库的东西了。
列出所有标签:
git tag
列出某部分标签:
git tag –l ‘v1.0.*’
新建标签:
git tag v1.0 //标签名字是v1.0
git tag –a v1.1 –m “version 1.1” //其实是多加了一个commit,一般没必要用这个。
查看标签:
git show v1.0 //标签是就commit打的,所以看到的commit是基于当时打tag的时间点。
后期添加标签:
git add –a v1.1 commit_id //在提交时忘记打标签,也可以后期基于某个commit id补上。
推送标签:
git push origin v1.1 //推送v1.1这个标签到origin 仓库
git push origin –tags //推送所有本地新增标签到origin仓库
删除标签:
git tag –d v1.1 //删除本地标签
git push origin :refs/tags/v1.1 //删除远程仓库标签