Git簡介及安裝
Git簡介及安裝
1.什么是Git
Git是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。起初Linus Torvalds 為了幫助管理 Linux 內核開發而開發了一個開放源碼的版本控制軟件,也就是Git。Git 與常用的版本控制工具CVS,Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持。
2.Git跟SVN對比
說到版本控制系統,很多人都會想到SVN,但是Git跟SVN又有很大的區別:
- 1、GIT是分布式的,SVN不是:這是GIT和其它非分布式的版本控制系統,例如SVN,CVS等,最核心的區別。
- 2、GIT把內容按元數據方式存儲,而SVN是按文件:所有的資源控制系統都是把文件的元信息隱藏在一個類似.svn,.cvs等的文件夾里。
- 3、GIT分支和SVN的分支不同:分支在SVN中一點不特別,就是版本庫中的另外的一個目錄。
- 4、GIT沒有一個全局的版本號,而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個特征。
- 5、GIT的內容完整性要優于SVN:GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。
3.Git工作流程
- 從遠程倉庫中克隆 Git 資源作為本地倉庫。
- 從本地倉庫中checkout代碼然后進行代碼修改。
- 在提交前先將代碼提交到暫存區。
- 提交修改。提交到本地倉庫。本地倉庫中保存修改的各個歷史版本。
- 在修改完成后,需要和團隊成員共享代碼時,可以將代碼push到遠程倉庫。
4.Git的安裝
最早Git是在Linux上開發的,很長一段時間內,Git也只能在Linux和Unix系統上跑。不過,慢慢地有人把它移植到了Windows上。現在,Git可以在Linux、Unix、Mac和Windows這幾大平臺上正常運行了。下面的安裝過程都是在Windows上進行。
1、下載
Git下載一般直接取Git的官網下載,目前最新的Git版本已經更新到了2.21.0,安裝32位還是64位根據個人電腦配置選擇即可。
官網地址:https://git-scm.com/
下載地址:https://git-scm.com/download/win
2、安裝Git
安裝完成后,會在系統右鍵菜單中看見下圖中的兩個連個Git *** 的選項
5.Git的基本操作
1、創建版本庫
什么是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。由于git是分布式版本管理工具,所以git在不需要聯網的情況下也具有完整的版本管理能力。
創建一個版本庫非常簡單,可以使用git bash也可以使用TortoiseGit。首先,選擇一個合適的地方,創建一個空目錄。
1.1使用GitBash命令
在當前目錄中點擊右鍵中選擇Git Bash,打開命令窗口。輸入git init 命令,回車如下如所示,即創建好了一個空的git倉庫。
版本庫:“.git”目錄就是版本庫,將來文件都需要保存到版本庫中。
工作目錄:包含“.git”目錄的目錄,也就是.git目錄的上一級目錄就是工作目錄。只有工作目錄中的文件才能保存到版本庫中。
2、添加文件
2.1添加文件步驟
在E:\GitStudy\firstgit 目錄下創建一個txt文件。
2.1.1 使用GitBash
這邊可能會出現一個小問題:
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)`
這種情況其實是沒有對本次提交的內容進行一個說明,其實每次提交最好都加上說明,以便自己或者別人進行查閱,解決辦法也很簡單,類似于linux的vi編輯器操作命令。
1.按鍵盤字母 i 進入insert模式
2.修改最上面那行黃色合并信息,可以不修改
3.按鍵盤左上角"Esc"
4.輸入":wq",注意是冒號+wq,按回車鍵即可
也可以使用 -m 參數后跟提交說明的方式,在一行命令中提交更新。即:git commit -m “這里是信息”,添加就不會出現提示了。
2.2 工作區和暫存區
Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。
工作區就是你在電腦里能看到的目錄,比如我的git文件夾就是一個工作區。git目錄是工作區,在這個目錄中的“.git”隱藏文件夾才是版本庫,二者不能混淆。
Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。如下圖所示:
?當我們把文件往Git版本庫里添加的時候,是分兩步執行的:
第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;
第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支。
因為我們創建Git版本庫時,Git自動為我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。可以簡單理解為,需要提交的文件修改通通放到暫存區,然后,一次性提交暫存區的所有修改。
3、修改文件
3.1 提交修改
被版本庫管理的文件不可避免的要發生修改,此時只需要直接對文件修改即可。修改完畢后需要將文件的修改提交到版本庫。
在修改后的hello.txt(修改后圖標變成紅色感嘆號)文件上點擊右鍵,然后重復2.1中的添加文件的操作。
3.2 查看修改歷史
? 在開發過程中可能會經常查看代碼的修改歷史,或者叫做查看代碼的修改日志。用來查看某個版本是誰修改的,什么時間修改的,修改了哪些內容。
GitBash中查看修改歷史
3.3 差異比較
當文件內容修改后,需要和修改之前對比一下修改了哪些內容此時可以使用“比較差異功能”
GitBash中查看差異
3.4 還原修改
當文件修改后不想把修改的內容提交,還想還原到未修改之前的狀態。此時可以使用“還原”功能。
GitBash中還原修改
4、刪除文件
需要刪除無用的文件時可以使用git提供的刪除功能直接將文件從版本庫中刪除。
4.1 GitBash中還原修改
6.遠程倉庫
1、GitHub遠程倉庫
1.1首先你得在github上創建一個賬號,然后在github上創建一個倉庫:
1.登錄成功之后點擊首頁右上邊的,New按鈕(如下圖所示)
2.頁面跳轉到新建倉庫的頁面,填寫相關的信息
3.填完之后點擊Create repository 按鈕創建倉庫,頁面跳轉到倉庫首頁。
4.在倉庫的首頁 可以看到,Github支持兩種同步方式“https”和“ssh”。如果使用https很簡單基本不需要配置就可以使用,但是每次提交代碼和下載代碼時都需要輸入用戶名和密碼。而且如果是公司配置的私有git服務器一般不提供https方式訪問,所以一般選擇ssh方式。
5.在windows下我們可以使用 Git Bash.exe來生成**,通過開始菜單或者任意位置右鍵菜單打開Git Bash窗口,執行命令: ssh-****** -t rsa 生成公鑰和私鑰
6.執行命令完成后,在window本地用戶.ssh目錄C:\Users\用戶名.ssh下面生成如下名稱的公鑰和私鑰,如下圖:
7.**生成后需要在github上配置**本地才可以順利訪問
2、同步到遠程倉庫
- 在倉庫所在的目錄右鍵選擇“Git Bash Here”,打開Git Bash窗口,。
# 查看關聯的遠程倉庫的名稱
git remote
# 查看關聯的遠程倉庫的詳細信息
git remote -v
遠程倉庫的名稱一般默認為 origin ,可以設置為其他的名稱。
通過 git clone 下載項目到本地時,項目文件夾中的 .git 目錄就是版本庫目錄。
.git 目錄中的 config 文件中有遠程倉庫的關聯配置。
3、從遠程倉庫克隆
克隆遠程倉庫也就是從遠程把倉庫復制一份到本地,克隆后會創建一個新的本地倉庫。選擇一個任意部署倉庫的目錄,然后克隆遠程倉庫。
3.1 使用git bash:
git clone [email protected]:yx1319250478/first_demo.git
4、從遠程倉庫取代碼
Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:
- git fetch:相當于是從遠程獲取最新版本到本地,不會自動merge(合并代碼)
- git pull:相當于是從遠程拉取最新版本并merge到本地
上述命令其實相當于git fetch 和 git merge,在實際使用中,git fetch更安全一些,因為在merge前,我們可以查看更新情況,然后再決定是否合并。
7.如何github上給別人的項目提交PR(Pull Request)
7.1 通過fork的方式在自己的倉庫里建立一個項目。
7.2 clone倉庫到本地,具體做法參考6.2clone
用git remote -v命令,可以看到此時只與自己的遠程倉庫建立了連接,還需要與上游建立連接,這里上游指的是一開始 fork 的那個項目源,以 awesome-spider 為例,執行如下命令:
8.分支管理
1、創建合并分支概述
? 在我們每次的提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD指針嚴格來說不是指向提交,而是指向master,master才是指向提交的。一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:
? 每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。當我們創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:
? 假如我們在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合并:
? 所以Git合并分支也很快!就改改指針,工作區內容也不變!合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支:
2、使用GitBash實現分支管理
2.1 創建分支并切換到新的分支
2.2 合并分支
2.3 解決沖突
兩個分支中編輯的內容都是相互獨立互不干擾的,那么如果在兩個分支中都對同一個文件進行編輯,然后再合并,就有可能會出現沖突。一般來說沖突需要手動解決,找出沖突文件,修改完畢之后即可。
9.GitLab的使用
GitLab總的來數跟Github大同小異,具體使用方法也是差不多的。最大的不同就是GitLab中組的概念。
1.創建組
2.添加組成員
3.創建項目
4.將本地代碼推送到項目中
與github操作一樣
5.clone Gitlab的項目到本地
與github操作一樣
10.常用命令總結
1.克隆遠程倉庫
git clone <url>
2.初始化本地版本庫
git init
3.查看狀態
git status
4.查看變更內容
git diff
5.工作區所有內容添加到暫存區
git add .
6.將工作區指定內容添加到暫存區
git add <file>
7.改名
git mv <old> <new>
8.刪除文件(包括本地)
git rm <file>
9.不刪本地
git rm --cached <file>
10.將暫存區的內容提交到本地倉庫
git commit -m 'msg'
11.查看提交歷史
git log
12.查看指定文件的提交歷史
git log -p <file>
13.以查看列表方式查看指定文件的提交歷史
git blame <file>
14.撤銷工作目錄中所有未提交文件的修改內容
git reset --hard HEAD
15.撤銷指定的未提交文件的修改內容
git checkout -f <file>
16.撤銷指定提交
git revert <commit>
17.顯示所有分支
git branch –a
18.切換到指定分支或標簽
git checkout <branch/tag>
19.新建分支
git branch <newBranch>
20.刪除本地分支
git branch -d <branch>
21.查看本地標簽
git tag
22.基于最新提交創建標簽
git tag <tagname>
23.刪除標簽
git tag -d <tagname>
24.合并指定分支到當前分支
git merge <branch>
25.查看遠程倉庫信息
git remote –v
26.查看指定遠程倉庫信息
git remote show <remote>
27.添加遠程倉庫
git remote add <remote> <url>
28.從遠程倉庫獲取代碼
git fetch <remote>
29.拉取遠程倉庫代碼到本地并合并
git pull <remote> <branch>
30.推送本地代碼到遠程倉庫并合并
git push <remote> <branch>
31.刪除遠程分支
git push <remote> :<branch>
32.推送本地所有分支
git push –tags
智能推薦
JenKins簡介及安裝
一:簡介 Jenkins是一個開源軟件項目,是基于Java開發的一種持續集成工具,用于監控持續重復的工作,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。 二:功能 1、持續的軟件版本發布/測試項目。 2、監控外部調用執行的工作。 (以上摘自百度百科) 三:架構及部署 流程: 由開發人員提交代碼到Git管理倉庫,JenKins持續獲取代碼,進程編譯后部署到環境上,由測試人員測試。 沒有持...
Redis簡介及安裝
Redis簡介及安裝 文章目錄 Redis簡介及安裝 一、nosql介紹 1.NoSQL 2.NoSQL和SQL數據庫的比較: 二、Redis 1.簡介 2.Redis特性 3.Redis 優勢 4.redis應用場景 5.推薦閱讀 三、redis安裝 1.在線安裝 2.下載安裝包: 四、配置 1.配置 2.查看 3.綁定ip 4.端?,默認為6379 5.是否以守護進程運? 6.數據?件 7.數...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
猜你喜歡
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...