在初始化git版本库之后会生成一个隐藏的文件 .git ,可以将该文件理解为git的版本库repository,而我们自己建立的项目文件夹即工作区 working directory, 在.git 文件夹里面还有很多文件,其中有一个index文件就是暂存区也可以叫做stage,git还为我们自动生成了一个分支master以及指向该分支的指针head ,如下图:
从图中可以看出来respository包括分支master和stage, working diretory可以理解为我们打开开发环境如eclipse,里面的内容即工作区的内容,在工作区里面有的代码以及配置文件等我们需要提交到版本库里面,最终是到了分支master上面,暂存区只是一个临时保存修改文件的地方。
平时我们使用的命令git add file1 是把文件从工作区提交到暂存区,git commit -m "prompty" file1 是把文件从暂存区提交到了分支master下面,这里因为只有一个分支master,就提交到master上了
基础
git init 初始化版本库
git add <file> 将修改添加到暂存区 (一般为git add.)
git commit 将暂存区提交到版本库分支
git commit -a -m '修改内容说明' 跳过暂存区直接提交工作区的修改
git status 查看工作区的状态
git diff <file> 查看工作区修改内容,即工作区与暂存区的区别
git diff --cached 比较的是暂存区和版本库的差别
git diff HEAD 可以查看工作区和版本库的差别
git reset --hard <commit_id> 恢复到指定id的版本
git log 查看提交历史
git log --pretty=oneline 查看格式化后的提交历史
git reflog 查看所有分支的所有操作记录(包括(包括commit和reset的操作)
git checkout -- <file> 用版本库里<file>的版本替换工作区<file>的版本。一种是<file>自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;一种是<file>已经添加到暂存区后,又作了修改,撤销修改就回到添加到暂存区后的状态。
git checkout -b <name> 创建并切换<name>分支
git branch 查看分支
git branch <name> 创建<name>分支
git checkout <name> 切换到<name>分支
git merge <name> 合并指定分支到当前分支
git branch -d <name> 删除<name>分支
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容
git log --graph --pretty=oneline --abbrev-commit 查看分支的合并情况
git log --graph 查看分支合并图
git merge --no-ff -m "普通模式合并分支" <name> 采用普通模式合并制定分支到当前分支
git stash 保存工作区的内容,以后恢复工作区后可以继续工作
git stash apply 恢复保存的工作区,但是恢复后,stash内容并不删除
git stash drop 删除保存的工作区的内容
git stash pop 恢复保存的工作区,同时删除stash内容
git branch -D <name> 强行删除分支
远程仓库
ssh-keygen -t rsa -C "youremail@example.com" 创建SSH Key
vi .git/config
catid_rsa.pub ,复制公钥到gitlab;
git push -u origin master 把本地库的所有内容推送到远程库
git fetch <remote-name> 从远程仓库抓取数据
git remote show <remote-name> 查看远程仓库信息
git remote rename <old-name> <new-name> 远程仓库重命名