乐趣区

关于git:git基本操作

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 ~/.ssh
    open ~/.ssh
  • Windows 中文件生成地位,门路如下

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

    检测配置是否胜利

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

    多个 git

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

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

    # 一个 GitHub 配置
    Host github.com
    HostName github.com
    User github 用户名
    IdentityFile ~/.ssh/id_rsa
    
    # 一个 GitLab 配置
    Host gitlab 地址
    HostName gitlab.com
    User 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 将这个单选框给去掉,再从新试试

退出移动版