Vim+Gig是在服务器端开发再合适不过的神器!这里只是对自己平常工作中常常使用到的git命令做一个小小的总结,方便程序员开发和版本控制!
git的配置文件
1、git有三个级别的配置文件,分别是版本库级别的配置文件、全局配置文件(用户家目录下)、系统配置文件(安装git的时候所在的目录,一般情况下是在/etc/)。它们的有限级别如下,.git 目录下的config文件配置会覆盖用户家目录下的配置文件,而用户家目录的配置文件会覆盖系统的git配置文件
2、git config -e 对版本库中的.git/config 文件进行编辑
git config -e --global 对主目录下的.gitconfig文件进行编辑
git config -e --system 对系统级别的配置文件进行编辑
3、git config
git config
git --version
查看当前git的版本
初始化代码仓库(此时在当前目录下,就会多一个 .git 的目录,就是代码仓库)
git init
git config --global user.name 'zero'
git config --global user.email '[email protected]' (自报家门)
git config --global color.ur true(在命令行中开启颜色显示)
对git进行配置
git rev-parse --git-dir
显示版本库.git目录所在的位置
git status -s
功能:用来比较,当前的工作目录和缓存区的状态
??:该文件还没有被git进行追踪
A:当前工作目录同缓存文件相比,新增加的文件
M:当前目录同缓冲区相比,已经进行了改变(Modify)
D: 当前目录同缓冲区相比,删除的文件
注意:git status 是以缓冲区中的内容为标准的,所有的AMD都是以缓冲区的内容为准,经过同缓冲区的对比,发现当前工作区进行了AMD等操作
git diff
功能:如果没有其他参数,git diff 会显示自从你上次提交快照之后尚未缓存的所有更改
注意:对比的参照点仍然是缓冲区中的内容,将当期那工作目录中的文件同缓冲区做对比
git diff --cached
功能:将缓冲区的内容同快照中的内容进行对比
git diff HEAD
功能:将当前工作目录中的文件,同快照中的内容进行对比,HEAD(当前工作分支)
git commit -m '对本次提交的快照的说明'
功能:将缓冲区中的内容添形成一次快照(也就是打一个版本)
git commit -am '对本次提交的说明'
功能:同git commit -m 的功能类似,但是,由于多了一个a参数。这样就有一个隐含的操作,将已经追踪的文件先进行自动提交(注意:是已经追踪到的文件)!
git log :
功能:显示从最近到最远的提交日志
个人体会是,我们最想要的就是commmitid和对本次提交的说明
git reset --hard commitid
功能:回到指定的某个版本,注意,是连通当前的工作区一起回去,很可怕的一个命令。如果你并没有对当前的工作目录进行提交,而且还执行了这个操作,那么就杯具了,你上次提交后所有的更改内容就全部丢失而来,本人在这方面就犯了很大的错误!想想都是血泪啊!
git reflog
功能:用来记录你的每一次命令,这样我们就可以看到所有的commitid了(而git log只能够用来查看当前版本的commitid以及以前提交版本的commitid)
git checkout -- file
功能:将缓冲区或者快照中的指定文件恢复到当前的工作目录
注意:--是必须要写的,如果不写的话,就成为了分支的切换。
同时,我们应该明白,恢复的先后顺序。执行完改命令后,如果缓冲区中有该文件的话,那么工作目录就会恢复到缓冲区的样子!如果缓冲区没有文件的话,那么就会恢复到最新提交的版本上面!
git reset HEAD file
功能:将缓冲区中的指定文件,回退到最新的一次commit版本。
这个命令还是很有用的,如果我们误操作了,并且进行了add,那么此时再用 git checkout --file 恢复工作区中的内容的话,就没有任何效果了!但是执行git reset HEAD file这个命令,就可以将最新一次的commit中的file文件拉回到缓冲区中,然后在通过git checkout -- file命令,恢复到工作区中!
git branch
功能:展现当前的所有分支,前面带有 "*" 是所在分支
git branch 分支名
功能:创建一个新的分支
git checkout -b 分支名
功能:创建新分支,并切换到改分支上
git branch -d 分支名
功能:删除指定的分支(不可以删除当前所在分支)
git checkout 分支名
功能:用于在不同的分支之间进行切换
注意:由于版本的不同,在操作上可能有所不同!在某些版本上必须先进行git add , commit 之后,才能进行分支的切换!(1.8.3之前的貌似都需要提交才行),而有的分支则不需要进行此操作!
git merge 分支名
功能:将指定的分支合并到当前的分支
关于分支的合并我想说一下,自己的理解,个人认为所谓合并,其实是对所有修改的合并!这里举个例子说明会更好一些:
A作家写初步完成了一篇长篇小说的初稿,但是呢仍然需要对这篇长篇小说进行修修改改!处于对质量的严格要求!此时A作家找到了B作家,希望B作家提出宝贵的意见,让他对这篇小说也进行修改!等修改的差不多了,A作家,就让B作家把他的修改内容发给A作家,A作家再将B作家的修改添加到自己既有的修改上面!(--这应该就是合并)
如果A作家的修改的内容,B作家也进行了修改,那么就有A作家去决定改要谁的修改!(--这就是解决冲突)