常识区
git add . // 更新到暂存区
git commit -m "feat: 添加 Hello.ts 页面" // 更新到资源库
// 提交规范:
1. feat: 增加新功能
2. fix: 修复bug
3. docs: 只改动了文档相关内容
4. styles: 不影响代码的含义的改动,如:去掉空格、缩进、增删分号等
5. build: 构造工具或者外部依赖的改动 如webpack、npm等
6: refactor: 代码重构时作用
git commit --amend // vim中修改内容信息
git push // 提交至远程仓库
git branch -D <BranchName> // 删除本地分支
git push origin --delete <BranchName> // 真正的删除远程分支
重点区
[git reset & git revet]
1. git如何撤销上一次commit操作 ???
// 最后一次提交的修改,包括本地文件的修改都会被清除,彻底还原到上一次提交的状态且无法找回。
// 所以在执行reset --hard之前一定要小心
`git reset --hard HEAD~` 或者指定回退提交的commidHash `git reset --hard <commitHash>`
// 重置HEAD到指定的版本, 不会修改index和working tree
`git reset --soft <commitHash>`
git reset (--mixed) HEAD~1
回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也 不受影响) 回退后的代码(已提交的内容)放在工作区,工作区和暂存区的修改都会留下
git reset --soft HEAD~1
回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响)
将已提交的内容恢复到暂存区,原来暂存区和工作区的内容仍然保留
git reset --hard HEAD~1
回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换
已提交的内容恢复到工作区,原来工作区中的修改会留下,原来暂存区中的内容会消失
--mixed 会保留源码,只是将git commit和index 信息回退到了某个版本.
--soft 保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
--hard 源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
2. commit push 代码已经更新到远程仓库 如何撤销 ???
// revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可以把线上的代码更新
`git revert <commit_id>`
// 注意:git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit,看似达到的效果是一样的,其实完全不同。
[git stash]
// 全部未保存的代码添加到储藏
git stash 或 git stash save "message"
1. git stash pop // 应用第一个储藏并删除,如果pop对应项,则直接pop后面跟对应的序列号就可以
2. git stash apply // 应用第一个储藏但依然保留在列表项中。
3. git stash list // 查看stash列表
4. git stash drop stash@{xxx} // 删除某项储藏
5. git stash clear // 删除所有储藏的stash
[git cherry-pick]
// 将指定的提交(commit)应用于其他分支。
git cherry-pick <commitHash>
a - b - c - d Master
\
e - f - g Feature
现在将提交 f 应用到 master 分支。,切换到 master 分支 `git checkout master` 然后执行 `git cherry-pick f`
a - b - c - d - f Master
\
e - f - g Feature
小知识:
1. git cherry-pick 命令的参数,不一定是提交的哈希值,分支名也是可以的,表示转移该分支的最新提交
> git cherry-pick feature // feature分支的最近一次提交,转移到当前分支。
2. 如果需要同时 cherry-pick多个 <commitHash>
> git cherry-pick <commitHash1> <commitHash2>
3. 想要在不同分支间 高效的使用 cherry-pick,提交代码的细粒度必须要小,且每次提交的功能点尽量单一
如:功能点都是可复用的业务逻辑,才能更好的高效复用。
[git rebase]
git stash // 贮藏本地代码
git pull origin latest --rebase // 拉取远程latest分支代码
git stash pop // 还原本地贮藏代码