Git的使用

359

开始

Git初始化以及仓库创建和操作

  1. 设置用户名
git config --global user.name 'your name'
  1. 设置邮箱
git config --global user.email 'your email'
  1. 设置全局常用配置
git config --global http.postBuffer 524288000
git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 9999999

解决上传文件过大报错问题

  1. 初始化一个新的Git仓库(在某个文件夹内)
git init

会在当前文件夹下面生成一个隐藏文件

向仓库中添加文件

  1. 查看仓库状态
git status
  1. 向暂存区添加文件
git add 【filename】
  1. 向仓库提交文件
git commit -m '此处写描述'

创建分支

git checkout -b dev // 创建并切换到dev分支
git push --set-upstream origin dev // 将dev分支推送到远程仓库

修改文件

  1. 修改本地文件
//可以通过win下编辑器修改

//或者使用linux下的vi命令
  1. 提交(与添加文件操作无异,三步操作)

删除文件

  1. 首先删除本地文件
//可以通过win下直接右击删除

//或者使用linux下rm 文件名进行删除
  1. 从暂存区删除文件
git rm 文件名
  1. 提交操作
git commit -m '提交描述'

从远程仓库克隆

  1. 获取仓库地址进行克隆
git clone 仓库地址

提交到远程仓库

git push

提交到远程仓库的两种验证方式(https和ssh)

  1. https进行提交(缺乏安全性不推荐)

可以随意克隆github上的项目,而不管是谁的;在pull/push的时候是需要验证用户名和密码的

vi .git/config

将
[remote 'origin']
    url=https://github.com/用户名/仓库名.git
修改为
[remote 'origin']
    url=https://用户名:密码@github.com/用户名/仓库名.git
  1. ssh公钥私钥进行提交(比较安全)

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

  • 查看是否存在ssh秘钥
 $ cd ~/.ssh
 $ ls
  • 如果不存在则生成ssh秘钥
$ ssh-keygen -t rsa -C "your_email@example.com"

代码参数含义:

-t 指定密钥类型,默认是 rsa ,可以省略。

-C 设置注释文字,比如邮箱。

-f 指定密钥文件存储文件名。

根据提示,需要指定文件位置和密码,如果是你足够放心,其实都可以直接回车,不需要什么密码。执行完以后,可在/c/Users/you/.ssh/路径下看到刚生成的文件:id_rsa和id_rsa.pub。即私钥和公钥。

  • 在github账户添加公钥
    • 登录你的github,头像处下拉框选择settings。
    • 进入设置页后点击侧边栏的SSH and GPG keys按钮。
    • 点击New SSH key,title可以任意填,并且将上一步骤生成的id_rsa.pub的内容复制到这里的key输入框中。
    • 确认
 $ ssh -T git@github.com

在这里我收到一个提示

Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hosts.

直接回车,最后看到这个就说明大功告成

Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.