版本控制的概念:

Version Control System - VCS

  • 中央式版本控制系统 Centralized VCS
  • 分布式版本控制系统 Distributed VCS

status

status 是用来查看工作目录的当前状态的指令

git log

提交的历史

其中这个括号里的 HEAD 是引用中最特殊的一个:它是指向当前 commit 的引用。所以它是指向当前commit的引用。当前 commit 在哪里,HEAD 就在哪里,这是一个永远自动指向当前 commit 的引用,所以你永远可以用Head来操作当前的commit
head 时当前git中的一个独特的引用 是唯一的,

branch

HEAD 除了可以指向 commit,还可以指向一个 branch,当它指向某个 branch 的时候,会通过这个 branch 来间接地指向某个 commit;另外,当 HEAD 在提交时自动向前移动的时候,它会像一个拖钩一样带着它所指向的 branch 一起移动。

例如上面的那张图里,HEAD -> master 中的 master 就是一个 branch 的名字,而它左边的箭头 -> 表示 HEAD 正指向它(当然,也会间接地指向它所指向的 commit)。

  1. 创建: git branch 名称
  2. 切换branch git checkout feature1
  3. 删除branch git branch -d feature1

    Head 指向的branch不能删除 如果要删除 先用checkout 把head指向其他的地方

    master

    master ,其实是一个特殊的 branch:它是 Git 的默认 branch(俗称主 branch / 主分支)。
    所谓的「默认 branch」,主要有两个特点:

  4. 新创建的 repository(仓库)是没有任何 commit 的。但在它创建第一个 commit 时,会把 master 指向它,并把 HEAD 指向 master。
  5. 当有人使用 git clone 时,除了从远程仓库把 .git 这个仓库目录下载到工作目录中,还会 checkout (签出) master(checkout 的意思就是把某个 commit 作为当前 commit,把 HEAD 移动过去,并把工作目录的文件内容替换成这个 commit 所对应的内容)。

    push

  6. push 是把当前分支上传到远程仓库 并把这个branch路径的所有commit s 也一并上传

    merge

  7. merge 指定一个commit 把它合并懂啊当前的commit来
  8. 从目标 commit 和当前 commit (即 HEAD 所指向的 commit)分叉的位置起,把目标 commit
    的路径上的所有 commit 的内容一并应用到当前 commit,然后自动生成一个新的 commit
  9. 冲突
  • 当前分支和目标分支修改了同一部分的内容 git无法确定怎么合并 解决冲突后commit
  • head 领先于目标commit git 什么都不做 空操作
  • head 落后于目标commit fast-forward

    pull

    远端仓库的内容用fetch取下来

    git add .

    直接把工作目录下的所有改动全部放进暂缓区

    git diff

    查看暂缓区和上一条commit的区别 git diff —staged
    查看工作目录和上一条commit的区别 git diff HEAD

    git reset —hard head^

    恢复到哪个commit