Git学习

Git基本操作

设置签名

在使用git前,需要先设置签名,目的是区分不同开发人员的身份

  • 项目级别/仓库级别:仅在当前本地库范围内有效
$ git config user.name "zt"
$ git config user.email "godtaoz@163.com"
  • 系统用户级别:登录当前操作系统的用户范围
$ git config --global user.name "zt"
$ git config --global user.email "godtaoz@163.com"

查看自己的用户名和邮箱地址

#查看局部的用户名和邮箱
$ git config user.name
$ git config user.email

#查看全局的用户名和邮箱
$ git config --global user.name
$ git config --global user.email

#查看Git所有的设置
$ git config --list

获取本机的SSH公钥

开发中需要连接远程仓库,必须在仓库中添加SSH公钥才可以提交

$ ssh-keygen  #获取SSH公钥

执行完成后会在 C:\Users\账户名\.ssh 目录下生成一个id_rsa文件夹,里面有 id_rsaid_rsa.pub 两个文件,id_rsa 文件是私钥,id_rsa.pub 是公钥,公钥里面的内容就是用来在远程仓库进行 SSHKEY 绑定的。

$ cat ~/.ssh/id_rsa.pub  #查看SSH公钥

本地库初始化

$ git init

执行后会在当前目录下生成一个 .git 文件夹,目录中存放的是本地库相关的子目录和文件

状态查看

$ git status  #查看工作区、暂存区状态

添加

$ git add [file name]  #将工作区的“新建/修改”添加到暂存区

提交

$ git commit -m "commit message" [file name]  #将暂存区的内容提交到本地库

查看历史记录

$ git log  #历史记录 多屏显示控制方式:空格向下翻页  b 向上翻页  q 退出
$ git log --pretty=oneline  #每条记录单行显示
$ git log --oneline  #每条记录单行显示,简化索引
$ git reflog  #每条记录单行显示,HEAD@{移动到当前版本需要多少步}

版本前进后退

  • 基于索引值操作[推荐]
$ git reset --hard 93d9186  #git reset --hard [局部索引值]
  • 使用^符号:只能后退
$ git reset --hard HEAD^  #一个^表示后退一步,n 个表示后退 n 步
  • 使用~符号:只能后退
$ git reset --hard HEAD~n  #表示后退 n 步

reset 命令的三个参数对比

  • --soft 参数

    • 仅仅在本地库移动 HEAD 指针
  • --mixed 参数

    • 在本地库移动 HEAD 指针

    • 重置暂存区

  • --hard 参数

    • 在本地库移动 HEAD 指针
    • 重置暂存区
    • 重置工作区

比较文件差异

  • 将工作区中的文件和暂存区进行比较
$ git diff a.txt  #git diff [文件名] 
  • 将工作区中的文件和本地库历史记录比较
$ git diff 93d9186 abc.txt  #git diff [本地库中历史版本] [文件名]
  • 不带文件名比较多个文件
git diff

Git分支操作

创建分支 dev

$ git branch dev  #git branch [分支名]

切换分支 dev

$ git checkout dev  #git checkout [分支名]

git checkout 命令加上 -b 参数表示创建并切换,相当于上面两条命令

$ git checkout -b dev

查看当前分支

$ git branch -v

git branch 命令会列出所有分支,当前分支前面会标一个*

合并分支

第一步:切换到接受修改的分支(被合并,增加新内容)上

$ git checkout master  #git checkout [被合并分支名]  切换到主分支上  

第二步:执行 merge 命令

$ git merge dev  #git merge [有新内容分支名]  将dev分支合并到master分支上

解决冲突

  • 冲突的表现
<<<<<<<HEAD
分支合并之前的文件内容
=======
其它分支下修改的内容
>>>>>>> psr/psr-02
  • 冲突的解决
    • 编辑文件,删除特殊符号
    • git add [文件名]
    • git commit -m "日志信息"(注意:此时 commit 一定不能带具体文件名)

Git远程仓库

创建远程仓库

  • 直接在网页上创建

创建远程库地址别名

$ git remote -v  #查看当前所有远程地址别名
$ git remote add [别名] [远程地址]  #添加远程地址别名

克隆

  • 完整的把远程库下载到本地
  • 创建 origin 远程地址别名
  • 初始化本地库
$ git clone [远程仓库地址]

推送

$ git push [别名] [分支名]

拉取

$ git pull [远程库地址别名] [远程分支名]  #将远程主机的最新内容拉下来后直接合并

git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。而git pull 则是将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。

$ git fetch [远程库地址别名] [远程分支名]  #是将远程主机的最新内容拉到本地
$ git merge [远程库地址别名/远程分支名]

开发步骤

1、创建分支 git branch dev

2、切换分支 git checkout dev

3、进行开发

4、代码提交 git add . git commit -m "msg"

5、切换回主分支 git checkout master

6、合并 $ git merge dev

7、删除分支 $ git branch -d dev

开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支

$ git checkout dev
$ git pull
$ git checkout master
$ git merge dev
$ git push -u origin master

当master代码改动了,需要更新开发分支(dev)上的代码

$ git checkout master 
$ git pull 
$ git checkout dev
$ git merge master 
$ git push -u origin dev

遇到的问题:在本地创建分支后,直接推送,会因为远程没有这个分支报错

解决方法:git push -u origin dev(远程分支名)

在项目根目录添加 .gitignore 文件或者编辑 .git\info\exclude 文件,对提交内容进行过滤

Commit message 代码提交规范

Commit message 包括三个部分:Header,Body 和 Footer

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

Header

<type>(<scope>): <subject>

type(必须)

用于说明git commit的类别,只允许使用下面的标识。

  1. feat:新功能(feature)。
  2. fix/to:修复bug,可以是QA发现的BUG,也可以是研发自己发现的BUG。
    • fix:产生diff并自动修复此问题。适合于一次提交直接修复问题
    • to:只产生diff不自动修复此问题。适合于多次提交。最终修复问题提交时使用fix
  3. docs:文档(documentation)。
  4. style:格式(不影响代码运行的变动)。
  5. refactor:重构(即不是新增功能,也不是修改bug的代码变动)。
  6. perf:优化相关,比如提升性能、体验。
  7. test:增加测试。
  8. chore:构建过程或辅助工具的变动。
  9. revert:回滚到上一个版本。
  10. merge:代码合并。
  11. sync:同步主线或分支的Bug。

scope(可选)

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

subject(必须)

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

fix(DAO):用户查询缺少username属性 

feat(Controller):用户查询接口开发

更多规范

posted @ 2020-12-17 09:31  GodTao  阅读(83)  评论(0)    收藏  举报