Git 教程

Git 教程

一: Git 基礎知識

版本控制概要

版本控制(Revision control)是一種在開發的過程中用於管理我們對文件、目錄或工程等內容的修改歷史,方便查看更改歷史記錄,備份以便恢復以前的版本的軟件工程技術。

實現跨區域多人協同開發
追蹤和記載一個或者多個文件的歷史記錄
組織和保護你的源代碼和文檔
統計工作量
並行開發、提高開發效率
跟蹤記錄整個軟件的開發過程
減輕開發人員的負擔,節省時間,同時降低人爲錯誤

版本控制分類

本地版本控制

記錄文件每次的更新,可以對每個版本做一個快照,或是記錄補丁文件,適合個人用,如RCS。

集中版本控制

	所有的版本數據都保存在服務器上,協同開發者從服務器上同步更新或上傳自己的修改.
	所有的版本數據都存在服務器上,用戶的本地只有自己以前所同步的版本,如果不連網的話,用戶就看不到歷史版本,也無法切換版本驗證問題,或在不同分支工作。而且,所有數據都保存在單一的服務器上,有很大的風險這個服務器會損壞,這樣就會丟失所有的數據,當然可以定期備份。代表產品:SVN、CVS、VSS

分佈式版本控制

	所有版本信息倉庫全部同步到本地的每個用戶,這樣就可以在本地查看所有版本歷史,可以離線在本地提交,只需在連網時push到相應的服務器或其他用戶那裏。由於每個用戶那裏保存的都是所有的版本數據,只要有一個用戶的設備沒有問題就可以恢復所有的數據,但這增加了本地存儲空間的佔用。

SVN與Git的最主要的區別?

	SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而工作的時候,用的都是自己的電腦,所以首先要從中央服務器得到最新的版本,然後工作,完成工作後,需要把自己做完的活推送到中央服務器。集中式版本控制系統是必須聯網才能工作,對網絡帶寬要求較高。
	Git是分佈式版本控制系統,沒有中央服務器,每個人的電腦就是一個完整的版本庫,工作的時候不需要聯網了,因爲版本都在自己電腦上。協同的方法是這樣的:比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

Git 基本概念

Git 是一種在全球範圍都廣受歡迎的版本控制系統。在開發過程中,爲了跟蹤代碼,文檔,項目等信息中的變化,版本控制變得前所未有的重要。

簡介

Git是免費、開源的
Linux和Git之父李納斯·託沃茲(Linus Benedic Torvalds)1969、芬蘭

在這裏插入圖片描述

常用術語

1)、倉庫(Repository)
受版本控制的所有文件修訂歷史的共享數據庫

2)、工作空間(Workspace) 
本地硬盤或Unix 用戶帳戶上編輯的文件副本

3)、工作樹/區(Working tree)
工作區中包含了倉庫的工作文件。您可以修改的內容和提交更改作爲新的提交到倉庫。

4)、暫存區(Staging area)
暫存區是工作區用來提交更改(commit)前可以暫存工作區的變化。

5)、索引(Index)
索引是暫存區的另一種術語。

6)、簽入(Checkin)
將新版本複製回倉庫

7)、簽出(Checkout)
從倉庫中將文件的最新修訂版本複製到工作空間

8)、提交(Commit)
對各自文件的工作副本做了更改,並將這些更改提交到倉庫

9)、衝突(Conflict)
多人對同一文件的工作副本進行更改,並將這些更改提交到倉庫

10)、合併(Merge)
將某分支上的更改聯接到此主幹或同爲主幹的另一個分支

11)、分支(Branch)
從主線上分離開的副本,默認分支叫master

12)、鎖(Lock)
獲得修改文件的專有權限。

13)、頭(HEAD)
頭是一個象徵性的參考,最常用以指向當前選擇的分支。

14)、修訂(Revision)
表示代碼的一個版本狀態。Git通過用SHA1 hash算法表示的ID來標識不同的版本。

15)、標記(Tags)
標記指的是某個分支某個特定時間點的狀態。通過標記,可以很方便的切換到標記時的狀態。

在這裏插入圖片描述

Git原理

工作區域分類

Git本地有三個工作區域:
工作目錄(Working Directory)、
暫存區(Stage/Index)、
資源庫(Repository或Git Directory)。
如果在加上遠程的git倉庫(Remote Directory)就可以分爲四個工作區域。
文件在這四個區域之間的轉換關係如下:

在這裏插入圖片描述

Workspace:工作區,就是你平時存放項目代碼的地方
Index / Stage:暫存區,用於臨時存放你的改動,事實上它只是一個文件,保存即將提交到文件列表信息
Repository:倉庫區(或本地倉庫),就是安全存放數據的位置,這裏面有你提交到所有版本的數據。其中HEAD指向最新放入倉庫的版本
Remote:遠程倉庫,託管代碼的服務器,可以簡單的認爲是你項目組中的一臺電腦用於遠程數據交換

git 管理本地版本的方式

以文件夾爲單位, 如果文件夾添加了git的支持, 則變爲本地工作區.

.git 文件 存放 git 管理的具體內容細節

Directory:使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作空間和Git的管理空間。
WorkSpace:需要通過Git進行版本控制的目錄和文件,這些目錄和文件組成了工作空間。
.git:存放Git管理信息的目錄,初始化倉庫的時候自動創建。
Index/Stage:暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。
Local Repo:本地倉庫,一個存放在本地的版本庫;HEAD會只是當前的開發分支(branch)。
Stash:隱藏,是一個工作狀態保存棧,用於保存/恢復WorkSpace中的臨時狀態。

工作流程

1、在工作目錄中添加、修改文件;
2、將需要進行版本管理的文件放入暫存區域;
3、將暫存區域的文件提交到git倉庫。
因此,git管理的文件有三種狀態:已修改(modified),已暫存(staged),已提交(committed)

在這裏插入圖片描述

Git 環境搭建

git 下載與安裝

官方網站

https://git-scm.com/

當前環境爲 64-bit Git for Windows Setup 版本下載

二: 常用命令

日常使用中的命令

在這裏插入圖片描述

創建倉庫命令

在需要配置的目錄下, 輸入命令

$ git init
# 創建成功會 打印如下內容
Initialized empty Git repository in D:/00- test/gitdemo/.git/

通過 ls -a 查看隱藏目錄 , 可以找到 用於管理倉庫的 .git 隱藏文件夾

新建文件命令

命令行操作文件

touch a.txt

在當前文件夾下 手動創建文件

一般使用工具創建 (使用 開發工具集成 IDEA , Eclipse 等)

查看當前文件狀態

git status
- 紅色表示未添加
- 綠色表示已添加

工作空間與暫存區

添加到暫存區

# 添加指定文件到暫存區
$ git add [file1] [file2] ...

# 添加指定目錄到暫存區,包括子目錄
$ git add [dir]

# 添加當前目錄的所有文件到暫存區
$ git add .

從暫存區移除

git rm --cached 文件名
# 直接從暫存區刪除文件,工作區則不做出改變

緩存區到本地庫

git commit -m “message”

  這種是比較常見的用法,
  -m 參數表示可以直接輸入後面的“message”,
  如果不加 -m參數,那麼是不能直接輸入message的,而是會調用一個編輯器一般是vim來讓你輸入這個message,

本地庫到遠程服務器

自己搭建 遠程服務器 GitLab

碼雲簡介

	使用GitHub時,國內的用戶經常遇到的問題是訪問速度太慢,有時候還會出現無法連接的情況
	和GitHub相比,碼雲也提供免費的Git倉庫,並且,免費版本還包含私有庫。私有項目免費!私有項目免費!私有項目免費!!!此外,還集成了代碼質量檢測、項目演示等功能。對於團隊協作開發,碼雲還提供了項目管理、代碼託管、文檔管理的服務,5人以下小團隊免費。
	碼雲(Git@OSC)是開源中國社區團隊推出的基於Git的快速的、免費的、穩定的在線代碼託管平臺,不限制私有庫和公有庫數量,所以這要做的就是在碼雲上註冊一個帳號,創建一個私有項目(千萬別把公司的項目,建成公有項目,否則可能要恭喜你,你馬上要game over了),把本地倉庫的項目上傳到碼雲上。以後不管你在公司還是在家,就可以自由的上傳、下載你的項目了。

新建項目

創建新倉庫, 並複製 項目的 URL (SSH 加密)
實操代碼
# https://gitee.com/weixin66/mayungitdemo.git

在git 中添加關聯

前提 已經初始化 用戶名和 郵箱

git config --global user.name "這裏面填你的名字如 lanch"       
git config --global user.email "註冊git的郵箱如 [email protected]"

生成公鑰

ssh-keygen -t rsa -C "個人郵箱地址 @.com"
# 連續按3次回車,即可生成祕鑰。

找到生成的公鑰   
C:\Users\Administrator\.ssh  目錄下的 id_rsa.pub 文件

添加公鑰到個人倉庫

在碼雲中添加配置公鑰   設置 ==> 安全(SSH公鑰)

添加遠程庫

# 添加說明文件
touch README.md
git add README.md
git commit -m "README commit"

# git remote add origin 路徑信息
# 實操代碼
git remote add origin https://gitee.com/weixin66/mayungitdemo.git
# git 上傳代碼 -u 表示 設置爲默認位置
git push -u origin master

git push -u origin master // 第一次推送master分支的所有內容

注:在GitHub上創建新倉庫時,如果勾選了README.md選項時,可能會出現下面錯誤,提示:遠程倉庫有readme.txt,而本地倉庫沒有README.txt,此時應該先進行合併文件,再進行推送。

git pull --rebase origin master // 推送之前,進行合併

合併文件之後,發現本地倉庫中多了README.md文件,此時再進行推送修改到遠程倉庫就可以了。

再次執行:git push -u origin master, 即可推送本地倉庫到遠程倉庫了

查看GitHub上的文件,已經更新!

git push origin master // 以後每次本地修改更新後,推送最新修改

三: IDEA 整合 Git

配置Git 安裝路徑

配置碼雲插件在這裏插入圖片描述

配置連接碼雲的參數

在這裏插入圖片描述

共享項目到碼雲

必須保證 git 已經 初始化完畢

git config --global user.email "[email protected]"  
git config --global user.name "Your Name"

共享項目

異常情況分析

異常情況

Push failed: Failed with error: fatal: Could not read from remote repository

這種異常情況大概率是 SSH 公鑰配置錯誤導致

解決方式

  • 重新設置SSH 公鑰
  • Settings -> Git下的SSH executable設置爲Native,如果選擇Built-in,則需要輸入密碼

使用Idea 打開碼雲倉庫項目

把GitHub 中的項目保存到碼雲中

1- 新建一個Github 的賬號

2- 將開源項目 保存到自己的GitHub中

3- 碼雲中 選擇從git 中導入項目(綁定自己的Github 賬號)

碼雲的下載速度 要比 github 快

添加/提交/推送-項目

分支

新建分支

分支提交到遠程倉庫

此時只是在本地創建好了分支,修改源代碼後add,commit將本地分支提交到遠程倉庫

其它成員從git拉取分支

合併分支

解決衝突問題

發佈了50 篇原創文章 · 獲贊 17 · 訪問量 5111
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章