Git¶
约 936 个字 58 行代码 预计阅读时间 4 分钟
原理 ¶
missing semester
版本控制 (Git) · the missing semester of your cs education
6. Lecture 6 - 版本控制 git_ 哔哩哔哩 _bilibili
使用 ¶
个人使用:init、rm、commit、push、pull¶
git init
git remote -v
git remote add origin + ssh
git remote rm origin
git pull origin [branch]:[master]
git add .
git commit -m ""
git push origin [master]:[branch]
# 本地初始化项目
git config --global user.name "你的名字或昵称"
git config --global user.email "你的邮箱"
分支操作 : branch、checkout、merge¶
# 创建分支、更改
git checkout -b <branch_name>
git branch -a
git branch -d <branch_name> //删除分支
回退 ¶
查看详细历史记录
git log
git log --pretty=oneline
只展示最新的几条日志
git log -n 3
展示历史分支路线
git log --graph
回退任意版本
git reset --hard + commit_id
git reset --hard HEAD^
只能后退,一个 ^ 表示回退一个版本,两个 ^ 表示回退两个版本,依次类推
回退 n 个版本
git reset --hard HEAD~n
Pull Request¶
PR, 全称 Pull Request(拉取请求
- fork 原仓库 A 到我的仓库 B(B 是 A 的 fork 版本)
- 将仓库 B clone 到我本地电脑
- 在本地创建一个分支,如 bugfix/issue-12,该分支用于存放我的代码修改。同时在我的 github 上的仓库 B 也创建一个同名的该分支
- 切换到该分支 bugfix/issue-12,修改代码
git checkout -b bugfix/issue-12
- 修改好了,add,commit,然后 push 到我远程的仓库 B 的 bugfix/issue-12 分支
git push -u origin bugfix/issue-12
【Git】PR 是啥?一篇文章学会 Pull Request 到底是干嘛的 _github pull request-CSDN 博客
git commit
规范 ¶
为了方便使用,我们避免了过于复杂的规定,格式较为简单且不限制中英文:
<type>(<scope>): <subject>
// 注意冒号 : 后有空格
// 如 feat(miniprogram): 增加了小程序模板消息相关功能
scope 选填表示 commit 的作用范围,如数据层、视图层,也可以是目录名称
subject 必填用于对 commit 进行简短的描述
type 必填表示提交类型,值有以下几种:
- feat - 新功能 feature
- fix - 修复 bug
- docs - 文档注释
- style - 代码格式 ( 不影响代码运行的变动 )
- refactor - 重构、优化 ( 既不增加新功能,也不是修复 bug)
- perf - 性能优化
- test - 增加测试
- chore - 构建过程或辅助工具的变动
- revert - 回退
- build - 打包
参考网址 ¶
配置 ¶
git 的安装 ¶
创建个人令牌 ¶
Setting
-> Developer settings
-> Personal access tokens
-> Generate new token 保存密码到自己可以看到的位置
免密登陆 ¶
# 记住密码
git config --global credential.helper store
# 删除密码
git config --global --unset credential.helper
github 配置 ssh ¶
cd ~
ssh-keygen -t rsa -C "xxx@xxx.com" # 这里输入你的邮箱
cd .ssh
cat id_rsa.pub # 复制到github的ssh设置中
验证是否成功
ssh -T git@github.com
SSH¶
- 连接虚拟机
$ ifconfig #记录ip地址
$ ssh user.name@ip
设置 ssh 免密登录 ¶
在 win 主机上ssh-keygen
生成一对公私钥,将公钥发送到服务器的~/.ssh/authorized_keys
文件下
在 win 主机上的 ssh 配置中加入IdentityFile
文件,即可实现免密登录
问题与解决 ¶
连接不上port 443 Couldn‘t connect to server
¶
- 方案一:关闭 VPN
- 方案二:取消代理
git config --global --unset http.proxy git config --global --unset https.proxy
拒绝连接connect to host github.com port 22: Connection refused
¶
- 使用
github 443
端口
给~/.ssh/config
文件里添加如下内容,这样 ssh 连接 GitHub 的时候就会使用 443 端口。
Host github.com
Hostname ssh.github.com
Port 443
https
和git
链接换着试试
url = https://github.com/username/repo.git
url = git@github.com:username/repo.git
- 换梯子节点,检查 DNS 污染
推送失败src refspec master does not match any
¶
按照下面的顺序执行
$ git commit -m "init"
$ git remote add origin xxxxxxxx.git
$ git push -u origin master
远端链接失败fatal: Couldn‘t find remote ref master
¶
# 检查本地配置
git config user.name/git config --global user.name
git config user.email/git config --gloabl user.email
# 检查仓库配置
git remote -v
git remote rm origin
git remote add origin XXXX
文件过大RPC failed;curl 56 Recv failure: Connection was reset
¶
git config --global http.postBuffer 524288000
如果设置之后提交还是报错的话,可能是因为某几个文件过大造成的;
这时就需要用到 git-lfs 具体用法见官网
git lfs install
git lfs track "*.so"
git add .gitattributes
Host key verification failed.¶
重新配置一下 ssh,删除~/.ssh
文件夹,重新生成 ssh key,然后再次连接。
具体操作看配置/github 配置ssh
一节