是什麼?#
- Git 是一個由 C 語言開發的分佈式版本控制軟體,常用版本管理工具包括 GIT、SVN 等。
- 源碼庫:https://git.kernel.org/pub/scm/git/git.git
能幹什麼?#
本地版本管理#
- 記錄查看
git reflog
- 版本重置
git reset
- 分支管理
- 分支創建
git branch
- 分支切換
git checkout
- 分支合併
git merge
- 分支創建
遠程交互關聯#
- 拉取源碼
git clone <git項目地址>
- 關聯遠程倉庫進行交互
- 添加遠程倉庫
git remote add <別名> <地址>
- 上傳代碼
git push <倉庫別名> <分支名>
- 下載代碼
git pull <倉庫別名> <分支名>
- 分支關聯
git branch --set-upstream-to=<遠程倉庫名稱>/master master
- 添加遠程倉庫
如何使用?#
安裝與配置#
- 下載與安裝 git 客戶端
- 設置 git 用戶信息
git config --global user.name "wuxiangjun"
git config --global user.email "wuxiangjun1998@gmail.com"
#查看是否配置成功
git config --list
- 生成 git 密鑰
默認在用戶目錄下的.ssh 目錄裡
ssh-keygen -t rsa -C "你的郵箱地址"
Tip
之後使用時如果需要上傳或者修改遠端倉庫,則需要將公鑰配置到遠端倉庫伺服器上,而私鑰由自己保留在客戶端本機,以便於 Git 使用時完成校驗。
本地基本使用#
Note
基本概念:
- 工作區: 自己硬碟上實實在在的文件位置,通過 add 到暫存區;
- 暫存區: 在真確確認提交之前,需要將文件保存到暫存區,之後確認了再 commit 到本地倉庫;
- 本地倉庫: 是 git init 之後產生的.git 文件夾。
創建本地倉庫和主分支#
git init
:在當前目錄生成一個本地倉庫,並且默認創建一個 master 分支git status
:查看當前 git 倉庫中文件的狀態
提交到暫存區和本地倉庫#
git add .
:將當前目錄下所有未追蹤的文件添加到暫存區git commit -m "提交說明"
:將暫存區文件提交到本地倉庫git commit -am
:暫存 + 提交
版本重置#
git log
:可以查看提交的記錄,但是只能查看當前版本之前的日誌git reflog
:可以查看所有提交的記錄,包括當前版本之後的。【HEAD 標記,表示當前所在的版本】git reset --hard HEAD^/記錄編號
:將文件回到某個版本下的狀態【HEAD^ 表示前一個版本】
分支管理#
git branch <新分支名> <提交哈希>
:加分支名表示創建分支,不加表示顯示當前所有分支git switch/checkout(舊) <分支名>
:切換分支git merge <分支名>
:合併分支,要改哪個分支,就先切過來,然後 merge 別的分支
關聯交互使用#
Important
基本概念:
- 平常在公司裡,一般會用 gitlab 搭建一個公司內部的 git 伺服器用於存放源碼;
- 需要和管理員溝通,獲取帳號權限,可能需要提供公鑰,也可能是分配一個帳號;
- gitee 和 github:則是一個開源代碼托管平台,相當於一個遠程倉庫。
創建和關聯遠程倉庫#
Warning
記事一則:
- 使用
ssh -T git@github.com
正常驗證通過,但是無法正常git clone
; - 提示
ssh: Could not resolve hostname github.com: Non-recoverable failure in name resolution
; - 折騰一天無果,powershell 正常解析 DNS,但是 git bash 始終無法正常使用,故添加
nslookup github.com
命令測試; - 臨時解決方案:使用 powershell 進行 git 命令操作。
git remote add <倉庫別名> git 項目地址
:添加一個遠程倉庫,並且給他取個名字
Tip
添加別名前可查看項目中已配置的遠程倉庫及其對應的 URL,如果發現名稱已配置,可以根據需要修改或刪除
git remote -v
:查看當前關聯的倉庫git remote rename origin new-origin
:修改遠程倉庫別名git remote set-url origin <new_path>
:重置倉庫地址git remote remove origin
:刪倉庫
拉取源碼#
git clone git項目地址
git pull 倉庫別名 分支名
:pull
實際上是fetch
和merge
的組合
上傳源碼#
git push 倉庫別名 分支名
:上傳本地倉庫的某某分支到關聯的遠程倉庫git push -u origin main:main
:推送本地的main
分支到遠程倉庫origin
,並且將本地的main
分支設置為跟蹤遠程的main
分支(即上游分支)git branch --set-upstream-to=<倉庫別名>/master master
:同上,將默認的push pull
的遠程倉庫<倉庫別名>/master
綁定到本地master
,之後可以省略輸入倉庫名和分支名。