Open tomoya06 opened 3 years ago
本文基本都来自这篇掘金博客。动图也都是从这里偷的。太强了。
.git
git add
git commit
checkout的本质是签出指定的commit,不止可以切换branch、还可以指定commit作为参数,把HEAD移动到指定的commit上;与reset的区别在于只移动HEAD不改变绑定的branch
git checkout --detach可以把 HEAD 和 branch 脱离,直接指向当前 commit。
git checkout --detach
把目标 commit 的路径上的所有 commit 的内容一并应用到当前 commit,然后自动生成一个新的 commit
提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
注意 rebase 是站在需要被 rebase 的 commit 上进行操作,另外在 rebase 之后,记得切回 master 再 merge 一下,把 master 移到最新的 commit
git rebase master git checkout master git merge dev/gittest
修改上N次commit
git rebase -i HEAD~N #pick/edit the commits in editor popup git add <file> git rebase --continue
git reset --hard HEAD^
git reset --soft HEAD^
git revert HEAD^ 会增加一条新的 commit,它的内容和倒数第二个 commit 是相反的,从而和倒数第二个 commit 相互抵消,达到撤销的效果。可以用于master分支撤销已合并内容
git revert HEAD^
stash 指令可以帮你把工作目录的内容全部放在你本地的一个独立的地方,它不会被提交,也不会被删除
可以查看git的引用记录,不指定参数,默认显示HEAD的引用记录
git log -p #可以查看每个commit的改动细节(到改动文件的每一行) git log --stat #查看简要统计(哪几个文件改动了) git show <指定commit> <指定文件名> #查看指定commit的指定文件改动细节
git commit --amend
GIT
工作模型
分区概念
.git
,是Git的本地版本库,所有版本信息都会存在这里.git
目录下的index文件中变更流程
git add
把修改文件加入暂存区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
rebase 变基
提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
注意 rebase 是站在需要被 rebase 的 commit 上进行操作,另外在 rebase 之后,记得切回 master 再 merge 一下,把 master 移到最新的 commit
rebase -i 交互式rebase
修改上N次commit
reset 回退某次commit
git reset --hard HEAD^
回退并撤销commit修改git reset --soft HEAD^
回退但保留commit修改revert 抵消commit
git revert HEAD^
会增加一条新的 commit,它的内容和倒数第二个 commit 是相反的,从而和倒数第二个 commit 相互抵消,达到撤销的效果。可以用于master分支撤销已合并内容stash 临时存放工作目录的改动
stash 指令可以帮你把工作目录的内容全部放在你本地的一个独立的地方,它不会被提交,也不会被删除
reflog:引用记录的log
可以查看git的引用记录,不指定参数,默认显示HEAD的引用记录
log 查看已提交内容
commit --amend 修改上一次commit
git commit --amend
提交修改,结果如下图: