# git常用命令,及.gitignore的配置

# 快捷通道

  • git add . (将新建的纳入git管理)
  • git status (查看文件在git仓库中的状态)
  • git commit -m "提交修改的信息说明" (完成了首次提交)
  • git push (Git会把master分支推送到远程库对应的远程分支上)
  • git pull (拉取更新)
  • git fetch --all
  • git push origin 当前分支名:远程新的分支名

# 处理问题

问题提示 问题原因 解决办法
git push github失败,提示:SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 发现是因为Git的Http代理的问题,Git支持三种协议:git://、ssh://和http://,本来push的时候应该走ssh隧道 (opens new window)的,但是因为设置了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规范



本文介绍Angular 规范(见上图)

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

<type>(<scope>): <subject>
// 空一行
<body>
// 空一行
<footer>

其中,Header 是必需的,Body 和 Footer 可以省略。
不管是哪一个部分,任何一行都不得超过72个字符(或100个字符)。这是为了避免自动换行影响美观。

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的配置 (opens new window)
  2. Commit message 和 Change log 编写指南 (opens new window)
  3. git 推送本地分支到远程分支 git push origin (opens new window)