1.正常提交流程
-
git add .
-
git status // 查看是否生效
-
git commit -m {commit_message}
-
git push
3. clone项目基本流程
- git clone …
- cd <project_name>
- git branch // 查看当前分支
- git checkout -b dev origin/dev // 拉取远程dev分支到本地
- git checkout -b fix/css-style // 本地新建分支 fix/css-style
- git add .
- git commit -m ‘commit message 编写规范’
- git push --set-upstream origin fix/css-style // --set-upstream 等价-u 推送并追踪远程分支
4. 撤销
1.撤销git add
git reset HEAD 撤销全部上一次的提交
git reset HEAD xxx/xxx/xxx.js 撤销某个文件
2.撤销git commit
git reset --soft HEAD~1 撤销commit,不撤销git add
git reset --mixed HEAD~1 撤销commit,撤销git add
git reset --hard HEAD~1 撤销commit,撤销git add,还原改动的代码
3.撤销 git push
git log 执行 git log查看日志,获取需要回退的版本号
执行 git reset –-soft <版本号> 重置至指定版本的提交,达到撤销提交的目的
4.撤销git pull
git reflog
git reset --hard <COMMIT_ID> 或者 git reset --hard HEAD@{2}
git reset –-soft 与 git reset –-hard ,区别是:
前者表示只是改变了HEAD的指向,本地代码不会变化,我们使用git status依然可以看到,同时也可以git commit提交。后者直接回改变本地源码,不仅仅指向变化了,代码也回到了那个版本时的代码。
5.git stash 相关
1.git stash 执行存储
2.git stash list 查看存储列表
3.git stash show 显示改动 默认显示第一个,比如显示第二个 git stash show stash@{1}
4.git stash apply 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0}, 若想应用第二个: git stash apply stash@{1}
5.git stash pop 命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除
6.git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储
7.git stash clear :删除所有缓存的stash
6.git上传到远程仓库
1. git remote -v 查看项目关联远程地址
2. git remote rm origin 删除远程地址
3. git remote add origin <url> 配置远程仓库地址
7.补充
-
撤回本地未提交的 merge,可以通过执行 git reset --hard HEAD~1 来往前一步一步回撤,详情参见:Undo a Git merge that hasn't been pushed yet,如果要变更远程已提交的内容,可以在执行了上述操作后,在推送时,强制指定推送的远程分支,比如:git push -f origin {remote_branch_name}
-
清除不需要版本管理的文件:一般发生在 .gitignore 文件没有声明排除此类文件,并且工程师已经提交了此类文件,此时可以按照以下步骤清除:
-
在 .gitignore 里面添加排除规则(开源社区提供的针对不同项目的通用 .gitignore 文件:https://github.com/github/gitignore)
-
如果仅针对特定的某一文件,执行命令:git rm --cached {filename}
-
如果针对所有文件,执行命令:git rm -r --cached .
-
然后执行正常的提交流程 add commit push
Git Commit 每次改动代码前,想好这次需要改动的scope,不要一次改动涉及太多内容,保持git commit log的整洁
可以探讨下 Commit 的类型,有助于自动化 CHANGELOG 生成
-
feat:新功能
-
fixed:Bug 修复
-
docs:文档更新
-
style:代码格式,标点符号更新
-
refactor:代码重构
-
pref:性能优化
-
test:测试更新
-
build:构建系统或者包依赖更新
-
ci:CI 配置,脚本文件等更新
-
chore:非 src 或者静态资源等更新
-
revert:commit 回退
更多commit 规范请参考Angular提交信息规范 - Git Guide
更多git 内容 查看 Git教程 - 廖雪峰的官方网站