• Angular 学习 之 Hello World !


    目录

    0.前言・前提(Angular介绍)

    前言

    前提(node.js已经按照)

    1.安装・查看版本

    2.创建・启动Angular工程

    2.1.创建工程

    2.2.启动工程

    2.3.启动之后,浏览器访问,显示的效果

    2.4.工程目录结构(src,   package.json,   package-lock.json)

    2.5.src目录结构(app, assets, main.ts, index.html)

     2.6.app目录结构(app.module.ts, app-routing.module.ts,  app.component.html)

     2.7.为什么访问 app.component.html  ( 与 app.module.ts 设置有关)

    3.各种命令整理

    4.工作环境配置整理(私密)

    5.遇到的问题

    问题1

    问题2

    问题3 ( 同事 遇到的问题:Eclipse导入后端的 Gradle 工程失败  )

    6.ng serve 是如何启动的

    7.更多资料整理

    7.1.Angular组成概述 (★★★图★★★)

    7.2.Node 的 package.json文件

    7.3.全局安装 【Webpack】【Webpack-cli】

    7.4.使用 npm run test 运行(出错了,没有解决 【TODO】)

    7.5.package-lock.json的作用

    7.6.关于main.ts

    7.7.angular中app.module.ts的說明

    7.8.app-routing.module.ts  (可以设置主页)

    7.9.rxjs

    7.10.angular知识碎点之RXJS

    7.11.Rxjs

    7.12.创建组件, 创建服务

    7.13.Angular CLI生成的“spec.ts”文件是干什么用的 (单元测试用)

    7.14.XXX

    7.15.XXX

    7.16.XXX

    7.17.XXX

    ■其它知识点 (gradle,git)


    ===

    0.前言・前提(Angular介绍)

    前言

    AngularJS诞生于2009年,由Misko Hevery 等人创建,是一款构建用户界面的前端框架,后为Google所收购。 AngularJS是一个应用设计框架与开发平台,用于创建高效、复杂、精致的单页面应用,通过新的属性和表达式扩展了 HTML,实现一套框架,多种平台,移动端和桌面端。  AngularJS有着诸多特性,最为核心的是:MVVM、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
    Angular是AngularJS的重写,Angular2以后官方命名为Angular,2.0以前版本称为AngularJS。AngularJS是用JavaScript编写,而Angular采用TypeScript语言编写,是ECMAScript 6的超集。

    前提(node.js已经按照)

    Node.js之Hello World_sun0322的博客-CSDN博客

    ==================================

    1.安装・查看版本

    npm install -g @angular/cli

    ===比较旧的版本,至少是12,使用 ng --version 命令查看版本

    ng version

    1. C:\Users>npm install -g @angular/cli
    2. npm WARN deprecated @npmcli/move-file@2.0.1: This functionality has been moved to @npmcli/fs
    3. added 227 packages in 41s
    4. C:\Users>ng --version
    5. Error: You need to specify a command before moving on. Use '--help' to view the available commands.
    6. C:\Users>ng --version
    7. Error: You need to specify a command before moving on. Use '--help' to view the available commands.
    8. C:\Users>ng version
    9. ? Would you like to share pseudonymous usage data about this project with the Angular Team
    10. at Google under Google's Privacy Policy at https://policies.google.com/privacy. For more
    11. details and how to change this setting, see https://angular.io/analytics. No
    12. Global setting: disabled
    13. Local setting: No local workspace configuration file.
    14. Effective status: disabled
    15. _ _ ____ _ ___
    16. / \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
    17. / △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
    18. / ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
    19. /_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
    20. |___/
    21. Angular CLI: 15.0.0
    22. Node: 16.18.0
    23. Package Manager: npm 8.19.2
    24. OS: win32 x64
    25. Angular:
    26. ...
    27. Package Version
    28. ------------------------------------------------------
    29. @angular-devkit/architect 0.1500.0 (cli-only)
    30. @angular-devkit/core 15.0.0 (cli-only)
    31. @angular-devkit/schematics 15.0.0 (cli-only)
    32. @schematics/angular 15.0.0 (cli-only)
    33. C:\Users>

    2.创建・启动Angular工程

    2.1.创建工程

    ng new myFirstAngularProject

     ===

    2.2.启动工程

    启动

    1. ng serve
    2. 要到工程目录下执行
    3. 默认 http://localhost:4200/

    启动并打开浏览器

    ng serve --open
    

    Build at 的 时间是 【格林尼治时间】时间 (实际的时间是21点46)

    1. G:\GitSource\myFirstAngularProject>ng serve --open
    2. √ Browser application bundle generation complete.
    3. Initial Chunk Files | Names | Raw Size
    4. vendor.js | vendor | 1.79 MB |
    5. polyfills.js | polyfills | 314.30 kB |
    6. styles.css, styles.js | styles | 209.42 kB |
    7. main.js | main | 46.64 kB |
    8. runtime.js | runtime | 6.54 kB |
    9. | Initial Total | 2.36 MB
    10. Build at: 2022-11-23T13:46:38.005Z - Hash: ed4dffe32e4a77dd - Time: 87777ms
    11. ** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
    12. √ Compiled successfully.

    ===

    2.3.启动之后,浏览器访问,显示的效果

    http://localhost:4200/

    ===

    2.4.工程目录结构(src,   package.json,   package-lock.json)

    2.5.src目录结构(app, assets, main.ts, index.html)

     2.6.app目录结构(app.module.ts, app-routing.module.ts,  app.component.html)

    app-routing.module.ts 虽然这里没有,但是如果建立的话,在这里建立。

     2.7.为什么访问 app.component.html  ( 与 app.module.ts 设置有关)

      bootstrap: [AppComponent]   // 下面代码14行

    1. imports:在组件页面里用到基础类。
    2. declarations:现有custom组件声明。
    3. bootstrap:可以理解为Android的main launch,项目启动时从那个组件进入。

    ====

    3.各种命令整理

    查看当前版本
    ng --version

    ======================================================

    卸载之前的版本
    npm uninstall -g @angular/cli

    ======================================================

    清除缓存,确保卸载干净
    npm cache verify

     (在低版本的nodejs里面清除缓存使用的命令是npm cache clean)

    ======================================================

    安装指定版本
    npm install -g @angular/cli@12.0.5

    ======================================================
    创建新工程
    ng new myFirstAngularProject

    ======================================================

    【CMD 命令行】中启动
    ng serve
    执行 ng serve 启动本地开发服务器  (要到工程目录下执行)
    (默认 http://localhost:4200/)

    ======================================================

    【VS Code】中启动

    npm start

    ---------

    前提 :

      各种配置文件都没有问题,比如(package.json)

    {

      "name": "angular-app",

      "version": "0.0.0",

      "scripts": {

        "ng": "ng",

        "start": "ng serve",

        "build": "ng build",

        "test": "ng test",

        "lint": "ng lint",

        "e2e": "ng e2e"

      },

      "private": true,

      "dependencies": {

    。。。。

    ======================================================

    切换镜像

    npm config set registry http://registry.npm.taobao.org/

    ======================================================

    根据 package.json, 下载【node_modules】中的内容

    npm install

    ======================================================

    使用npm init 命令可以快速生成package.json文件。

    (默认情况下,这个命令会询问一些事情,比如项目的名称是什么、项目的版本是多少,如果不想填写可以使用默认值。)

    npm init

    ======================================================

    使用npm init -y 命令生成package.json文件,-y这个参数的意思是不填写任何信息,全部使用默认

    npm init -y

    ======================================================

    ===

    4.工作环境配置整理(私密)

    Angular 学习 之 Hello World (工作环境中的配置)_sun0322的博客-CSDN博客

    ===

    5.遇到的问题

    问题1

    从Git取得的工程目录,没有【node_modules】文件夹,会出如下错误

    An unhandled exception occurred: Cannot find module '@angular-devkit/build-angular/package.json'

    使用下面命令解决(自己安装)

    npm install -save-dev @angular-devkit/build-angular

    但是,这个解决方法并非完全正确,正是因为这个解决办法,造成了问题2

    应该采用下面的解决办法

    进入工程目录之后,直接执行下面的命令

    npm install 

    会根据工程的 【package.json】文件自动安装需要的【包】

    这种安装方式,即使你本地的Angular版本高于工程的Angular版本也不会有问题。

    ===

    问题2

    版本不匹配

    ng 启动 Angular时,报如下错误

    Can't resolve '../node_modules/ng-zorro-antd/ng-zorro-antd.less'

    指定版本安装Angular(使用工程项目的Angular版本)

    问题3 ( 同事 遇到的问题:Eclipse导入后端的 Gradle 工程失败  )

    失败原因:Eclipse安装的有问题。

    (具体,安装Eclipse之前, 没有先安装JDK(安装版本的JDK),造成Eclipse中的一些配置不对。)

    解决:

    安装(安装版本的JDK)之后,再安装Eclipse,这样就可以正常导入Grandle工程了

    根本原因:

    在安装Eclipse时,需要指定你的JRE目录,没有安装JRE,所以Eclipse的某些功能是安装失败的。

    6.ng serve 是如何启动的

    Angular : ng serve 是如何启动应用的_北冥友余的博客-CSDN博客_ng serve

    1.当你在命令行中输入 ng serve 后
    2.ng 会根据 angular.json 中的 main元素 找到 应用入口文件main.ts
    3.main.ts 再加载 根模块AppModule
    4.AppModule 启动Angular模块(@ngModule)
    5.@ngModule 为 AppModule 添加元数据,并指定了顶层组件AppComponent
    6.AppComponent 中我们就可以为所欲为了

    ====

    7.更多资料整理

    7.1.Angular组成概述 (★★★图★★★)

    angular2概述_环游记的博客-CSDN博客_angular2

    一个完整的Angular应用主要由六个部分构成:组件,模板,指令,服务,依赖注入和路由。

    7.2.Node 的 package.json文件

    Node —— package.json文件 - codejing - 博客园 (cnblogs.com)

    原因:

       传递项目时不传递node_modules这个文件夹

       package.json文件。在这个文件中会记录项目依赖了哪些第三方模块

       当别人拿到这个项目时,会根据package.json文件中所记录的依赖项去下载第三方模块。

       这样项目在别人的电脑上就可以运行了。

    使用

    可以使用 npm install下载全部的依赖

    npm install

    7.3.全局安装 【Webpack】【Webpack-cli】

    webpack 是代码编译工具,有入口、出口、loader 和插件。webpack 是一个用于现代 JavaScript 应用程序的静态模块打包工具。当 webpack 处理应用程序时,它会在内部构建一个依赖图(dependency graph),此依赖图对应映射到项目所需的每个模块,并生成一个或多个 bundle。

    运行的平台是nodejs

    安装webpack的完整步骤_heyy1997的博客-CSDN博客_webpack安装

    ※ 先新建两个文件夹

     然后进入【node_global】文件夹

    npm install webpack -g

    系统变量中新建一个NODE_PATH 并添加node_global的路径

    1. npm i webpack-cli -g
    2. webpack -v

    ====

    7.4.使用 npm run test 运行(出错了,没有解决 【TODO】

    前言:
    npm run的本质
    npm run是npm run-script的简写,顾名思义就是执行脚本。执行的脚本配置在package.json中的scripts对象。

    先用npm init --yes命令,生成【package.json】文件

    (首先用node运行js文件,可以正常执行。)

    1. G:\MyTypeScript>node helloworld.ts
    2. Hello, World
    3. G:\MyTypeScript>npm init --yes
    4. Wrote to G:\MyTypeScript\package.json:
    5. {
    6. "name": "mytypescript",
    7. "version": "1.0.0",
    8. "description": "",
    9. "main": "helloworld.js",
    10. "scripts": {
    11. "test": "echo \"Error: no test specified\" && exit 1"
    12. },
    13. "keywords": [],
    14. "author": "",
    15. "license": "ISC"
    16. }

    然后运行 npm run test,出现如下错误

    错误1

    1. G:\MyTypeScript>npm run test
    2. npm ERR! code ENOENT
    3. npm ERR! syscall open
    4. npm ERR! path G:\MyTypeScript/package.json
    5. npm ERR! errno -4058
    6. npm ERR! enoent ENOENT: no such file or directory, open 'G:\MyTypeScript\package.json'
    7. npm ERR! enoent This is related to npm not being able to find a file.
    8. npm ERR! enoent
    9. npm ERR! A complete log of this run can be found in:
    10. npm ERR! C:\Users\YourUserName\AppData\Local\npm-cache\_logs\2022-11-24T15_15_14_128Z-debug-0.log

    原因。。。。

    解决方法。。。。。

    ===============================================================

    错误2

    1. "Error: no test specified"
    2. npm ERR! code ELIFECYCLE
    3. npm ERR! errno 1
    4. npm ERR! MyNodeJs@1.0.0 test: `echo "Error: no test specified" && exit 1`
    5. npm ERR! Exit status 1
    6. npm ERR!
    7. npm ERR! Failed at the MyNodeJs@1.0.0 test script.
    8. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    9. npm WARN Local package.json exists, but node_modules missing, did you mean to install?
    10. npm ERR! A complete log of this run can be found in:
    11. npm ERR! C:\Users\YourUserName\AppData\Roaming\npm-cache\_logs\2022-11-25T00_41_34_446Z-debug.log

    原因。。。。

    解决方法。。。。。

    ===

    7.5.package-lock.json的作用

    详解package-lock.json的作用_51CTO博客_package-lock.json

    作用:
    锁定安装时的包的版本号及包的依赖的版本号, 以保证其他所有人人在使用 ​​npm install​​ 时下载的依赖包都是一致的
    (packag.json只单纯记录本项目的依赖,不会记录 本项目 依赖的 项目的版本号。

    详细:
    packag.json只单纯记录本项目的依赖, 而没有记录下依赖的依赖, 并且依赖之间的版本号又没有明确固定, 导致无法保证依赖环境一致
    而package-lock.json的出现就是解决上述问题, 它会详细的记录项目依赖的版本号及依赖的依赖的版本号

    7.6.关于main.ts

    angular源码分析之platformBrowserDynamic_weixin_33701564的博客-CSDN博客

    1. import { enableProdMode } from '@angular/core';
    2. import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
    3. import { AppModule } from './app/app.module';
    4. import { environment } from './environments/environment';
    5. if (environment.production) {
    6. enableProdMode();
    7. }
    8. platformBrowserDynamic().bootstrapModule(AppModule).catch(err => console.error(err));

    xxx

    7.7.angular中app.module.ts的說明

    angular中app.module.ts的說明_愚者不愚、的博客-CSDN博客_angular app.module

    1. import { BrowserModule } from '@angular/platform-browser';
    2. import { NgModule } from '@angular/core';​​​​​​​
    3. import { AppComponent } from './app.component';​​​​​​​
    4. import { LoginPageComponent } from './pages/login-page/login-page.component';
    5. import { VersionStatusPipe } from './pipe/version-status.pipe';
    6. import { NgZorroAntdModule, NZ_I18N, zh_CN } from 'ng-zorro-antd';
    7. import { SocketCntService } from './services/api/socket-cnt.service';
    8. @NgModule({ //装饰器
    9. declarations: [ //声明组件、指令和管道
    10. AppComponent,
    11. LoginPageComponent,
    12. VersionStatusPipe,
    13. ],
    14. imports: [ //需要的模块
    15. BrowserModule, //浏览器模块
    16. NgZorroAntdModule,
    17. ],
    18. providers: [ //声明模块中提供了什么服务
    19. SocketCntService,
    20. ],
    21. bootstrap: [AppComponent] //声明模块的组组件是什么
    22. })
    23. export class AppModule { } //类

    xxx

    import语句后,@NgModule可以看到一个装饰器修饰的类。 

    @NgModule装饰器将AppModule标记为Angular模块类,@NgModule接受一个元数据对象,告诉Angular如何编译和启动应用 

    import: BrowserModule,每个在浏览器运行应用都需要他。

    declarations: 应用唯一组件
    boostrap:根组件,Angular创建他并插入index.html

    app.module.ts的用途
    是它启动
    你的应用程序,并设置链接到你的其他模块。
    模块是应用程序的逻辑层。每个模块都在逻辑上打包,因此人们更容易理解和维护由多个模块组成的应用程序。 例如,如果你正在做一个丰富的应用程序,你应该有一个
    Login,一个MainPage,等等
    你需要导入模块中的东西,使它知道什么時候将会使用。基本上,你的Login将需要​​​​​​​表單模塊,这可能不需要另外的模塊。
    在这里,这导致我们的AppModule应该只导入其他模块,它是链接到并提供将需要的服务全局。

    xxxx

    更多讲解

    1. /*这个文件是Angular 根模块,告诉Angular如何组装应用*/
    2. //BrowserModule,浏览器解析的模块
    3. import { BrowserModule } from '@angular/platform-browser';
    4. //Angular核心模块
    5. import { NgModule } from '@angular/core';
    6. //根组件
    7. import { AppComponent } from './app.component';
    8. import { NewsComponent } from './components/news/news.component';
    9. import { HomeComponent } from './components/home/home.component';
    10. import { HeaderComponent } from './components/header/header.component';
    11. /*@NgModule装饰器, @NgModule接受一个元数据对象,告诉 Angular 如何编译和启动应用*/
    12. @NgModule({
    13. declarations: [ /*配置当前项目运行的的组件*/
    14. AppComponent, NewsComponent, HomeComponent, HeaderComponent
    15. ],
    16. imports: [ /*配置当前模块运行依赖的其他模块*/
    17. BrowserModule
    18. ],
    19. providers: [], /*配置项目所需要的服务*/
    20. bootstrap: [AppComponent] /* 指定应用的主视图(称为根组件) 通过引导根AppModule来启动应用 ,这里一般写的是根组件*/
    21. })
    22. //根模块不需要导出任何东西, 因为其它组件不需要导入根模块
    23. export class AppModule { }

    HelloWorld中自动生成的代码

    xxx

    7.8.app-routing.module.ts  (可以设置主页)

    Angular routing生成路由和路由的跳转 - 我是ed - 博客园

    前提(最开始的主页,设置Router跳转)

     === ====================

    1. import { Component } from '@angular/core';
    2. @Component({
    3. selector: 'app-root',
    4. templateUrl: './app.component.html',
    5. styleUrls: ['./app.component.css'],
    6. })
    7. export class AppComponent {}

     ====================

    作用

       ・设置主页 (登陆画面)

            aahttp://localhost:4200/login

       ・不同的地址,访问不同的组件

       ・地址不存时,跳转到指定的页面  (和设置主页是一个原理)

    const routes: Routes = [

      {

        path: '',

        redirectTo: 'login',

        pathMatch: 'full',

      },

      {

        path: 'login',

        component: LoginComponent,

      },

      {

        path: 'aaa',

        component: AAAComponent,

        children: [

          {

            path: '',

            redirectTo: 'aaa1',

            pathMatch: 'full',

          },

          {

            path: 'aaa1,

            component: AAA1Component,

          },

          {

            path: 'aaa2',

            component: AAA2Component,

          },

        ],

      },

    ];

    xxx

    7.9.rxjs

    为什么我要使用rxjs - 知乎

    理解基本定义: observable, observer, subscription

    整理成这个公式:
    Subscription = Observable.subscribe (observer)
    observable: 随着时间产生的数据集合,可以理解为流,其 subscribe 方法可以启动该流
    observer: 决定如何处理数据
    subscription: 存储已经启动过的流,其 unsubscribe 方法可以停止该流

    rxjs主要是一套兼具函数式和响应式编程特点,并擅长处理异步的解决方案.
    在rxjs中,我们习惯把它的实例称作数据流。形象一点的话,异步操作就像是没有拧紧的水龙头,不知道什么时候会滴出下一滴水。等到数据来了,rxjs就把它推出去。当数据传递过来时,我们可能需要做很多的数据处理,包括对数据的整合,筛选以及转换,而rxjs就可以用它的api来帮助我们分离并简化这些操作。
     

    最简Rxjs入门教程--别再被Rxjs的概念淹没了

    最简Rxjs入门教程--别再被Rxjs的概念淹没了 - 知乎

    7.10.angular知识碎点之RXJS

    angular之RXJS_zhaoandong的博客-CSDN博客_angular rxjs

    Observable (可观察对象): 表示一个概念,这个概念是一个可调用的未来值或事件的集合。
    Observer (观察者): 一个回调函数的集合,它知道如何去监听由 Observable 提供的值。
    Subscription (订阅): 表示 Observable 的执行,主要用于取消 Observable 的执行。
    Operators (操作符): 采用函数式编程风格的纯函数 (pure function),使用像 map、filter、concat、flatMap 等这样的操作符来处理集合。
    Subject (主体): 相当于 EventEmitter,并且是将值或事件多路推送给多个 Observer 的唯一方式。
    Schedulers (调度器): 用来控制并发并且是中央集权的调度员,允许我们在发生计算时进行协调,例如 setTimeout 或 requestAnimationFrame 或其他。
    ====
    在实际编程中,我们主要与三个对象打交道:Observable、observer、Subscription:
    https://www.cnblogs.com/dojo-lzz/p/5875714.html
    observable  adj. 可观察的;看得见的
    observer    n. 观察员;遵守者
    Subscription  英 [səbˈskrɪpʃən]   (报刊等的)订阅,订购;(书刊的)预订

    ===

    7.11.Rxjs

    Angular与Rxjs学习_hresh的博客-CSDN博客

    RxJS是ReactiveX编程理念的JavaScript版本。ReactiveX来自微软,它是一种针对异步数据流的编程。

    7.12.创建组件, 创建服务

    创建组件
    my-app> ng g c login
    // component

    创建服务
    my-app> ng g s login
    // service

    7.13.Angular CLI生成的“spec.ts”文件是干什么用的 (单元测试用)

    “spec.ts文件用于单个组件的单元测试。您可以通过ng测试运行Karma任务运行器。

    7.14.XXX

    xxx

    7.15.XXX

    xxx

    7.16.XXX

    xxx

    7.17.XXX

    xxx

    =====================

    ■其它知识点 (gradle,git)

    build命令

    ■环境变量
    GRADLE_HOME
    GRADLE_USER_HOME  // 指定第三方jar的存放位置

    ■Gradle Wrapper
    ・命令:
     gradlew clean build

    ・下载指定的版本
     gradle wrapper --gradle-version=7.4.2
    (在使用 gradlew -classes等命令时,下载最新的【gradle-wrapper.jar】)

    ■Gradle
    gradle classes
    gradle test
    gradle clean
    gradle build
    gradle build -x test

    ■Gradle 初始启动配置
    init.d
    inin.gradle
    gradle -init-script yourdir/init.gradle -q taskName

    ■Gradle 管理的第三方jar
    ・位置:
    yourPath/.gradle\caches\modules-2\files-2.1

    ・结构:
    和Maven不一样
    (gradle: 三个目录,一个放源码,一个放jar,一个放pom文件)

    ■groovy语言

    (Gradle项目中build.gradle都是用groovy写的)
    支持函数式编程
    groovy 支持 DSL(领域特点语言)
    groovy 可以作为脚本语言,也可以作为面向对象语言.(面向对象语言时,需要定义类)

    http://groovy-lang.org/documentation.html
    https://groovy.apache.org/download.html

    ■与Maven相关
    M2_HOME     
    inin.gradle 中指定【mavenLocal()】时,根据M2_HOME找到
    【yourPath、apache-maven-3.6.3\conf\settings.xml】
    这个文件,
    根据这个文件中的设定,下载时,使用Maven的库进行下载。

    git命令行操作

    GIT命令行的一些基本操作_sun0322的博客-CSDN博客

    基于Master创建Branch

    $ git checkout -b test007
    Switched to a new branch 'test007'

    ========================

    根据远程分支,创建本地分支

    git checkout -b test007 origin/test007 

    ========================

    查看(本地)所有分支(   * 代表当前所在的分支)

     git branch
      master
    * test007

    ========================

    查看(远程)所有的分支

    git branch -r

    ========================

    切换当前使用的分支

    git checkout master

    Switched to branch 'master'
    M       package-lock.json
    M       package.json
    Your branch is up to date with 'origin/master'.

    ========================

    删除本地分支

    git branch -d test007
    Deleted branch test007(was FFA23).

    ========================

    获取最新代码(从远程更新代码)

    git pull

    ========================

    登录
    git pull // 输入这个命令后(其他命令应该也行),会让你输入用户名,密码
    ========================

    切换到你的分支,并确认
    git checkout branch_name // 切换到你要合并的分支,并拉取最新的代码
    git status  // 查看当前在
    ========================
     查看提交记录
    git log -2 查看最近2次的提交历史记录
    ========================
    回退命令:
    git reset --hard HEAD^ 回退到上个版本
    git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
    git reset --hard commitID 退到/进到,指定commit的哈希码(这次提交之前或之后的提交都会回滚)

    =========

  • 相关阅读:
    【Azure 媒体服务】Azure Media Player 在Edge浏览器中不能播放视频问题的分析与解决
    [python][flask] Flask 入门(以一个博客后台为例)
    Python itertools教程(python中的迭代器与组合迭代器)
    6.01 定时任务,关闭超时订单
    C++:stl:stack、queue、priority_queue介绍及模拟实现和容量适配器deque介绍
    外滩大会今日开幕 近20位“两院”院士、诺贝尔奖和图灵奖得主齐聚
    WPF项目-初步了解数据绑定 binding
    Flutter框架性泛学习系列之二、Flutter应用层(Application Layer)上-常用Widgets与简单动画
    全新UI彩虹外链网盘系统源码(前后端美化模板)
    什么是虚拟DOM(Virtual DOM)?它在前端框架中的作用是什么?
  • 原文地址:https://blog.csdn.net/sxzlc/article/details/128008298