git教程笔记

Git是什么?

  • Git是一个分布式版本控制系统
  • 版本控制方式
    • 集中式版本控制:从版本库中先取得最新的版本,改完之后再上传到版本库中,需要联网
    • 分布式版本控制:每个合作者电脑上都有一个版本库,改动时合作者之间互相推送改动即可
  • .git是Git的版本库,stage是暂存区,master是Git自动创建的第一个分支,HEAD是指向master的一个指针

上传文件的正常步骤

git init 把当前目录变成Git可以管理的仓库,初始化git仓库
git log 查看提交历史
git add filename //告诉git把文件添加到暂存区
git commit -m "说明语句" //把暂存区的内容提交到当前分支
git remote add origin 远程仓库ssh //把本地仓库和远程仓库关联
git push -u origin master //把本地库的所有内容推送到远程库上
//-u参数把本地master分支和远程master分支关联起来,以后可以省略

查看的命令

git status //查看当前仓库的状态
git diff //查看修改内容
git diff HEAD -- 文件名 //查看工作区和版本库里的最新版本之间的区别
git log //查看最远到最近的提交记录
git reset --hard HEAD^ //把当前版本退回到上一个版本
git reflog //查看命令历史,以确定要退回的版本
git reset --hard 回退前的版本号(可以不全) //撤销回退

撤回操作

git checkout -- 文件名 //丢弃文件在工作区的修改
git reset HEAD 文件名 //丢弃文件在暂存区的修改
git reset --hard HEAD^ //把文件退回到上一个版本,使用你已经把文件提交到版本库的情况
//已经推送到远程库,你惨了

删除操作

rm filename //只是删除了工作区的文件
git rm filename //删除版本库中的文件
git commit -m "提示" //提交改变到版本库
git checkout -- filename //删错了工作区的文件,通过版本库恢复

分支管理

git branch 新分支 //创建一个新分支
git checkout 分支 //切换到新分支
git switch 分支
git branch -b 新分支 //创建并切换到新分支
git switch -c 新分支
git branch //产看当前所有分支,其中名字前面带*的是当前分支
git merge 分支名
//用于合并指定分支到当前分支,原理上就是把master指针指到最新版本,这样可以同步更新
git merge --no-ff -m "提示信息" 要合并的分支名
//表示禁用默认的fast forward模式,这种模式下删除分支后会丢掉分支信息
git branch -d 分支名 //删除分支
master分支应该是非常稳定的,仅仅用来发布新版本,平时不能在上面干活,应该在别的分支上干活,团队成员一般都在dev分支上干活

Bug分支

场景:当接收到一个修复bug的任务时,当前正在dev上进行的工作还不能提交
git stash //储存当前工作现场
在需要修复bug的分支上进行创建bug分支进行bug的修复,然后提交,最后删除修复bug的分支
回到干活的分支
git stash list //查看储存的工作现场
git stash apply 指定stash号 //恢复指定的工作现场
git stash drop 指定stash号 //删除指定工作现场
场景:同样的bug,在dev分支上也要修复,只需要把修复bug的提交所作的修改复制到dev分支就可以了
git cherry-pick 提交号 //复制修复bug所作的提交

团队合作

git clone 项目网址
git checkout -b dev origin/dev //创建远程oringin的dev分支到本地
git push origin dev //向origin/dev分支推送提交
//如果合并有冲突
git branch --set-upstream-to=origin/dev dev //指定dev分支与远程origin/dev分支的链接
git pull

git命令教程的更多相关文章

  1. 痞子衡嵌入式:第一本Git命令教程(0)- 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家讲的是Git命令汇编,共12篇文章,循序渐进地介绍Git操作的完整过程. 在开始Git课程之前,需要先跟大家普及2个重要概念(四度空间.四种状 ...

  2. 痞子衡嵌入式:第一本Git命令教程(4)- 转移(add/rm/mv)

    今天是Git系列课程第四课,上一课我们在Git空间里做了一些文件改动并且知道了如何利用Git查看这些变动,今天痞子衡要讲的是将这些变动提交到Git本地仓库前的准备工作. Git仓库目录下的文件改动操作 ...

  3. 痞子衡嵌入式:第一本Git命令教程(6)- 日志(log/reflog/gitk)

    今天是Git系列课程第六课,上一课我们学会了Git本地提交,今天痞子衡要讲的是如何查看Git本地历史提交. 当我们在仓库里做了很多次提交之后,免不了需要回看提交记录,看看自己之前的改动.有三种Git命 ...

  4. 痞子衡嵌入式:第一本Git命令教程(7.1)- 清理之缓存(stash)

    今天是Git系列课程第七课,上一课我们学会了查看Git本地历史提交,今天痞子衡要讲的是Git仓库的清理操作,一共4个命令,都是日常开发中非常实用的命令,掌握这4个命令,会让你有一种玩弄Git仓库于股掌 ...

  5. 痞子衡嵌入式:第一本Git命令教程(1)- 准备(init/config/.gitignore)

    今天是Git系列课程第一课,痞子衡给大家要讲的是创建仓库的准备工作. 1.建仓库git init 第一步是创建一个空仓库,这是一切操作的前提. // 打开git bash命令行,切换到指定目录下 ja ...

  6. 痞子衡嵌入式:第一本Git命令教程(3)- 变动(status/diff)

    今天是Git系列课程第三课,前两课我们都是在做Git仓库准备工作,今天痞子衡要讲的是如何查看Git空间内发生的改动. 本地有了仓库,我们便可以在仓库所在目录下做文件增删改操作,为了确定改动操作的正确性 ...

  7. 痞子衡嵌入式:第一本Git命令教程(5)- 提交(commit/format-patch/am)

    今天是Git系列课程第五课,上一课我们做了Git本地提交前的准备工作,今天痞子衡要讲的是Git本地提交操作. 当我们在仓库工作区下完成了文件增删改操作之后,并且使用git add将文件改动记录在暂存区 ...

  8. 痞子衡嵌入式:第一本Git命令教程(2)- 连接(remote/clone)

    今天是Git系列课程第二课,上一课我们已经学会在本地创建一个空仓库,痞子衡今天要讲的是如何将本地仓库与远程建立联系. 1.将本地仓库挂上远程git remote 本地建好了仓库,我们希望能够挂到远程服 ...

  9. 常用git命令教程

    一.新建代码库 # 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 下载一个项目和它的整个代码 ...

随机推荐

  1. HttpRunner学习10--hook机制

    前言 对于使用过 Python结合Unittest 框架来做自动化测试的同学,应该知道在 Unittest 中,有这样2个方法:setUp() 和 tearDown() ,即前置和后置操作.通常 se ...

  2. 简单介绍托管执行和 CLI

    目录 CIL 和 ILDASM 查看 myApp.dll 的 CIL 输出 使用 ILSpy 查看 myApp.dll 反编译后的代码 处理器不能直接解释程序集.程序集用的是另一种语言,即公共中间语言 ...

  3. STM32的Keil找不到想要flash的解决方法

    STM32的Keil找不到想要flash的解决方法:https://blog.csdn.net/qq_38376586/article/details/79582020

  4. 30分钟连接树莓派到微软云 Azure IoT Hub,并将数据进行可视化

    更多内容,关注公众号: 树莓派是很多动手达人必备的小玩具,本节内容,让我们拿出树莓派,在30分钟内,将树莓派连接到微软云Azure的IoT Hub,然后将温湿度曲线可视化.(本节内容完整视频在文章末尾 ...

  5. Serverless 实战——使用 Rendertron 搭建 Headless Chrome 渲染解决方案

    为什么需要 Rendertron? 传统的 Web 页面,通常是服务端渲染的,而随着 SPA(Single-Page Application) 尤其是 React.Vue.Angular 为代表的前端 ...

  6. 【转载】ssh-copy-id三步实现SSH无密码登录和ssh常用命令

      ssh-keygen  产生公钥与私钥对 ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中,ssh-copy-id也能让你有到远程机器的home, ~./s ...

  7. 学习DDD的初步尝试,从最基础的开始,业务介绍,划分限界上下文 ,建立模型

    Conference业务简介 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的用户有两类: 1:客户,可以创建和管理会议. 2:会议座位预定者,可以预订会 ...

  8. spring4 学习4 spring MVC+mybatis+Mysql

    在前面搭建的基础上,引入新的jar包如下: aopalliance-1.0.jaraspectjweaver-1.8.8.jarmybatis-3.3.0.jarmybatis-spring-1.2. ...

  9. MySQL 字符串分隔成行&子串统计

    利用help_topic表把字符串转换成行(分隔符号',') ),) as `id` FROM mysql.`help_topic`; 统计字符串每个子串出现次数(分隔符号',') ),) AS `s ...

  10. 如何用web3部署智能合约

    合约示例 pragma solidity ^0.4.18; contract CallMeChallenge { bool public isComplete = false; function ca ...