Git基础命令

使用Git时,有一些非常基本的命令..我们可能在处理大小项目,尤其是小项目中会经常用到(大项目可能还需要一些高级命令了)


具体的使用技巧,请参考Pro Git(http://progit.org/book/zh/)..此书甚好..大赞..


git init:初始化一个git项目,会在当前目录下新建.git文件夹..这就是以后的git仓库所在

git add filename:该命令将filename进行跟踪..以后git会帮助跟踪filename(此处的filename利用shell的glob模式匹配)

git add dirname:该命令将dirname下的所有文件进行跟踪

git commit:将所有add之后的进行提交到git仓库..此时调出编辑器,用以编辑提交日志..这就完成了一次提交...git的记录是按照commit来统计的..也就是说..前面的add无数次没关系,commit才算


git下的文件一般有几种情况:

1.untracked:未跟踪,也就是git不会保存该文件

2.added:已经添加到git的缓存区域,这个针对的是tracked的文件(也就是我们做过git add的文件)..added状态之后我们同样还可以编辑修改,只不过新的文件被视作untracked,我们仍然需要git add将最新修改添入到缓存区域

3.committed:已经添加到git仓库,也就是说已经被git保存了(也就是我们git commit之后)


总之.要记住的是.add之后仅仅是缓存了,.没有add的内容(比如add之后做的修改),被视为untracked..只有commit之后才被存入git仓库中..


在git add时,我们通常会使用比较普通的git add .,会把该目录下所有文件统统track起来..如果有些文件我们不想记录,比如二进制文件啦..生成的文件啦..我们可以在当前目录下新建.gitignore文件,里面一行记录一个无需track的文件,可以使用glob元字符匹配文件或者目录


git status:显式当前git的状态,会显示那些untracked,添加的,修改的,未提交的..我们可以根据上面的提示命令进行相关操作..

git diff:利用我们先前设置的merge.tool进行比较,对象是当前文件和已经缓存了的文件..如果要比较和仓库的区别,我们可以添加--cached选项

git rm filename:删除对应的文件(不仅从git跟踪文件中删掉,连当前目录的文件也没了)..如果不希望删掉真实文件,那么还需要添加--cached选项

git mv from to:将from移动到to..基本等同于mv操作,可以用于重命名

git log:查看git仓库的提交历史..常用的选项是-no,用以看最近no.的提交还有--pretty=format:"format_str"..可以按照自己的格式进行输出..请man之..此log非常智能,可以按要求输出时间作者之类的东东..

git commit --amend:取消最近一次commit..注意是commit,而不是普通的add

git reset HEAD filename:取消在缓存区的filename..将其恢复到之前未缓存的状态(修改仍在,只是没有add罢了).注意,此时filename必须是在缓存中的

git checkout -- filename:直接从仓库里取得对应file,并对当前目录下文件直接覆盖..checkout用处很大..以后的branch还要用到

git tag:显示当前所有标签..有两种标签..一种是轻量级标签,直接git tag TagName即可,这仅仅是名称而已..不会有任何变化,另一种是标记标签,需要git tag -a TagName..这样的tag相当于一次commit..会被git保存起来..就算以后删除了也能恢复的..既然如commit..肯定还是需要添加日志信息的.或者直接-m加信息也行..还有一个变种,就是git tag -s..会对标签进行签名化..这个可能是为了保险安全起见..git tag会对当前进行标签..如果对以前的话,则需要在末尾添加commit对应的hash值(前几位即可)..

           记住..标签其实就是针对某次commit的类似别名的东东..这样就无需输入commit的hash值那么复杂..直接可以输入tag名即可..

git reset Hash/Tag:这个直接回复值Hash/Tag的这次提交..reset有多种模式..我们以后在详细谈谈..

git show Hash/Tag:显示某次提交的具体情况..


git还可以和远程进行交互..额..其实这个也是git的主要功能..主要是我的网络比较差..基本连不上..所以放到最后说..


git clone url path:git自动从url标志的地方将git仓库克隆到path处..并默认命名为orign..也就是有了以orign的remote仓库.

git remote add name url:添加url的一个远程仓库,并命名为name

git remote -v:显示所有的仓库名称和url

git remote rename old new:重命名某个远程仓库

git fetch name:从name的远程仓库里获取最新的commit..注意..必须先clone..然后才能fetch..顺序问题

git remote rm name:删除name远程仓库

git push name branch:将本地的branch推送到name远程仓库..这点我们以后论述到branch再细说..

git remote show name:显示name的具体情况


就和学Linux一样..多man之..多google之..必有大成..

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值