快捷通道

  • 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并建立关联关系

  1. a.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch

git push

  1. b.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch

git push -u origin/remote_branch

  1. 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规范

git常用命令,及.gitignore的配置 - 图1
本文介绍Angular 规范(见上图)

每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。

  1. <type>(<scope>): <subject>
  2. // 空一行
  3. <body>
  4. // 空一行
  5. <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:构建过程或辅助工具的变动

如果typefeatfix,则该 commit 将肯定出现在 Change log 之中。其他情况(docs、chore、style、refactor、test)由你决定,要不要放入 Change log,建议是不要。

scope—用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。

subject—是 commit 目的的简短描述,不超过50个字符。

  • 以动词开头,使用第一人称现在时,比如change,而不是changedchanges
  • 第一个字母小写
  • 结尾不加句号(.

参考

  1. Git的一些常用命令,及.gitignore的配置
  2. Commit message 和 Change log 编写指南
  3. git 推送本地分支到远程分支 git push origin