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平臺

    1. 根據不同平臺生成不同SSH密鑰
    2. 將生成的公鑰添加到對應的平臺上
    3. .ssh文件夾中新增 config文件并寫入一下內容
      # 一個GitHub配置Host github.comHostName github.comUser 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路徑

4.  添加到本地倉庫

ssh-add ~/.ssh/id_rsa_gitlab

5.  測試連接是否成功# git使用## 初始化 本地倉庫

git init

初始化倉庫后會在輸入命令所處的文件夾生成一個`.git`文件## 克隆代碼克隆代碼,后面跟著的是你想克隆代碼的項目地址

git clone 項目地址

克隆分支代碼

git clone -b 分支名 項目地址

## 提交代碼提交代碼至遠程倉庫1.  查看分支

git branch -分支名

2.  切換分支切換到你想提交的分支

git checkout 分支名

3.  添加文件到暫存區

添加指定目錄或者指定文件名到暫存區

git add [文件名1] [文件名2] ...

將當前目錄下所有文件添加到暫存區

git add .

4.  查看文件狀態

git status

5.  添加提交的描述信息

git commit -m "提交的描述信息"

6.  提交到遠程

git remote add origin "遠程倉庫地址"

7.  推送代碼到遠程倉庫

git push -u origin 分支名

## 命令總結| 命令 | 解釋 || :----: | :----: || git rm | 刪除工作區文件 || git mv | 移動或重命名文件 || git log | 查看歷史提交記錄 |# 問題實際使用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` 將這個單選框給去掉,再重新試試