Git是一款分布式的版本控制系统,用来管理我们的项目和代码,常用于敏捷开发当中。
- git拥有强大的分支管理系统。svn是集中式。
- 一直创建文件的备份,以防代码丢失。
- 时间旅行,提交的版本可以随时“穿越”,容错率大。
- 模块化,组件化,每个人管理自己的分支,便于维护。可合并代码,解决冲突。
在学习git命令之前,我们需要先了解几个专有名词:
工作区:用于程序员开发的地方。
暂存区:不保存实体文件,通过id指向每个文件实体。
历史区/版本区:保存了被提交过的各个版本,每次提交都会生成唯一的版本号。
远程仓库:用于协作关系,与协作者分享本地的修改。一般保存可执行的版本。
一、安装:
windows系统下载地址:http://git-scm.com
二、配置用户:
下载完成第一步就是配置用户:
配置用户名:git config --global user.name "你的用户名"
配置邮箱:git config --global user.email "你的邮箱"
配置完成可以用git config --list
命令查看是否配置完成
三、初始化本地git仓库:
在需要git管理的文件夹下,初始化本地git仓库:git init
查看状态:git status
(红色是工作区,绿色是暂存区),有提示下一步操作。
四、常用命令:
-
git add .
(点不能少~):将当前目录的所有的文件提交到暂存区 -
git commit -m "需说明的信息"
:将暂存区的内容提交到历史区 -
git log
:查看提交日志,每次提交对应一个40位的版本号,所以历史区也被称为版本区 -
git reflog
:查看全部日志,展现全部的操作。其中,commit,是提交到历史区操作,reset:moving to…是历史区回滚到…版本,reset:moving to HEAD是暂存区回滚上一个版本 -
git diff
:工作区和暂存区代码相比较 -
git checkout .
(也有个点~):从暂存区将工作区内容覆盖。 -
git reset HEAD
:暂存区回滚一轮,只能回滚一轮。一般伴随着git checkout .更新工作区。 -
git reset --hard +版本号
:历史区回滚一轮,同时修改了工作区和暂存区。版本号提取一部分即可。
五、关于分支的命令:
工作中涉及到协作,自然就会涉及到分支,这也是git中最强大的部分
-
git branch
:查看分支,带*号的是你目前所在的分支。 -
git branch -a
:查看所有本地分支和远程分支 -
git branch +分支名
:创建一个分支。值得注意的是,创建完分支其实只相当于复制了一份,直到提交一次才算两条不同的分支。 -
git checkout +分支名
:切换到指定分支 -
git checkout -b +分支名
:创建新的分支并切换到该分支上。 -
git branch -d +分支名
:删除分支,需要切换到其他分支才能删除当前分支 -
git merge +分支名
:和某某分支合并。合并之前需要git pull
拉一下最新代码。合并代码避免不了冲突,需要手动解决冲突。
六、关于远程仓库:
-
git remote add origin(远程仓库别名) +(远程仓库地址)
:将本地仓库和远程仓库关联起来 -
git remote -v
:查看是否关联上了 -
git remote rm origin(别名)
删除关联远程仓库 -
git clone +(远程仓库地址)
:克隆远程仓库 -
git pull origin master(分支名)
:把master分支上内容跟新到本地 -
git push (-u) origin master(分支名)
推送到远程仓库 。一般推之前也进行一次,git pull
操作。若不想每次推送都输入用户名和密码,可设置git config credential.helper store
,永久保存账号。保存账号就对应切换账号,可设置git config credential.helper ‘’
七、忽略特殊文件:
目录中不想提交到远程仓库中时,就创建一个.gitignore文件,把要忽略的文件名写进去,git上传的时候就会自动忽略这些文件。GitHub为我们准备了各种配置文件,参考https://github.com/github/gitignore。例如*.js忽略js文件,node_modules/忽略node_modules文件。
git命令还有很多,以上只是列举了项目最常用的一些命令,应对一般项目没问题了,查找起来相对方便。供大家参考。