git是当下最先进的分布式版本控制系统,原来在公司一直用的svn,不过由于想要尝试制作个人博客,就通过廖雪峰老师的git教程开始了学习,由于我是在windows系统下进行操作的,所以以下操作均已windows为基准
$ git config --global user.name 'youname'
$ git config --global user.email 'youemail'
通过输入上述命令绑定用户名和邮箱,加了–global表示这台电脑会统一使用这个配置
给单独仓库设置用户名和邮箱,要先进入对应仓库目录,然后执行命令:
$ git config user.name 'youname'
$ git config user.email 'youemail'
git --list可以查看当前配置,在当前仓库下使用会优先显示当前仓库的配置,没有配置的内容会显示全局配置修改的时候也是执行相同的命令,改变youname和email即可
打开cmd或者power shell,然后通过cd e:\path进入要创建仓库的文件夹,并执行git init命令
$ git init
提示创建好了一个空仓库,当前目录下多一个.get的目录,这个目录默认是隐藏的,用于跟踪管理git版本库,为了避免仓库出现问题,最好不要修改这个目录的文件
git是无法操作仓库目录外的文件的 ,只能操作当前仓库目录下的文件
将文件添加到仓库分两步
$ git add xxx.txt
$ git commit -m'xxxxxxxxxxxxx'
git add xxx.txtgit commit -m'xxxxxxxxx',
git add是将某个文件添加到暂存区,后面的xxx.txt可以是文件也可以是当前目录下的一个目录git add /
git commit是将暂存区的内容提交到仓库,-m'xxxx'是本次提交的描述,必填
stage的区域,用来存放git add命令添加的文件通过git status可以查看仓库当前状态,目前记录下有这几种状态
commitadd到暂存区当仓库管理下的文件在工作区被修改时,可以通过git diff filename或者git diff HEAD --filename来查看差异
git diff filename和git diff HEAD --filename的差异git diff filename
工作区和上次提交版本的文件当前工作区和暂存区的文件git diff HEAD filename
需要注意的是git diff只会显示工作区的差异,当文件被add到暂存区时,在执行这个命令就什么也不会返回,加上--cached参数后,即git diff --cached filename则可以查看暂存区和版本库的差异
git log命令会列出所有历史记录,最近的排在上方,记录过多时,通过↑、↓来控制显示,且通过q退出,如果要看详细的版本分支结构可以通过加上参数实现,详细参数
git reflog可以查找所有历史的记录,可以找到指定commit id,对指定版本进行相应操作
$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard 'commitID'
$ git reset HEAD 'filename'
HEAD^n可以回退到n个版本git reflog查找要退回的commitID执行git rm filename命令,即可删除仓库文件,注意:还需要commit,不然仓库的文件会还存在
add和commit操作并不是1对1的关系,commit只是提交暂存区的文件,所以一次commit可以对应多次addadd后,再次修改文件且不add,然后直接commit,会发现只有第一次的修改被提交了git rm而是直接在本地删除时,需要使用commit -am'xxxxx',这样才会将删除同步到仓库,而git rm删除的话,只需要commit -m即可commit id的版本