tomoya06 / web-developer-guidance

Actually it's just a notebook for keeping down some working experience.
4 stars 0 forks source link

Git - HOWTO #25

Open tomoya06 opened 3 years ago

tomoya06 commented 3 years ago

GIT

本文基本都来自这篇掘金博客。动图也都是从这里偷的。太强了。

工作模型

分区概念

变更流程

  1. 文件变更
  2. git add 把修改文件加入暂存区
  3. git commit 提交暂存区

基本概念

git操作

checkout 迁出到指定commit

checkout的本质是签出指定的commit,不止可以切换branch、还可以指定commit作为参数,把HEAD移动到指定的commit上;与reset的区别在于只移动HEAD不改变绑定的branch

git checkout --detach可以把 HEAD 和 branch 脱离,直接指向当前 commit。

merge 合并

把目标 commit 的路径上的所有 commit 的内容一并应用到当前 commit,然后自动生成一个新的 commit

image

rebase 变基

提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。

注意 rebase 是站在需要被 rebase 的 commit 上进行操作,另外在 rebase 之后,记得切回 master 再 merge 一下,把 master 移到最新的 commit

image

git rebase master
git checkout master
git merge dev/gittest

rebase -i 交互式rebase

修改上N次commit

git rebase -i HEAD~N
#pick/edit the commits in editor popup
git add <file>
git rebase --continue

reset 回退某次commit

revert 抵消commit

git revert HEAD^ 会增加一条新的 commit,它的内容和倒数第二个 commit 是相反的,从而和倒数第二个 commit 相互抵消,达到撤销的效果。可以用于master分支撤销已合并内容

stash 临时存放工作目录的改动

stash 指令可以帮你把工作目录的内容全部放在你本地的一个独立的地方,它不会被提交,也不会被删除

reflog:引用记录的log

可以查看git的引用记录,不指定参数,默认显示HEAD的引用记录

log 查看已提交内容

git log -p  #可以查看每个commit的改动细节(到改动文件的每一行)
git log --stat  #查看简要统计(哪几个文件改动了)
git show <指定commit> <指定文件名> #查看指定commit的指定文件改动细节

commit --amend 修改上一次commit

  1. 修改好问题
  2. 将修改add到暂存区
  3. 使用git commit --amend提交修改,结果如下图: