1、git关于目录的一些概念
三个分区:
工作区,即当前工作的文件夹
暂存区:也被成为Index或stage,用于缓存修改
版本库:各分支以及指向分支的指针
2、配置:--system为所有用户配置,--global为当前用户配置,--local为当前文件夹配置
git config --global user.name “” #配置用户名,push时需要有自己的名字
gitconfig --global user.email 3748374@qq.com #配置邮箱地址
git config –list #列出所有配置信息
3、生成SSH:
ssh-keygen -t rsa -C “3748374@qq.com”,如果不设置密码可连续按三次Enter键生成成功,在.ssh目录下生成id_rsa和id_rsa.pub两个文件,前者为私钥后者为公钥,将后者复制并在git上进行配置,这样git服务器与客户端进行ssh通讯时将自动加密。
4、初始化有两种办法:
在本地目录创建版本库: git init 然后可以上传至服务端:git remote add [remotename][remoteurl],例如:gitremote add origin git@server-name:path/repo-name.git
从服务端克隆到当前目录: git clone [remote-url][local-dir] ,local-dir也可以为空,默认是在当前目录下克隆服务端文件目录。
5、添加、提交
git add [local-path] 添加某文件到暂存区,只有暂存区的内容才会被提交。
git commit -m “[message]”,-m表示该版本的备注信息,如果没有该选项会跳转到编辑模式让用户输入信息。
6、撤销修改:
git checkout -- filename #回滚该文件到add或commit前的状态,如果您最近的修改还没git add,文件会回滚到上一次git commit 的状态,如果你已经git add 并又做了修改,回滚到上一次git add的状态,这说明命令只能撤销工作区下的修改,不能撤销暂存区和版本库中的修改。
git reset HEAD [filename] #撤销暂存区修改,并且暂存区修改被移出到工作区,注意多次add到暂存区的修改不会被按顺序撤销,上一次commit之后的所有暂存将一次性被回退。
7、版本回退回退操作:
git reset HEAD~n#回退到前n个版本
git reset [options][comitid] #回退到指定id的版本
options:
--mixed #这时默认模式,只回退暂存区,不回退工作区
--soft #只回退版本,暂存区和工作区不做修改,作用举例:加入版本已经有a-b-c,我们想把a-c的变化patch给别人,直接操作会导致两个patch,那怎么办么,git reset –soft a,将版本重置到a,这时b c已经不存在了,但c状态的所有修改都还在,重新提交到d,则版本树变为a-d,此时patch即可。
--hard #重置暂存区和工作区,commit以后的所有内容被丢弃
--keep #重置暂存区,重置与版本库不同的文件,如果有本地修改,重置退出。
--merge #重置暂存区,并重置和版本库不同但和暂存区相同的文件
8、显示历史记录
gitlog [--oneline] #显示commit的sha值、作者、日期、提交时的备注信息,可选项—oneline表示精简输出日志,只显示sha值前几位和备注信息。
gitreflog #查看版本库的所有操作记录,可用于查看sha值并找回已回退版本的之前版本。
9、标签
git tag “标签”
10、推送
git push 远程名 本地分支:远端分支 #本地分支为空相当与删除远端分支
11、拉取
git pull 远程名 远端分支:本地分支
12、分支查询、创建、切换、删除、合并
git branch #列出所有分支
git branch 分支名 #创建分支
git checkout 分支名 #切换分支
git branch -d 分支名 #删除分支
git merge 分支名 #合并分支
13、远程
git remote [-v] #查询远程名和地址
git的一个简单教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git的一个操作总结结构图: