1.   git diff

  1. ### 1. 工作区和暂存区(Stage)之间的差异
  2. git diff               #  这个命令显示的是详细的差异,有时候会很多很杂乱;
  3. git diff --stat        # 直接显示哪个文件有了多少变化
  4. git diff  a.txt        # 单独比较某个文件
  5. ### 2. 工作区和版本库之间差异
  6. git diff HEAD 或者 git diff cimmit-id # 也可加上--stat指令查看简易的差异
  7. ### 3. 暂存区和版本库之间的差异,需要添加–cahced
  8. git diff --cached HEAD
  9. git diff --cached commit-id
  10. git diff --cached head xxx # 比较文件的方式
  11. git diff --cached commit-id xxx # 比较文件的方式
  12. ### 4. 版本库之间提交记录的比较
  13. git diff commit-id commit-id
  14. git diff commit-id commit-id xxx.file
  15. ### 5. 不同分支之间的比较
  16. git diff test-1 master
  17. git diff test-1 master xxx.file
  18. 转自 https://zhuanlan.zhihu.com/p/356493390

2.   git fetch与远程仓库副本

 git fetch, git pull 以及 FETCH_HEAD - _Venom_ - 博客园

每天一Git之 Git log - 知乎

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。

参考:老铁,这年头不会点Git真不行!!! - 武沛齐 - 博客园