日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Git(笔记)

發(fā)布時間:2023/12/3 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Git(笔记) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

版本控制

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

  • 實現(xiàn)跨區(qū)域多人協(xié)同開發(fā)
  • 追蹤和記載一個或者多個文件的歷史記錄
  • 組織和保護你的源代碼和文檔
  • 統(tǒng)計工作量
  • 并行開發(fā)、提高開發(fā)效率
  • 跟蹤記錄整個軟件的開發(fā)過程
  • 減輕開發(fā)人員的負擔,節(jié)省時間,同時降低人為錯誤

簡單說就是用于管理多人協(xié)同開發(fā)項目的技術。

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

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

多人開發(fā)就必須要使用版本控制!

常見的版本控制工具

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

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

  • 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),現(xiàn)在影響力最大且使用最廣泛的是Git與SVN

版本控制分類

本地版本控制

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

集中版本控制 SVN

所有的版本數(shù)據(jù)都保存在服務器上,協(xié)同開發(fā)者從服務器上同步更新或上傳自己的修改

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

分布式版本控制 Git

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

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

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

Git與SVN的主要區(qū)別

SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務器的,而工作的時候,用的都是自己的電腦,所以首先要從中央服務器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服務器。集中式版本控制系統(tǒng)是必須聯(lián)網才能工作,對網絡帶寬要求較高。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-htsFNPPD-1610861329289)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

Git是分布式版本控制系統(tǒng),沒有中央服務器,每個人的電腦就是一個完整的版本庫,工作的時候不需要聯(lián)網了,因為版本都在自己電腦上。協(xié)同的方法是這樣的:比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。Git可以直接看到更新了哪些代碼和文件!

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

Git的歷史

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

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

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

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

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

Git是免費、開源的,最初Git是為輔助 Linux 內核開發(fā)的,來替代 BitKeeper!

Linux和Git之父李納斯·托沃茲(Linus Benedic Torvalds)1969、芬蘭

環(huán)境配置

Git軟件下載

打開 [git官網] https://git-scm.com/,下載git對應操作系統(tǒng)的版本。

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

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

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

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Rr5cfgKx-1610861329293)(C:\Users\王東梁\AppData\Roaming\Typora\typora-user-images\image-20210117000655722.png)]

啟動Git

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

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

**Git CMD:**Windows風格的命令行

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

常用的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目錄

rm -rf / 切勿在Linux中嘗試!刪除電腦中全部文件!

9)、mv 移動文件, mv index.html src index.html 是我們要移動的文件, src 是目標文件夾,當然, 這樣寫,必須保證文件和目標文件夾在同一目錄下。

10)、reset 重新初始化終端/清屏。

11)、clear 清屏。

12)、history 查看命令歷史。

13)、help 幫助。

14)、exit 退出。

15)、#表示注釋

Git配置

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

查看配置 git config -l

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

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

Git相關的配置文件:

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

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

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

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

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

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

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

三個區(qū)域

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

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

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

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

工作流程

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

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

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

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

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

Git項目搭建

創(chuàng)建工作目錄與常用指令

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

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

本地倉庫搭建

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

1、創(chuàng)建全新的倉庫,需要用GIT管理的項目的根目錄執(zhí)行:

# 在當前目錄新建一個Git代碼庫$ git init

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

克隆遠程倉庫

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

# 克隆一個項目和它的整個代碼歷史(版本信息)$ git clone [url] # https://gitee.com/kuangstudy/openclass.git

2、去 gitee 或者 github 上克隆一個測試!

Git文件操作

文件的四種狀態(tài)

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

  • Untracked: 未跟蹤, 此文件在文件夾中, 但并沒有加入到git庫, 不參與版本控制. 通過git add 狀態(tài)變?yōu)镾taged.
  • Unmodify: 文件已經入庫, 未修改, 即版本庫中的文件快照內容與文件夾中完全一致. 這種類型的文件有兩種去處, 如果它被修改, 而變?yōu)镸odified. 如果使用git rm移出版本庫, 則成為Untracked文件
  • Modified: 文件已修改, 僅僅是修改, 并沒有進行其他的操作. 這個文件也有兩個去處, 通過git add可進入暫存staged狀態(tài), 使用git checkout 則丟棄修改過, 返回到unmodify狀態(tài), 這個git checkout即從庫中取出文件, 覆蓋當前修改 !
  • Staged: 暫存狀態(tài). 執(zhí)行git commit則將修改同步到庫中, 這時庫中的文件和本地文件又變?yōu)橐恢? 文件為Unmodify狀態(tài). 執(zhí)行git reset HEAD filename取消暫存, 文件狀態(tài)為Modified

查看文件狀態(tài)

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

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

忽略文件

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

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

  • 忽略文件中的空行或以井號(#)開始的行將會被忽略。
  • 可以使用Linux通配符。例如:星號(*)代表任意多個字符,問號(?)代表一個字符,方括號([abc])代表可選字符范圍,大括號({string1,string2,…})代表可選的字符串等。
  • 如果名稱的最前面有一個感嘆號(!),表示例外規(guī)則,將不被忽略。
  • 如果名稱的最前面是一個路徑分隔符(/),表示要忽略的文件在此目錄下,而子目錄中的文件不忽略。
  • 如果名稱的最后面是一個路徑分隔符(/),表示要忽略的是此目錄下該名稱的子目錄,而非文件(默認文件或目錄都忽略)。
  • #為注釋 *.txt #忽略所有 .txt結尾的文件,這樣的話上傳就不會被選中! !lib.txt #但lib.txt除外 /temp #僅忽略項目根目錄下的TODO文件,不包括其它目錄temp build/ #忽略build/目錄下的所有文件 doc/*.txt #會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

    使用碼云

    github 是有墻的,比較慢,在國內的話,我們一般使用 gitee ,公司中有時候會搭建自己的gitlab服務器

    這個其實可以作為大家未來找工作的一個重要信息!

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

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

    # 進入 C:\Users\Administrator\.ssh 目錄# 生成公鑰ssh-keygen

    3、將公鑰信息public key 添加到碼云賬戶中即可!

    4、使用碼云創(chuàng)建一個自己的倉庫!

    許可證:開源是否可以隨意轉載,開源但是不能商業(yè)使用,不能轉載,… 限制!

    克隆到本地!

    IDEA中集成Git(注意目錄結構)

    1、新建項目,綁定git。

    注意觀察idea中的變化

    2、修改文件,使用IDEA操作git。

    • 添加到暫存區(qū)
    • commit 提交
    • push到遠程倉庫

    3、提交測試

    這些都是單個人的操作!

    學習的方式最重要!學會學習!我上課的更多時候都是在教大家去學習一種理念和思想(學習方式)

    GIT分支

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

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-n8CFbb0e-1610861329306)(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)]

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Dtc4olVF-1610861329307)(C:\Users\王東梁\AppData\Roaming\Typora\typora-user-images\image-20210117132037200.png)]

    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] #切換分支$ git switch master

    IDEA中操作

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

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

    總結

    以上是生活随笔為你收集整理的Git(笔记)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。