- 快捷通道
- 处理问题
- Git的配置
- 显示当前的Git配置
- 设置用户名和邮箱,即提交代码时的用户信息
- 可以添加一个或多个
- 添加所有修改的和新添加的
- 另一种写法
- 添加指定目录
- 由暂存区恢复到工作区(发现提交错了,退回一步)
- 恢复上一次add提交的所有file
- 撤销修改操作,恢复到修改之前的,撤销add后位于工作区下进行的
- 删除文件,并将文件放入暂存区
- 改文件名,并将修改后的文件放入暂存区
- 提交暂存区的所有文件(后面的message不可缺少)
- 提交暂存区的指定文件
- 列出所有本地分支
- 列出所有远程分支
- 列出所有本地分支和远程分支
- 新建一个分支,并切换到该分支
- 切换到指定分支,并更新工作区
- 从远程分支检出指定分支
- 合并指定分支到当前分支(主分支合并自定义分支)
- 删除分支
- 删除远程分支
- 显示有变更的文件
- 显示当前分支的版本历史
- 下载远程仓库的所有变动
- 显示所有远程仓库
- 显示某个远程仓库的信息
- 增加一个新的远程仓库,并命名
- 取回远程仓库的变化,并与本地分支合并
- 上传本地指定分支到远程仓库
- 强行推送当前分支到远程仓库,即使有冲突
- 推送所有分支到远程仓库
- 列出所有tag
- 新建一个tag在当前commit
- 新建一个tag在指定commit
- 删除本地tag
- 删除远程tag
- 查看tag信息
- 提交指定tag
- 提交所有tag
- 新建一个分支,指向某个tag
- 生成一个可供发布的压缩包
- 此为注释 – 将被 Git 忽略
- 参考
快捷通道
- git add . (将新建的纳入git管理)
- git status (查看文件在git仓库中的状态)
- git commit -m “提交修改的信息说明” (完成了首次提交)
- git push (Git会把master分支推送到远程库对应的远程分支上)
- git pull (拉取更新)
- git fetch —all
- git push origin 当前分支名:远程新的分支名
- git merge [branchName] —squash 将branchName合并到当前分支,并将branchName上的所有提交合并成一次提交
处理问题
问题提示 | 问题原因 | 解决办法 |
---|---|---|
git push github失败,提示:SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 | 发现是因为Git的Http代理的问题,Git支持三种协议:git://、ssh://和http://,本来push的时候应该走[ssh隧道](https://www.baidu.com/s?wd=ssh%E9%9A%A7%E9%81%93&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd)的,但是因为设置了http代理,所以就走了http的代理,于是就提交不了了。 OK,找到原因了,那就取消http代理吧 | 在代码目录执行git config —global —unset http.proxy就可以了 |
Windows git:致命:遇到TaskCanceledException? Fatal: TaskCanceledException encountered. |
git config --list --system git config --list --global 设置下方命令 git config —system —unset credential.helper |
|
要很好的掌握Git,先要明白四个名词概念:
- Workspace(工作区):新添加的,和修改的未add操作的。
- Stage(暂存区):add操作过后,会进入暂存区。
- Repository(本地仓库):commit操作后,会进入本地仓库。
- Remote(远程仓库):push操作后,会提交到远程仓库。
Git的配置
显示当前的Git配置
$ git config —list
设置用户名和邮箱,即提交代码时的用户信息
$ git config [—global] user.name “[name]” $ git config [—global] user.email “[email address]”
Git操作
添加/删除文件(add)
可以添加一个或多个
$ git add …
添加所有修改的和新添加的
$ git add .
另一种写法
$ git add -A
添加指定目录
$ git add
由暂存区恢复到工作区(发现提交错了,退回一步)
$ git reset HEAD
恢复上一次add提交的所有file
$ git reset HEAD
撤销修改操作,恢复到修改之前的,撤销add后位于工作区下进行的
$ git checkout —
删除文件,并将文件放入暂存区
$ git rm
改文件名,并将修改后的文件放入暂存区
$ git mv
提交到本地仓库(commit)
提交暂存区的所有文件(后面的message不可缺少)
$ git commit -m
提交暂存区的指定文件
$ git commit -m
分支操作(branch)
列出所有本地分支
$ git branch
列出所有远程分支
$ git branch -r
列出所有本地分支和远程分支
$ git branch -a
新建一个分支,并切换到该分支
$ git checkout -b [branch]
切换到指定分支,并更新工作区
$ git checkout [branch-name]
从远程分支检出指定分支
$ git clone -b
合并指定分支到当前分支(主分支合并自定义分支)
$ git merge [branch]
删除分支
$ git branch -d [branch-name]
删除远程分支
$ git push origin —delete [branch-name] $ git branch -dr [remote/branch]
查看信息
显示有变更的文件
$ git status
显示当前分支的版本历史
$ git log
远程同步
下载远程仓库的所有变动
$ git fetch [remote]
显示所有远程仓库
$ git remote -v
显示某个远程仓库的信息
$ git remote show [remote]
增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]
取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
上传本地指定分支到远程仓库
$ git push [remote] [branch]
强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] —force
推送所有分支到远程仓库
$ git push [remote] —all
git 推送本地分支到远程分支 git push origin
推送本地分支local_branch到远程分支 remote_branch并建立关联关系
- a.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch
git push
- b.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch
git push -u origin/remote_branch
- c.远程没有有remote_branch分支并,本地已经切换到local_branch
git push origin local_branch:remote_branch
标签(tag)
列出所有tag
$ git tag
新建一个tag在当前commit
$ git tag [tag]
新建一个tag在指定commit
$ git tag [tag] [commit]
删除本地tag
$ git tag -d [tag]
删除远程tag
$ git push origin :refs/tags/[tagName]
查看tag信息
$ git show [tag]
提交指定tag
$ git push [remote] [tag]
提交所有tag
$ git push [remote] —tags
新建一个分支,指向某个tag
$ git checkout -b [branch] [tag]
其他
生成一个可供发布的压缩包
$ git archive
.gitignore
.gitignore的配置
/build /.idea /.gradle /local.properties .gitignore
用法规则和语义
此为注释 – 将被 Git 忽略
.a # 忽略所有 .a 结尾的文件 !lib.a # 但 lib.a 除外 /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO build/ # 忽略 build/ 目录下的所有文件 doc/.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
Commit message 和 Change log
commit规范
本文介绍Angular 规范(见上图)
每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。
<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>
其中,Header 是必需的,Body 和 Footer 可以省略。
不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。
Header
Header部分只有一行,包括三个字段:type(必需)、scope(可选)和subject(必需)。
type—用于说明 commit 的类别,只允许使用下面7个标识。
- feat:新功能(feature)
- fix:修补bug
- docs:文档(documentation)
- style: 格式(不影响代码运行的变动)
- refactor:重构(即不是新增功能,也不是修改bug的代码变动)
- test:增加测试
- chore:构建过程或辅助工具的变动
如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。
scope—用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
subject—是 commit 目的的简短描述,不超过50个字符。
- 以动词开头,使用第一人称现在时,比如
change
,而不是changed
或changes
- 第一个字母小写
- 结尾不加句号(
.
)