分类 开发 下的文章

git --version  #查看版本
git config user.name
git config user.email

git config --global user.name "yourname"
git config --global user.email "youremail@xx.com"

git init #初始化
git remote add origin https://codeup.aliyun.com/xxxx/git-new.git #设置远程仓库
git add . #添加到暂存区
git commit -m 描述 #提交到本地仓库
git push -u origin master #推送到远程仓库

git status #查看状态
git log #查看提交日志

git rm 3.html #删除文件
#手动重命名 需要 git add new.html;git rm old.html;
git mv home.html index.html #命令行重命名文件
git mv 2.html home #移动文件
git mv index.html home/home.html #移动并重命名

git log --pretty=oneline home/home.html
git show 84e9ce1f929099f1fa56b5c844a29ac81fe0f289 #查看某个提交
diff --git a/home/home.html b/home/home.html # 查看变化详情

git diff #比较不同

git checkout -- home/home.html #恢复未添加到暂存区的修改
git reset HEAD home/home.html #撤销add添加到暂存区

git reset --hard HEAD^ #回到上一个版本
git reset --hard HEAD^^ #回到上二个版本
git reset --hard eaed3b7b2a9a4eece359924937b3601f2b07c637 #回到指定版本

git checkout eaed3b7b2a9a4e -- home/version.html #恢复指定文件到指定版本

git push -u origin master # 推送到远程仓库

git tag v1.0 #给版本创建一个标签
git tag # 查看标签
git tag v0.5 c8b5f9cb12c30 #给指定版本打标签
git tag -d v0.5    #删除指定tag
git push -u origin v1.0 #将标签推送到远程仓库

git branch dev # 创建分支
git branch # 检查分支 *代表当前分支 按首字母排序
git checkout dev # 切换分支
git branch -d test # 删除分支 不能删除当前分支 不能删除有commit的分支
git checkout -b test # 创建并切换分支
git branch -D test # 强制删除 可以删除有commit的分支

#合并分支
git checkout master # 切换到主分支
git merge dev # 合并分支

git merge --abort # 忽略其他分支的内容,保留当前分支的内容
#也可以手动修改 输入注释 然后提交

git log --oneline # 查看简洁日志
git log --oneline --graph # 查看版本路线

git fetch # 拉取远程仓库分支
git branch -av
git push origin --delete summer # 删除远程分支


git merge origin/test # 不同人修改了不同的文件处理

git fetch # 拉取远程仓库分支
git branch -av # 查看分支
git checkout -b test remotes/origin/test # 创建并检出分支 并和远端仓库关联

// 类型别名
let sum: (x: number, y: number) => number
const result = sum(1, 2)

type PlusType = (x: number, y: number) => number
let sum2: PlusType
const result2 = sum2(2, 3)

// 联合类型
type StrOrNum = string | number
let result3: StrOrNum = '123'
result3 = 123
let union = 1  | 2 | 3 | 4
// 字面量
const str: 'name' = 'name'
const number: 1 = 1


type Directions = 'Up' | 'Down' | 'Left' | 'Right'
let toWhere: Directions = 'Right'
// 交叉类型
interface IName {
  name: string
}
type IPerson = IName & {age: number}
let person: IPerson = { name: 'my name', age: 123 }


// 泛型
function identity<T>(arg: T): T {
  return arg;
}
let result1 = identity<string>("str");
let result2 = identity("str");
let result3 = identity(123)
let result4 = identity(false)

// 元组
function swap<T, U>(tuple: [T, U]): [U, T] {
  return [tuple[1], tuple[0]]
}
let arr1 = swap<string, number>(['str', 1])
let arr2 = swap(['str', 1])
let arr3 = swap([1, 'str'])

// 数组
function echoWithArr<T>(arg: T[]): T[] {
  return arg
}

let arr4 = echoWithArr<string>(['str1', 'str2'])
let arr5 = echoWithArr<number>([1, 2])
let arr6 = echoWithArr<number | string>([1, 'str'])
let arr7 = echoWithArr([1, 2])
let arr8 = echoWithArr(['str1', 'str2'])
let arr9 = echoWithArr([1, 'str'])

// 属性约束
interface IwithLength {
  length: number
}

function echoWithLength<T extends IwithLength>(arg: T): T {
  console.log(arg.length)
  return arg
}

let str1 = echoWithLength('str')
let obj1 = echoWithLength({ length: 10 })
let arr10 = echoWithLength([1, 2, 3, 4])

// 类
class Queue<T> {
  private data = [];
  push(item: T) {
    return this.data.push(item)
  }
  pop(): T {
    return this.data.shift()
  }
}

const queue1 = new Queue<number>()
const queue2 = new Queue<string>()

// 接口
interface KeyPair<T, U> {
  key: T
  value: U
}

let kp1: KeyPair<number, string> = { key: 1, value: "str" }
let kp2: KeyPair<string, number> = { key: "str", value: 1 }
let arr11: Array<number> = [1, 2, 3]
let arr12: Array<string> = ['s1', 's2', 's3']