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.txt
git commit -m'xxxxxxxxx'
,
git add
是将某个文件添加到暂存区,后面的xxx.txt
可以是文件也可以是当前目录下的一个目录git add /
git commit
是将暂存区的内容提交到仓库,-m'xxxx'
是本次提交的描述,必填stage
的区域,用来存放git add
命令添加的文件通过git status
可以查看仓库当前状态,目前记录下有这几种状态
commit
add
到暂存区当仓库管理下的文件在工作区被修改时,可以通过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
可以对应多次add
add
后,再次修改文件且不add
,然后直接commit
,会发现只有第一次的修改被提交了git rm
而是直接在本地删除时,需要使用commit -am'xxxxx'
,这样才会将删除同步到仓库,而git rm
删除的话,只需要commit -m
即可commit id
的版本