1 git介绍
它是一个分布式版本控制系统,一种记录一个或者若干文件内容变化,以便将来查阅特定版本修订情况的系统。工作原理:存储记录的是文件快照,而非文件差异,每次提交更新,git会对全部文件制作一个快照并保存这个快照的索引。
2 Git工作流程
git外部,内部工作流程如下图所示。git分为四个区:分别为工作区(当前工作的目录),暂存区(执行git add 到达的区域),仓库区(执行git Clone文件存放的区域,概念比较抽象),和远程仓库。下图给出了在操作一些命令之后,所对应仓库之间的流程。一个工程至始至终在本地只有一份文件,在网络远程还有一份,也就是github的那份。
3 git的五种状态
1.未修改(origin)
2.已修改(modified):edited之后
3.已暂存(staged):执行 git add . 之后
4.已提交(committed): 执行 git commit 之后
5.已推送(pushed): 执行 git push 之后
4 git一般工作流程及对应的命令
1.克隆Git资源作为工作目录 :git clone <版本库的网址>
eg: git clone https://github.com/mouchengdeng/myProject
2.在克隆的资源上添加或修改文件
3.在提交前查看以及对比文件操作 git diff
4.如果他人修改了,你可以更新资源 git pull
5.提交修改 git commit –m “modify”
6.在修改完成后,如果发现错误,可以撤销修改并提交 git checkout .
7.推送到远程仓库 git push
5 git常用命令及不同场景对应的命令
在git不同状态下,对应的命令是不同的,比如查看修改文件差异命令:1已修改,未暂存 git diff 2 以暂存,未提交 git diff -- cached
5.1从远程仓库克隆 git clone –b <分支名><gitlab地址值><仓库名>
5.2 查看操作:git status <[some file ][some directory]> 查看当前文件状态或者目录下文件状态。
5.3 查看日志 git log 查看当前分支提交的日志,注意每次提交都包含了哪些信息
5.4 查看某个分支提交的日志: git log origin /<branchname>
5.5 查看所用分支信息 git branch -a
5.6 查看当前git仓库在服务器的存储链接 git remote show origin
5.7 查看当前仓库存在的标签 git tag –ln
5.8 查看文件或者目录发生过哪些提交 git whatchanged <some file / some dir>
5.9 查看某次提交修改了哪些内容 git show < commit –id >
5.10查看某些文件和目录下文件的区别 git diff <some file /some dir>
5.11 暂存修改的文件 git stash save
5.12 查看暂存修改的文件 git stash show stash
5.13查看当前git仓库在服务器的存储链接 git remote show origin
5.14 设置修改仓库链接 git remote set –url origin <url>
5.15 解除关联 git remote remove origin
5.16 增加仓库 git remote add origin <url>
5.17 不同状态下文件对比操作
5.17.1 已修改,未暂存 git diff
5.17.2 已暂存,未提交 git diff –cached (检查本地仓库与暂存区 之间的差异)
git diff HEAD (检查版本仓库当前分支HEAD与本地工作区之间的差异)
5.17.3 已提交,未推送 git diff master origin/master
5.18 不同状态下文件对比操作
5.18.1 本地未修改未提交的情况下
git fetch origin 更新代码到本地仓库
git rebase origin/<current branch > 与本地提交进行合并
git log 查看一下是否有合并代码的当前分支
5.18.2 当本地有修改未提交的情况下
git stash save 暂存当前修改内容
git stash show 查看暂存内容
git fetch origin 获取服务器上游最新的提交到本地,但未做与当前分支的合并
git rebase origin/<current branch> 合并更新到本地的提交到当前分支
5.18.3 如何合并出现的冲突
git status 查看哪些文件出现了冲突
vim <conflict file> 解决这些冲突文件
git add < conflict file > 暂存这些冲突文件
git rebase –continue 继续完成合并操作
5.19 不同状态下的撤销操作
5.19.1 已修改,未暂存 git checkout .
5.19.2 已暂存,未提交 git reset
5.19.3 已提交,未推送 git revert
5.19.4 已推送 git revert <commit id>
5.19.5 git push origin <branchname>