Git

Git/GitHub操作指南

Git Instructions

Posted by Tony Chan on 2016-02-18

Git 是程序员必备技能,在能熟练使用 Git GUI 客户端之后(如 SoureTree、Github Desktop,或者是 VSCode 的 git 面板或 GitLens 插件),也许你希望能了解到更多关于 Git 的知识点,并用于解决实际项目遇到的问题。

git删除所有历史提交记录


把旧项目提交到Git上,但是会有一些历史记录,这些历史记录中可能会有项目密码等敏感信息。如何删除这些历史记录,形成一个全新的仓库,并且保持代码不变呢?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
1. Checkout

git checkout --orphan latest_branch

2. Add all the files

git add -A

3. Commit the changes

git commit -am "commit message"


4. Delete the branch

git branch -D master

5.Rename the current branch to master

git branch -m master

6.Finally, force update your repository

git push -f origin master

git多个远程仓库


用GitHub管理自己的开源项目有几年了,有时候需要同步GitHub和公司的Gitlab

1
2
3
4
5
6
7
8
9
10
11
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/CoderTonyChan/laoshihao-login-web
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

用git命令行添加多个远程仓库

添加一个名为“mirror”的远程仓库:

1
git remote add mirror https://gitee.com/CoderTonyChan/laoshihao-login-web.git

执行完这条命令后.git/config文件内容变成了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/CoderTonyChan/laoshihao-login-web
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "mirror"]
url = https://gitee.com/CoderTonyChan/laoshihao-login-web.git
fetch = +refs/heads/*:refs/remotes/mirror/*

此时已经是一个本地仓库,两个远程仓库。使用下面的命令可以分别从两个远程仓库拉取和推送到两个远程仓库。

1
2
3
4
git pull origin master 
git pull mirror master
git push origin master
git push mirror master

一条命令同时更新多个远程仓库

1
git remote set-url --add origin https://gitee.com/CoderTonyChan/laoshihao-login-web.git

执行这条命令后.git/config内容变成:

1
2
3
4
5
6
7
8
9
10
11
12
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = https://github.com/CoderTonyChan/laoshihao-login-web.git
url = https://gitee.com/CoderTonyChan/laoshihao-login-web.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

这时候我们一条命令即可更新两个远程仓库:

1
git push origin master

Github Release功能


image

Tag


填写这个代表用最新的代码打包📦

否则是用存在的Tag修改

Release Note


使用md语法

二进制文件上传


可以上传编译好的二进制文件

参考模板

1
2
3
4
5
6
7
8
9
10
11
12
13

Last updated at: 03/08/2019

01/30/2019 - v3.0.0~b1 was released for public testing with the following changes:

- iOS 11.0 - 11.4.1 support for A9/A9X/A10/A10X/A11 devices with voucher_swap by @_bazad

01/30/2019 - v3.0.0~b1 was recompiled to fix the in-app version number

01/30/2019 - v3.0.0~b2 was released for public testing with the following changes:

- Fix UI to show that it supports iOS 11.0 - 11.4.1
- Update credits for @_bazad

This is a pre-release


钩上证明还在测试

image

钩上GitHub有标志

规范


建议使用这个规范 Undecimus ShadowsocksX-NG

tag表明是否beta版本

v1.0%beta2

标题使用

v1.0 pre-release

Last updated at: 03/08/2019

01/30/2019 - v3.0.0~b1 was released for public testing with the following changes:

  • iOS 11.0 - 11.4.1 support for A9/A9X/A10/A10X/A11 devices with voucher_swap by @_bazad

01/30/2019 - v3.0.0~b1 was recompiled to fix the in-app version number

01/30/2019 - v3.0.0~b2 was released for public testing with the following changes:

  • Fix UI to show that it supports iOS 11.0 - 11.4.1
  • Update credits for @_bazad

Github 实用功能


一些常用功能

粘贴图片


Ctrl+C

链接到代码


打开一个文件,点击代码左边的行号,或者按住 shift 选择多行。

分享这个 URL ,可以链接到这些代码。如果文件被修改了,会发生变化吗?不会,因为这是永久链接。

image

创建复选框列表


“2/5” 的进度条

image

交互式复选框语法如下:

1
2
3
4
5
- [ ] Screen width (integer) 
- [x] Service worker support
- [x] Fetch support
- [ ] CSS flexbox support
- [ ] Custom elements

⚠️注意: 这是GitHub支持 并不是md语法

GitHub wiki


非结构化网页 可用于文档

GitHub作为CMS(内容管理系统)


文本写在 markdown 文件中,然后存到你的仓库。接着在前端写一个组件来请求文件然后渲染。

marked( https://www.npmjs.com/package/marked ) 插件来解析markdown

快速引用


你可以选中别人的评论文字,然后按r,这些内容会以引用的形式被复制在文本框中:

优雅的提交Commit信息


使用Angular团队提交规范

主要有以下组成

  • 标题行: 必填, 描述主要修改类型和内容
  • 主题内容: 描述为什么修改, 做了什么样的修改, 以及开发的思路等等
  • 页脚注释: 放 Breaking Changes 或 Closed Issues

常用的修改项

  • type: commit 的类型
  • feat: 新特性
  • fix: 修改问题
  • refactor: 代码重构
  • docs: 文档修改
  • style: 代码格式修改, 注意不是 css 修改
  • test: 测试用例修改
  • chore: 其他修改, 比如构建流程, 依赖管理.
  • scope: commit 影响的范围, 比如: route, component, utils, build…
  • subject: commit 的概述
  • body: commit 具体修改内容, 可以分为多行
  • footer: 一些备注, 通常是 BREAKING CHANGE 或修复的 bug 的链接.

一图详解



Reference:

GitHub Repo:Tony Studio

Follow: CoderTonyCHan · GitHub