Git知識點總結

?

目錄

?

1、版本控制

1.1什么是版本控制

1.2常見的版本控制工具

1.3版本控制分類

2、集中版本控制 SVN

3、分布式版本控制 Git

2、Git與SVN的主要區別

3、軟件下載

安裝:無腦下一步即可!安裝完畢就可以使用了!

4、啟動Git

4.1常用的Linux命令

4.2Git配置

4.3設置用戶名與郵箱(用戶標識,必要)?

4.4三個區域

4.5工作流程

4.6創建工作目錄與常用指令

5、本地倉庫搭建

5.1創建全新的倉庫

5.2克隆遠程倉庫

6、Git文件操作

6.1文件的四種狀態

6.2 查看文件狀態

6.3?忽略文件

7、使用碼云

1、注冊登錄碼云,完善個人信息

2、設置本機綁定SSH公鑰,實現免密碼登錄!(免密碼登錄,這一步挺重要的,碼云是遠程倉庫,我們是平時工作在本地倉庫!)

?2.1復制id_rsa.pub文件到gitee

8、IDEA中集成Git

8.1 新建項目,綁定git。

2,直接把新項目復制到 springboot中即可

提交通過? git add? ? ?git??commit? 添加到遠程? git push即可

?8.2?說明:GIT分支


1、版本控制

1.1什么是版本控制

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

  • 實現跨區域多人協同開發

  • 追蹤和記載一個或者多個文件的歷史記錄

  • 組織和保護你的源代碼和文檔

  • 統計工作量

  • 并行開發、提高開發效率

  • 跟蹤記錄整個軟件的開發過程

  • 減輕開發人員的負擔,節省時間,同時降低人為錯誤

簡單說就是用于管理多人協同開發項目的技術。

沒有進行版本控制或者版本控制本身缺乏正確的流程管理,在軟件開發過程中將會引入很多問題,如軟件代碼的一致性、軟件內容的冗余、軟件過程的事物性、軟件開發過程中的并發性、軟件源代碼的安全性,以及軟件的整合等問題。

無論是工作還是學習,或者是自己做筆記,都經歷過這樣一個階段!我們就迫切需要一個版本控制工具!

1.2常見的版本控制工具

我們學習的東西,一定是當下最流行的!

主流的版本控制器有如下這些:

  • Git
  • SVN(Subversion)
  • CVS(Concurrent Versions System)
  • VSS(Micorosoft Visual SourceSafe)
  • TFS(Team Foundation Server)
  • Visual Studio Online

版本控制產品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),現在影響力最大且使用最廣泛的是Git與SVN

1.3版本控制分類

1、本地版本控制

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

2、集中版本控制 SVN

所有的版本數據都保存在服務器上,協同開發者從服務器上同步更新或上傳自己的修改

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

3、分布式版本控制 Git

每個人都擁有全部的代碼!安全隱患!

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

不會因為服務器損壞或者網絡問題,造成不能工作的情況!

2、Git與SVN的主要區別

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

Git是目前世界上最先進的分布式版本控制系統。

聊聊Git的歷史

同生活中的許多偉大事物一樣,Git 誕生于一個極富紛爭大舉創新的年代。

Linux 內核開源項目有著為數眾廣的參與者。絕大多數的 Linux 內核維護工作都花在了提交補丁和保存歸檔的繁瑣事務上(1991-2002年間)。到 2002 年,整個項目組開始啟用一個專有的分布式版本控制系統 BitKeeper 來管理和維護代碼。

Linux社區中存在很多的大佬!破解研究 BitKeeper !

到了 2005 年,開發 BitKeeper 的商業公司同 Linux 內核開源社區的合作關系結束,他們收回了 Linux 內核社區免費使用 BitKeeper 的權力。這就迫使 Linux 開源社區(特別是 Linux 的締造者 Linus Torvalds)基于使用 BitKeeper 時的經驗教訓,開發出自己的版本系統。(2周左右!) 也就是后來的 Git!

Git是免費、開源的,最初Git是為輔助 Linux 內核開發的,來替代 BitKeeper!Linux和Git之父李納斯·托沃茲(Linus Benedic Torvalds)1969、芬蘭

Git環境配置

3、軟件下載

打開 [git官網]?Git,下載git對應操作系統的版本。

所有東西下載慢的話就可以去找鏡像!

官網下載太慢,我們可以使用淘寶鏡像下載:http://npm.taobao.org/mirrors/git-for-windows/

?

下載對應的版本即可安裝!

安裝:無腦下一步即可!安裝完畢就可以使用了!

4、啟動Git

安裝成功后在開始菜單中會有Git項,菜單下有3個程序:任意文件夾下右鍵也可以看到對應的程序!

Git Bash:Unix與Linux風格的命令行,使用最多,推薦最多

Git CMD:Windows風格的命令行

Git GUI:圖形界面的Git,不建議初學者使用,盡量先熟悉常用命令

4.1常用的Linux命令

平時一定要多使用這些基礎的命令!

1)、cd : 改變目錄。2)、cd . . 回退到上一個目錄,直接cd進入默認目錄3)、pwd : 顯示當前所在的目錄路徑。4)、ls(ll): 都是列出當前目錄中的所有文件,只不過ll(兩個ll)列出的內容更為詳細。5)、touch : 新建一個文件 如 touch index.js 就會在當前目錄下新建一個index.js文件。6)、rm: 刪除一個文件, rm index.js 就會把index.js文件刪除。7)、mkdir: 新建一個目錄,就是新建一個文件夾。8)、rm -r : 刪除一個文件夾, rm -r src 刪除src目錄9)、mv 移動文件, mv index.html src index.html 是我們要移動的文件, src 是目標文件夾,當然, 這樣寫,必須保證文件和目標文件夾在同一目錄下。10)、reset 重新初始化終端/清屏。11)、clear 清屏。12)、history 查看命令歷史。13)、help 幫助。14)、exit 退出。15)、#表示注釋
4.2Git配置

所有的配置文件,其實都保存在本地!

查看配置?git config -l

查看不同級別的配置文件:

#查看系統config
git config --system --list#查看當前用戶(global)配置
git config --global  --list

Git相關的配置文件:

1)、Git\etc\gitconfig :Git 安裝目錄下的 gitconfig --system 系統級

2)、C:\Users\Administrator\ .gitconfig 只適用于當前登錄用戶的配置 --global 全局

????????這里可以直接編輯配置文件,通過命令設置后會響應到這里。

4.3設置用戶名與郵箱(用戶標識,必要)?

當你安裝Git后首先要做的事情是設置你的用戶名稱和e-mail地址。這是非常重要的,因為每次Git提交都會使用該信息。它被永遠的嵌入到了你的提交中:

git config --global user.name "kuangshen"  #名稱
git config --global user.email 2983394967@qq.com   #郵箱

只需要做一次這個設置,如果你傳遞了–global 選項,因為Git將總是會使用該信息來處理你在系統中所做的一切操作。如果你希望在一個特定的項目中使用不同的名稱或e-mail地址,你可以在該項目中運行該命令而不要–global選項。總之–global為全局配置,不加為某個項目的特定配置。

?Git基本理論

4.4三個區域

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

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

本地的三個區域確切的說應該是git倉庫中HEAD指向的版本:

  • Directory:使用Git管理的一個目錄,也就是一個倉庫,包含我們的工作空間和Git的管理空間。

  • WorkSpace:需要通過Git進行版本控制的目錄和文件,這些目錄和文件組成了工作空間。

  • .git:存放Git管理信息的目錄,初始化倉庫的時候自動創建。

  • Index/Stage:暫存區,或者叫待提交更新區,在提交進入repo之前,我們可以把所有的更新放在暫存區。

  • Local Repo:本地倉庫,一個存放在本地的版本庫;HEAD會只是當前的開發分支(branch)。

  • Stash:隱藏,是一個工作狀態保存棧,用于保存/恢復WorkSpace中的臨時狀態。

4.5工作流程

git的工作流程一般是這樣的:

1、在工作目錄中添加、修改文件;

2、將需要進行版本管理的文件放入暫存區域;

3、將暫存區域的文件提交到git倉庫。

因此,git管理的文件有三種狀態:已修改(modified),已暫存(staged),已提交(committed)

Git項目搭建

4.6創建工作目錄與常用指令

工作目錄(WorkSpace)一般就是你希望Git幫助你管理的文件夾,可以是你項目的目錄,也可以是一個空目錄,建議不要有中文。

日常使用只要記住下圖6個命令:

5、本地倉庫搭建

5.1創建全新的倉庫

創建本地倉庫的方法有兩種:一種是創建全新的倉庫,另一種是克隆遠程倉庫。

1、創建全新的倉庫,需要用GIT管理的項目的根目錄執行:

在當前目錄新建一個Git代碼庫

$ git init

2、執行后可以看到,僅僅在項目目錄多出了一個.git目錄,關于版本等的所有信息都在這個目錄里面。

5.2克隆遠程倉庫

1、另一種方式是克隆遠程目錄,由于是將遠程服務器上的倉庫完全鏡像一份至本地!

克隆一個項目和它的整個代碼歷史(版本信息)

$ git clone [url] # https://gitee.com/kuangstudy/openclass.git

6、Git文件操作

6.1文件的四種狀態

版本控制就是對文件的版本控制,要對文件進行修改、提交等操作,首先要知道文件當前在什么狀態,不然可能會提交了現在還不想提交的文件,或者要提交的文件沒提交上。

  • Untracked: 未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態變為Staged.

  • Unmodify: 文件已經入庫, 未修改, 即版本庫中的文件快照內容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變為Modified. 如果使用git rm移出版本庫, 則成為Untracked文件

  • Modified: 文件已修改, 僅僅是修改, 并沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態, 使用git checkout 則丟棄修改過, 返回到unmodify狀態, 這個git checkout即從庫中取出文件, 覆蓋當前修改 !

  • Staged: 暫存狀態. 執行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變為一致, 文件為Unmodify狀態. 執行git reset HEAD filename取消暫存, 文件狀態為Modified

6.2 查看文件狀態

上面說文件有4種狀態,通過如下命令可以查看到文件的狀態:

#查看指定文件狀態
git status [filename]#查看所有文件狀態
git status# git add .                  添加所有文件到暫存區
# git commit -m "消息內容"    提交暫存區中的內容到本地倉庫 -m 提交信息

6.3?忽略文件

有些時候我們不想把某些文件納入版本控制中,比如數據庫文件,臨時文件,設計文件等

在主目錄下建立".gitignore"文件,此文件有如下規則:

  • 忽略文件中的空行或以井號(#)開始的行將會被忽略。

  • 可以使用Linux通配符。例如:星號(*)代表任意多個字符,問號(?)代表一個字符,方括號([abc])代表可選字符范圍,大括號({string1,string2,…})代表可選的字符串等。

  • 如果名稱的最前面有一個感嘆號(!),表示例外規則,將不被忽略。

  • 如果名稱的最前面是一個路徑分隔符(/),表示要忽略的文件在此目錄下,而子目錄中的文件不忽略。

  • 如果名稱的最后面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非文件(默認文件或目錄都忽略)。

#為注釋
*.txt        #忽略所有 .txt結尾的文件,這樣的話上傳就不會被選中!
!lib.txt     #但lib.txt除外
/temp        #僅忽略項目根目錄下的TODO文件,不包括其它目錄temp
build/       #忽略build/目錄下的所有文件
doc/*.txt    #會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

7、使用碼云

1、注冊登錄碼云,完善個人信息

2、設置本機綁定SSH公鑰,實現免密碼登錄!(免密碼登錄,這一步挺重要的,碼云是遠程倉庫,我們是平時工作在本地倉庫!)
# 進入 C:\Users\Administrator\.ssh 目錄
# 生成公鑰
ssh-keygen

?

?2.1復制id_rsa.pub文件到gitee

?2.2創建倉庫

8、IDEA中集成Git

8.1 新建項目,綁定git。

添加到暫存區

commit 提交

push到遠程倉庫

2,直接把新項目復制到 springboot中即可

提交通過? git add? ? ?git??commit? 添加到遠程? git push即可

?8.2?說明:GIT分支

**分支在GIT中相對較難,分支就是科幻電影里面的平行宇宙,**如果兩個平行宇宙互不干擾,那對現在的你也沒啥影響。不過,在某個時間點,兩個平行宇宙合并了,我們就需要處理一些問題了!

會有很多版本 如 master? ?dev? ?等

git分支中常用指令:

# 列出所有本地分支
git branch# 列出所有遠程分支
git branch -r# 新建一個分支,但依然停留在當前分支
git branch [branch-name]# 新建一個分支,并切換到該分支
git checkout -b [branch]# 合并指定分支到當前分支
$ git merge [branch]# 刪除分支
$ git branch -d [branch-name]# 刪除遠程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

如果同一個文件在合并分支時都被修改了則會引起沖突:解決的辦法是我們可以修改沖突文件后重新提交!選擇要保留他的代碼還是你的代碼!

master主分支應該非常穩定,用來發布新版本,一般情況下不允許在上面工作,工作一般情況下在新建的dev分支上工作,工作完后,比如上要發布,或者說dev分支代碼穩定后可以合并到主分支master上來。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/web/11026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11026.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shell編程之循環語句之for

一.for循環語句 讀取不同的變量值,用來逐個執行同一組命令 for 變量名 in 取值列表 do命令序列 done 示例: 1.計算從1到100所有整數的和 2.提示用戶輸入一個小于100的整數,并計算從1到該數之間所有整數的和 3.求從1到100所有整數的偶數和…

【牛客】SQL206 獲取每個部門中當前員工薪水最高的相關信息

1、描述 有一個員工表dept_emp簡況如下: 有一個薪水表salaries簡況如下: 獲取每個部門中當前員工薪水最高的相關信息,給出dept_no, emp_no以及其對應的salary,按照部門編號dept_no升序排列,以上例子輸出如下: 2、題目…

SBM模型、超效率SBM模型代碼及案例數據(補充操作視頻)

01、數據簡介 SBM(Slack-Based Measure)模型是一種數據包絡分析(Data Envelopment Analysis, DEA)的方法,用于評估決策單元(Decision Making Units, DMUs)的效率。而超效率SBM模型是對SBM模型的…

輪轉數組 與 消失的數字

輪轉數組 思路一 創建一個新內存空間,將需輪轉的數依次放入,之后在把其它數放入 代碼: void rotate(int* nums, int numsSize, int k) {k k % numsSize;// 確定有效的旋轉次數if(k 0)return;int* newnums (int*)malloc(sizeof(int) * nu…

HarmonyOS應用開發者高級認證 試題+答案

判斷題 云函數打包完成后,需要到AppGallery Connect創建對應函數的觸發器才可以在端側中調用(錯誤) 每一個自定義組件都有自己的生命周期(正確) 基于端云一體化開發,開發者需要精通前端、后端不同的開發語言…

h2 數據庫Statement was canceled or the session timed out 解決辦法

背景 某項目因需要存儲的數據較少,選擇了h2 數據庫。數據庫的某張表的數據需要全部加載到內存中使用。 最近,某個項目使用該應用時需求比較特殊,使得這張表的數據量增加到了一萬條。此時,查詢全量數據的 SQL 發生了異常&#xf…

遞歸求fabonacci數列 pta

斐波那契數列(Fibonacci sequence)是一個經典的數列,它由以下遞歸關系定義: [ F(n) F(n-1) F(n-2) ] 其中,( F(0) 0 ) 和 ( F(1) 1 )。 在編程中,遞歸是一種實現斐波那契數列的直觀方法。以下是使用遞…

git之tag操作

查看本地有哪些 tags # git tag -l v0.0.3 v0.0.5 v0.0.6查看遠程有哪些 tags # git ls-remote --tags From https://github.com/eyjian/gomooon.git 1fe7f5ecf369cba34f4328285ce1ec72d62c091e refs/tags/v0.0.3 9371db55046109d7fc9a9f75625d5ec31c326ad1 re…

[muduo網絡庫]——muduo庫Acceptor類(剖析muduo網絡庫核心部分、設計思想)

接著之前我們剖析的muduo庫三大核心組件Channel類,Poller/EpollPoller類,EventLoop類,我們接下來繼續看muduo庫中的其他類,這一篇,我們先來介紹Acceptor類。 Acceptor類 主要功能 Acceptor類用于創建套接字&#xf…

企業OA辦公系統開發筆記:1、搭建后端環境

文章目錄 企業辦公系統:搭建環境一、項目介紹1、介紹2、技術棧3、項目模塊4、數據庫 二、搭建環境1、搭建后端1.1、搭建父工程clfwzx-oa-parent1.2、搭建工具類父模塊common1.3、搭建工具類common的子模塊1.4、搭建實體類模塊model和項目模塊service-oa 2、配置依賴…

親測!史上最全數據庫基礎?!

為什么要學習數據庫 以前在程序中存儲數據是一個變量,對象;數據都存儲在內存中,程序運行結束后就銷毀。 后來學習IO之后,將數據存儲在文件中,做到持久存儲,但是使用不方便。 學習專業的數據存儲軟件——…

基于POSIX的信號量模擬DAG上的并行計算的同步問題

本代碼主題借鑒nju的jyy老師的代碼 自己增加了隨機生成DAG(有向無環圖)(不保證連通)數據進行測試 運行打印結果即為并行計算DAG的拓撲序 #include <pthread.h> #include <semaphore.h> #include <unistd.h> #include <iostream> #include <vector&g…

2024最新最全【NMAP】零基礎入門到精通

一、Nmap介紹 Nmap(Network Mapper&#xff0c;網絡映射器)是一款開放源代碼的網絡探測和安全審核工具。它被設計用來快速掃描大型網絡&#xff0c;包括主機探測與發現、開放的端口情況、操作系統與應用服務指紋識別、WAF識別及常見安全漏洞。它的圖形化界面是Zenmap&#xff…

[AIGC] redis 持久化相關的幾道面試題

文章目錄 1. 什么是Redis持久化&#xff1f;2. Redis 的持久化機制是什么&#xff1f;各自的優缺點&#xff1f;2.1 RDB&#xff08;Redis DataBase&#xff09;&#xff0c;快照2.2 AOF&#xff08;Append Only File&#xff09;&#xff0c;日志 3. 優缺點是什么&#xff1f;…

Vue3的setup

Vue3的setup setup選項是一個接收props和context的函數是一個新的組件選項&#xff0c;作為Composition-API的入口點&#xff0c;只會被執行一次&#xff0c;用于建立數據與邏輯的連接。 注意點 在執行setup函數時&#xff0c;還沒執行created生命周期方法&#xff0c;因此在s…

單核CPU調度

CPU MLFQ 調度 MLFQ即多級反饋隊列調度。在給定時間片中&#xff0c;任務存在不同優先隊列之中等待被執行&#xff0c;MLFQ根據優先級去決定哪個任務在該時間片執行 Round Robin Round Robin即RR&#xff0c;是基于時間片的輪詢調度算法。給每個任務分配一個時間片&#xff…

pixhawk無人機飛控解鎖

飛控解鎖 GitBook 左手油門的遙控解鎖是油門右下角撥&#xff0c;右手油門是油門最低&#xff0c;方向最右。 飛控如何加鎖? 左手油門&#xff1a;油門左下角 右手油門&#xff1a;油門最低&#xff0c;方向最左 飛控解鎖成功后&#xff0c;不推油門的情況下&#xff0c;…

基于SSM+Vue的物流管理系統

運行截圖 獲取方式 Gitee倉庫

大眾點評全國店鋪基礎信息采集-學習培訓店鋪-2024年5月

2024年5月最新采集大眾點評全國(內地)-學習培訓大類-店鋪基礎信息&#xff0c;93余萬家 學習培訓類店鋪示例&#xff1a; 店鋪id k40VtNBN3bixFJIU 店鋪名稱 夢想鋼琴成人鋼琴(珠江新城總部) 十分制效果評分 9.4 十分制服務評分 9.4 十分制環境評分 9.4 人均價格 1233 …

為什么數據庫字符編碼不一致會導致索引失效

引言 數據庫字符編碼不一致是數據庫管理和優化過程中經常遇到的問題之一&#xff0c;尤其在涉及多語言環境和多應用時更為顯著。本文旨在深入探討字符編碼不匹配如何影響SQL查詢性能&#xff0c;導致索引失效&#xff0c;以及其背后的原理。 1. 字符編碼與索引基礎 字符編碼…