1.1. 常用操作
git add . // 提交所有更改文件到暂存区
git commit -m '' // 提交
git pull //拉取远端最新
git push // 向远端推送
git checkout xxx // 切换分支
git reset --soft HEAD^ // 撤回上一个Commit操作 但保留代码
git commit --amend --no-edit // 使用 --amend 将这次 commit 与上次 commit 合并,只留下一条 commit 记录。如果要修改上一条的 message,则使用 git commit --amend -m “xxx”
git push origin feat-overseas-typing -f // 强行推送?不需要pull
1.2. 本地第一次初始化的项目推送到远端
git init
git add .
git commit -m ''
git pull origin master
git push -u origin master
https://blog.csdn.net/wd2014610/article/details/80854807
1.3. Git提交规范
1.3.1.1.1.1.
- feat :新功能
- fix :修复 bug
- chore :对构建或者辅助工具的更改
- refactor :既不是修复 bug 也不是添加新功能的代码更改
- style :不影响代码含义的更改 (例如空格、格式化、少了分号)
- docs : 只是文档的更改
- perf :提高性能的代码更改
- revert :撤回提交
- test :添加或修正测试
1.3.1.1.1.2. 举例
git commit -m 'feat(design): add list'
类型 | 功能 | 描述 |
---|---|---|
------------------------------------------------ | ||
feat | 功能 | 新增功能,迭代项目需求 |
fix | 修复 | 修复缺陷,修复上一版本存在问题 |
docs | 文档 | 更新文档,仅修改文档不修改代码 |
style | 样式 | 变动格式,不影响代码逻辑 |
refactor | 重构 | 重构代码,非新增功能也非修改缺陷 |
perf | 性能 | 优化性能,提高代码执行性能 |
test | 测试 | 新增测试,追加测试用例验证代码 |
build | 构建 | 更新构建,修改构建工具或外部依赖 |
ci | 脚本 | 更新脚本,修改CI或执行脚本配置 |
chore | 事务 | 变动事务,修改其他不影响代码的事务 |
revert | 回滚 | 回滚版本,撤销某次代码提交 |
merge | 合并 | 合并分支,合并分支代码到其他分支 |
sync | 同步 | 同步分支,同步分支代码到其他分支 |
impr | 改进 | 改进功能,升级当前功能模块 |
1.4. Git忽略
https://www.cnblogs.com/kevingrace/p/5690241.html
.gitignore忽略规则的匹配语法
在 .gitignore 文件中,每一行的忽略规则的语法如下:
1)空格不匹配任意文件,可作为分隔符,可用反斜杠转义
2)以“ # ”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。
3)可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表达式。
4)以斜杠" / "开头表示目录;"/"结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;"/"开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录。
5)以星号" "通配多个字符,即匹配多个任意字符;使用两个星号"*" 表示匹配任意中间目录,比如a/**/z
可以匹配 a/z, a/b/z 或 a/b/c/z等。
6)以问号" ? "通配单个字符,即匹配一个任意字符;
7)以方括号" [] "包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母)。
8)以叹号" ! "表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是: 如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用"!"规则是不起作用的 。也就是说"!"开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用"!"也不会再次被包含。可以使用反斜杠进行转义。
需要谨记:git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
1.4.1. 修改Git忽略规则.gitignore不生效
*简介: 在项目开发过程中个,一般都会添加 .gitignore 文件,规则很简单,但有时会发现,规则不生效。 原因是 .gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。*
在项目开发过程中个,一般都会添加 .gitignore 文件,规则很简单,但有时会发现,规则不生效。
原因是 .gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。
123 | git<span> </span> `rm -r --cached .git add . git commit -m `'update .gitignore' |
---|
1.4.2. 命令行指引
您还可以按照以下说明从计算机中上传现有文件。
1.4.2.1.1. Git 全局设置
git config --global user.name "장녕"
git config --global user.email "[email protected]"
1.4.2.1.2. 创建一个新仓库
git clone https://citech-gitlab.hanpda.com/njang/mfpreview.git
cd mfpreview
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
1.4.2.1.3. 推送现有文件夹
cd existing_folder
git init
git remote add origin https://citech-gitlab.hanpda.com/njang/mfpreview.git
git add .
git commit -m "Initial commit"
git push -u origin master
1.4.2.1.4. 推送现有的 Git 仓库
cd existing_repo
git remote rename origin old-origin
git remote add origin https://citech-gitlab.hanpda.com/njang/mfpreview.git
git push -u origin --all git push -u origin --tags
1.5. 打标签 tag
查看标签
git tag
创建标签
git tag 标签名字 -m "消息内容"
推送标签
git push origin 标签名字
删除标签
git tag -d 标签名字
推送
git push origin
给指定的commit打标签
git tag -a 标签名字 commid id
git tag -a v0.1.0 49e0cd22f6bd9510fe65084e023d9c4316b446a6
解释:打标签不必要在HEAD之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和,通过git log命令获取。
1.6. git pull 撤销误操作
1.6.1.1. 解决方法
1、运行git reflog
命令查看你的历史变更记录,如下:
2、然后用git reset --hard HEAD@{n}
,(n是你要回退到的引用位置)回退。
比如可运行 git reset --hard 40a9a83