克隆下仓库

1
$ git clone git@github.com:{username}/{repository}.git

image.png

显示工作目录状态

1
$ git status 
  1. 当前分支是哪个
  2. 自上次提交以来,哪些文件被修改了(modified)
  3. 哪些文件是新的(untracked),即还没有加入到 Git 版本控制中
  4. 哪些文件当前被暂存(staged),即将被提交

image.png

提交

1
$ git add hello_world.php
1
$ git commit -m "Add hello world script by php"
  1. git add 加入暂存区
  2. git commit 提交

image.png

查看提交日志

1
$ git log

image.png

1
$ git log --pretty=short
  • 只显示提交的第一行

image.png

1
$ git log README.md
  • 只显示指定目录、文件的日志

image.png

1
$ git log -p
  • 显示文件的改动

image.png

1
$ git reflog
  • 查看操作日志

image.png

进行PUSH更新仓库

1
$ git push

image.png

初始化仓库

1
$ git init

image.png

提交保存仓库的历史记录

1
$ git commit -m "First commit"
  • -m 后面的是提交信息,用于概述本次提交
1
$ git commit
  • 提交详细信息
  • 第一行:用一行文字简述提交的更改内容
  • 第二行:空行
  • 第三行以后:记述更改的原因和详细内容
  • (井号)标为注释的内容,不需要更改和删除

  • :qa 编辑器终止提交

image.png

查看工作树和暂存区的差别

1
$ git diff
  • 查看工作区(还没有add和commit)与暂存区的差别(没有差别不显示

image.png

1
$ git diff HEAD
  • 查看与最新提交的区别

image.png

显示分支一览表

1
$ git branch

image.png

  • * 为当前分支

创建、切换分支

1
$ git checkout -b feature-A
  • 创建名为feature-A的分支

image.png

1
$ git checkout main
  • 切换分支

image.png

1
$ git checkout -
  • 切换回上一个分支

image.png

分支类型

  1. 特性(Topic)分支
    1. 集中实现单一特性(主题)
    2. 除此之外不进行任何作业的分支
  2. 主干分支
    1. 通常是master分支为主干分支
    2. 特性分支的原点,也是合并的终点
1
$ git merge --no-ff feature-A
  • 合并分支

image.png

1
$ git log --graph
  • 以图表形式查看分支

image.png

更改提交

1
$ git reset --hard {目标时间点的哈希值}
  • 回溯到目标时间点(哈希值,通过git log取得)

image.png

1
$ git merge --no-ff fix-C
  • 推进历史
  • 发生了冲突,不解决冲突就无法完成合并
  • 做出修改即可

image.png

image.png

image.png

修改提交信息

1
$ git commit --amend
  • 进入编辑器修改提交信息

image.png

压缩历史

1
$ git commit -am
  • add命令和commit命令的结合
  1. 创建feature-C分支$ git checkout -b feature-C
  2. 提交文件$ git commit -am "Add feature-C”
  3. 修改错误(使用$ git diff进行修正)(错误漏字等失误统称typo

image.png

  1. 不希望在历史记录中看到失误类的提交,更改历史
1
$ git rebase -i HEAD~2
  • 选定当前分支中包含HEAD(最新提交)在内的两个最新历史记录为对象,进入编辑器修改

image.png

可以看到没有Fix Typo(这个已经合并到Add feature-D,而且Add feature-D的哈希值已经被修改)

image.png

获取远程仓库

1
$ git clone git@github.com:github-book/git-tutorial.git

image.png

默认是master分支

remotes/origin/feature-D 证明我们的远程仓库中已经有了feature-D 分支

image.png

1
$ git checkout -b feature-D origin/feature-D
  • 获取远程的feature-D分支
  • -b 本地仓库中新建分支的名称

image.png

1
$ git push
  • 推送回远程仓库(现在是推送D分支)

image.png

1
git pull origin feature-D
  • 将本地的feature-D分支更新到最新状态

image.png