远程仓库 - GitHub

339 阅读4分钟

学习路径

  • GitHub Explore
  • GitHub Topic
  • GitHub Trending
  • 搜索 awesome xxx, xxx tutorial
  • 按关键词搜索,如电商、短视频,chatgpt

重要概念

  1. Repository(仓库)
  2. Commit(提交)
  3. Branch(分支)
  4. Merge(合并)
  5. Pull(拉取) & Push(推送)
  6. Tag(标签)
  7. Ignore(忽略文件)
  8. Revert(回滚)

配置(git bash)

ssh-keygen -t rsa -b 4096 -C   你的邮箱
cat ~/.ssh/id_rsa.pub          # 得到公钥内容
ssh -T git@github.com          # 测试是否配对

上传代码

// 这里是照搬GitHub的,
git remote add origin git@xxxxxxx   # 在本地添加远程仓库的地址,origin是远程仓库的默认名字
git branch -M main
git push -u origin main        # -u 是第一次上传这个分支,以后直接push

// 上传其他分支

// 方法一
git push origin x:x           # x:x 是从本地的 x 上传到远程的 x

// 方法二
git checkout x
git push -u origin x
  • 步骤:新建GitHub Repo(远程仓库),复制ssh地址,复制里面的代码\
  • 注意:不要使用HTTPS的地址,因为每次都要输密码,如果提示要 git pull,就git pull一下。此操作是把远程分支合并到本地对应的分支。 -u origin master 是设置上游分支,设置一次之后就不用再设置了。

语义化提交

  • 语义化提交是一种标准化的提交信息格式,使得代码版本历史更易于阅读和理解。他要求开发者在提交代码时,根据特定的格式和规则来描述此次提交的内容。

基本格式

<类型>(<作用域>): <简短描述>

<可选的长描述>

<可选的脚注>

组成部分解析

类型(Type)

描述此次提交的主要类型。常见类型包括:

  • feat:新功能 feature
  • fix:修复bug
  • docs:文档修改
  • style:格式化代码,不影响代码逻辑
  • refactor:代码重构
  • perf:性能优化 performance
  • test:添加或修改测试
  • chore:其他修改,如构建,工具链等

作用域(Scope)

  • 说明此次提交影响的范围,如:authUIdatabase。此部分可选。

简短描述

  • 简要的描述此次提交的改动,如:“新增OAuth2支持”。

长描述(可选)

  • 提供更详细的描述,解释此次改动的原因、方法及其背景。

脚注(可选)

  • 描述此次提交所关联的issue、其他相关信息或特别说明。

下载代码

git clone git@xxxxxx [目标路径]
如果是不同机器,要写上传新的 ssh key (一机一key)
cd 目标路径
git add / git commit / [git pull] / git push 

// 如何下载摸个分支
先下载整个仓库,然后 git checkout 分支名

// git clone 的几种变形
// 在当前目录下创建xxx目录,xxx/.git是本地仓库,要记得cd!
git clone git@?/xxx.git

//会在本地新建 yyy 目录,记得 cd yyy
git clone git@?/xxx.git yyy

// 不会新建目录,使用当前目录容纳代码和 .git,当前目录最好是空目录
git clone git@?/xxx.git .

上传到两个远程仓库

// 常用命令
git clone
git pull
git push

高级操作

touch ~/.bashrc
vi ~/.bashrc
echo 'alias ga="git add"'>> ~/.bashrc
echo 'alias gc="git commit -v"'>> ~/.bashrc
echo 'alias gl="git pull"'>> ~/.bashrc
echo 'alias gp="git push"'>> ~/.bashrc
echo 'alias gco="git checkout"'>> ~/.bashrc
echo 'alias gst="git status -sb"'>> ~/.bashrc

//最后 code ~/.bashrc 在文件最后加上
alias glog="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit -- | less"

部署前的build

    // 部署前请安装旧版本的 parcel,命令如下:
    yarn global add parcel@1.9.7
    // 或者下面这个
    yarn global add parcel@next
    
    // 然后build,命令是
    parcel build src/index.html --no-minify --public-url ./

yarn 一键部署

    yarn init -y
    // 进入 package.json
    ```
    "scripts": {
          "build": "rm -rf dist && parcel build src/index.html --no-minify --public-url ./"
    },
    
    // 最后在终端
    yarn build

解决 Github port 443 : Timed out

Failed to connect to github.com port 443 : Timed out

  • 报错原因:Git 所设端口与系统代理不一致,需重新设置

解决方法

  • 查看代理端口
  • 修改 Git 的网络设置
# 注意修改成自己的IP和端口号
git config --global http.proxy http://127.0.0.1:7890 
git config --global https.proxy http://127.0.0.1:7890

取消代理

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

# 查看代理
git config --global --get http.proxy
git config --global --get https.proxy

解决 “ssh:connect to host github.com port 22: Connection timed out”

  • 进入~/.ssh下
cd ~/.ssh
  • 创建一个config文件(这里我用的vim编辑器)
vim config
  • 编辑文件内容:
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443

Host gitlab.com
Hostname altssh.gitlab.com
User git
Port 443
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
  • 保存退出
  • 检查是否成功
ssh -T git@github.com