git

git是一个开源的分布式版本控制系统 (VCS),能够无效、高速地解决从很小到十分大的我的项目版本治理。
用于跟踪源代码更改。它容许多个开发人员一起进行非线性开发。

git装置

Linux、macOS、Windows都能够在官网下载对应平台安装包,
下载地址:https://git-scm.com/downloads
上面介绍三种平台的其它装置形式:

Linux上装置

应用 dnf

sudo dnf install git-all

如果你在基于 Debian 的发行版上,如 Ubuntu,请应用 apt

sudo apt install git-all

macOS 上装置

在装置 Xcode Command Line Tools。 Mavericks (10.9) 或更高版本的零碎中,在 Terminal 里尝试首次运行 git 命令即可。

git --version

如果没有装置过命令行开发者工具,将会提醒你装置。

Windows 上装置

去Git 官方网站下载。 下载地址: https://git-scm.com/download/win
国内镜像:https://npm.taobao.org/mirrors/git-for-windows/

检测装置

检测装置胜利能够运行 git命令测试是否装置胜利

git

git配置

当你装置好了git后,在Windows上会有三个内容

  • Git Bash,是Git配套的一个控制台
  • Git CMD(Deprecated),是通过CMD应用Git
  • Git GUI,是Git的可视化操作工具

下列git操作示例应用GitHub和GitLab举例

配置Github用户名和账号

这一步前须要先注册好Github账号,GitLab操作和GitHub一样

# 配置账号git config --global user.name "GitHub账号"# 配置邮箱git config --global user.email "GitHub注册邮箱"

查看全局配置后果

# 列出以后配置:git config --list# 列出repository配置:git config --local --list# 列出全局配置:git config --global --list# 列出系统配置:git config --system --list

生成ssh密钥

# 全局生成密钥ssh-keygen -t rsa# 依据邮箱密钥ssh-keygen -t rsa -C “注册GitHub/GitLab的邮箱”# 能够自定义生成文件名ssh-keygen -t rsa -C “注册GitHub/GitLab的邮箱” -f ~/.ssh/id_rsa_gitlab

当输出命令后会提醒三次须要输出明码,间接敲回车。
运行生成SSH密钥命令会在本地 .ssh 文件夹生成两个文件

id_rsa // 密钥
id_rsa.pub //公钥

增加SSH

将生成的ssh公钥 id_rsa.pub 复制到平台的ssh密钥中,门路:用户设置->SSH密钥

  • Linux中文件生成地位,能够通过下列命令进入

    cd ~/.ssh
  • macOS中文件生成地位,也能够通过上面命令进入或关上,

    cd ~/.sshopen ~/.ssh
  • Windows中文件生成地位,门路如下

    C:\\Users\\以后用户\\.ssh

    检测配置是否胜利

    ssh -T git@github.com# 或ssh -T git@gitlab.com

    多个git

    如果一台机器须要连贯多个git平台

  • 依据不同平台生成不同SSH密钥
  • 将生成的公钥增加到对应的平台上
  • .ssh文件夹中新增 config文件并写入一下内容

    # 一个GitHub配置Host github.comHostName github.comUser github用户名IdentityFile ~/.ssh/id_rsa# 一个GitLab配置Host gitlab地址HostName gitlab.comUser gitlab用户名IdentityFile ~/.ssh/id_rsa_gitlab# 配置文件参数# Host : Host能够看作是一个你要辨认的模式,对辨认的模式,进行配置对应的的主机名和ssh文件# HostName : 要登录主机的主机名# User : 登录名# IdentityFile : 指明下面User对应的identityFile门路
  • 增加到本地仓库

    ssh-add ~/.ssh/id_rsa_gitlab
  1. 测试连贯是否胜利

    git应用

    初始化 本地仓库

    git init

初始化仓库后会在输出命令所处的文件夹生成一个.git文件

克隆代码

克隆代码,前面跟着的是你想克隆代码的我的项目地址

git clone 我的项目地址

提交代码

提交代码至近程仓库

  1. 查看分支

    git branch -分支名
  2. 切换分支

切换到你想提交的分支

git checkout 分支名
  1. 增加文件到暂存区

    # 增加指定目录或者指定文件名到暂存区git add [文件名1] [文件名2] ...# 将当前目录下所有文件增加到暂存区git add .
  2. 查看文件状态

    git status
  3. 增加提交的形容信息

    git commit -m "提交的形容信息"
  4. 提交到近程

    git remote add origin "近程仓库地址"
  5. 推送代码到近程仓库

    git push -u origin 分支名

问题

理论应用git的过程中,会出先各种各样问题,本文记录下作者呈现问题较多的一些问题,后续会更新。

权限被回绝,请重试

Permission denied, please try again.

  • 问题形容:

    在 gitlab 仓库曾经增加了 ssh key 之后,用 vsCode 或者 sourcetree 操作仓库时,会弹出提醒
  • 问题剖析:

    mac每次重启机器都须要 root 明码获取 ~/.ssh/id_rsa.pub 的 key
  • 问题日志:

    Git: Permission denied, please try again.
  • 解决办法:

    ssh-add ~/.ssh/你生成ssh密钥文件名例:ssh-add ~/.ssh/id_rsa

    ssh-add 这个命令不是用来永久性的记住你所应用的私钥的。实际上,它的作用只是把你指定的私钥增加到 ssh-agent 所治理的一个 session 当中,这个办法不是一劳永逸

因为电子邮件隐衷限度,推送被回绝

Your push would publish a private email address.

  • 问题形容:

    在推送代码的时候呈现问题,拉取代码能够拉取
  • 问题剖析:

    因为电子邮箱的限度
  • 问题日志:

    ! [remote rejected] main -> main (push declined due to email privacy restrictions)
  • 解决办法:

setting->emails->Keep my email address private 将这个单选框给去掉,再从新试试