1. git diff
### 1. 工作区和暂存区(Stage)之间的差异
git diff # 这个命令显示的是详细的差异,有时候会很多很杂乱;
git diff --stat # 直接显示哪个文件有了多少变化
git diff a.txt # 单独比较某个文件
### 2. 工作区和版本库之间差异
git diff HEAD 或者 git diff cimmit-id # 也可加上--stat指令查看简易的差异
### 3. 暂存区和版本库之间的差异,需要添加–cahced
git diff --cached HEAD
git diff --cached commit-id
git diff --cached head xxx # 比较文件的方式
git diff --cached commit-id xxx # 比较文件的方式
### 4. 版本库之间提交记录的比较
git diff commit-id commit-id
git diff commit-id commit-id xxx.file
### 5. 不同分支之间的比较
git diff test-1 master
git diff test-1 master xxx.file
转自 https://zhuanlan.zhihu.com/p/356493390
2. git fetch与远程仓库副本
git fetch, git pull 以及 FETCH_HEAD - _Venom_ - 博客园
Git Reset 三种模式 - 简书
1. 初始化及提交
初始化后,会在当前目录自动创建 .git 文件夹,该文件是Git中最重要的文件夹,因为Git相关文件以及版本都将保存在该文件夹中,有了它,妈妈再也不用担心我好多文件来记录版本了。通过Git命令可以将所有版本保存在 .git 文件中,两条命令创建一个版本:
2. 两个区域四个状态
工作区:当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看。
版本库:工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m '又一个版本'】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。
注:红色的文件是工作区和暂存区的差异。绿色的文件是暂存区和版本库之间的差异。为什么要设暂存区?应该是给一个反悔的缓冲。
目前已使用Git的四个命令,这四个命令已经可以代替本地多个文件保存版本的方式:
- git init,初始化,表示即将对当前文件夹进行版本控制。
- git status,查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。
- git add 文件名,将指定文件添加到版本库的暂存状态。
- git commit -m '提交信息',将暂存区的文件提交到版本库的分支。
- git log,查看提交记录,即:历史版本记录
3. 回滚
用git log或git reflog查看历次提交,再用git reset(将工作区的代码)回滚。
有如下例子及两次提交:
有一天需要将工作区的代码回滚到第一个版本,可这样操作:
如果某一天想要在回有非洲专区功能的版本怎么办呢?来来来,不能像以往通过【git log】来查看记录再回滚了,再回去需要这么搞:
4. 分支
有一个原始版本c1共100个文件,之后一个版本c2又修改了30个文件。那么在c2的版本里只需记录和c1不同的文件内容即可,也即增量式更新。怎么建立版本间的联系?有个叫指针的东西从c2指向c1。当我们需要加载c2时,顺着指针拿出c2和c1即可。但实际画图时为方便观看,是c1指向c2。
branch称为分支,默认仅有一个名为master的分支。一般开发新功能流程为:开发新功能时会在分支dev上进行,开发完毕后再合并到master分支。
学习参考上图,也可以按照着这样的流程进行开发,如果遇到上文开发到一半需要临时修复Bug的情况,可以按照下图的流程进行:
注意:git merge 时也可能会出现冲突,解决冲突的方式上述stash相同,即:找到冲突文件,手动修改冲突并提交,此处不再敖述。
branch相关常用命令:
- git branch 分支名称 创建分支
- git checkout 分支名称 切换分支
- git branch -m 分支名称 创建并切换到指定分支
- git branch 查看所有分支
- git branch -d 分支名称 删除分支
- git merge 分支名称 将指定分支合并到当前分支
5. 远程托管
在家里,小P开发完毕部分功能将代码推送到GitHub。