您好,登錄后才能下訂單哦!
Linux安裝Git及詳細使用
Git是目前世界上最先進的分布式版本控制系統(tǒng)。Git的與SVN最主要的區(qū)別 ,Git是分布式版本控制系統(tǒng),那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,只需把各 自的修改推送給對方;SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務器的,集中式版本控制系統(tǒng)是必須聯(lián)網(wǎng)才能工作。
一、Git優(yōu)點:
(1).直接快照,而非比較差異:Git 只關心文件數(shù)據(jù)的整體是否發(fā)生變化
(2).近乎所有操作都可本地執(zhí)行
(3).時刻保持數(shù)據(jù)完整性
(4).三種狀態(tài)
Git 內都只有三種狀態(tài):已提交(committed),已修改(modified)和已暫存(staged)。已提交表示該文件已經(jīng)被安全地保存在本地數(shù)據(jù)庫中了;已修改表示修改了某個文件,但還沒有提交保存;已暫存表示把已修改的文件放在下次提交時要保存的清單中.
(5)多數(shù)據(jù)操作僅添加數(shù)據(jù)
二、安裝Git
安裝方式有兩種:一種是通過編譯源代碼來安裝;另一種是使用為特定平臺預編譯好的安裝包。然而,通過編譯源代碼來安裝可以安裝最新的版本Git。
Git 的工作需要調用curl,zlib,openssl,expat,libiconv 等庫的代碼,所以需要先安裝這些依賴工具。在有yum 的系統(tǒng)上(比如Fedora)或者有apt-get 的系統(tǒng)上(比如Debian 體系的),可以用下面的命令安裝:
$ yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
$ apt-get install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
1
2
3
4
之后,從下面的Git 官方站點下載最新版本源代碼:
http://git-scm.com/download
然后編譯并安裝:
$ tar -zxf git-1.6.0.5.tar.gz
$ cd git-1.6.0.5
$ make prefix=/usr/local all
#####Error:#####
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] error 2
make: *** [perl/perl.mak] error 2
解決:yum install perl-ExtUtils-MakeMaker package
$ make prefix=/usr/local install
現(xiàn)在已經(jīng)可以用git 命令了,用git 把Git 項目倉庫克隆到本地,以便日后隨時更新:
mkdir /opt/git
cd /opt/git/
$ git clone https://github.com/Billshuai/GuessMusic.git
在Linux 上安裝
如果要在Linux 上安裝預編譯好的Git 二進制安裝包,可以直接用系統(tǒng)提供的包管理工
具。在Fedora 上用yum 安裝:
$ yum install git-core
1
在Ubuntu 這類Debian 體系的系統(tǒng)上,可以用apt-get 安裝:
$ apt-get instal git-core
1
初次運行Git 前的配置,。配置工作只需一次,以后升級時還會沿用現(xiàn)在的配置,
三、Git的前期準備
1.初次運行Git 前的配置
第一個要配置的是你個人的用戶名稱和電子郵件地址。這兩條配置很重要,每次Git 提交時都會引用這兩條信息,說明是誰提交了更新。
$ git config --global user.name "Billshuai"
$ git config --global user.email billshuai@example.com
1
2
如果用了–global 選項,那么更改的配置文件就是位于你用戶主目錄下的~/.gitconfig文件,以后你所有的項目都會默認使用這里配置的用戶信息。如果要在某個特定的項目中使用其他名字或者電郵,只要去掉–global 選項重新配置即可,新的設定保存在當前項目的.git/config文件里.
2.Git更改文本編輯器、差異分析工具、查看信息、獲取幫助
比如更改文本編輯器Emacs 的話,代碼:
$ git config --global core.editor emacs
1
比如更改差異分析工具vimdiff的話,代碼:
$ git config --global merge.tool vimdiff
1
要檢查已有的配置信息,可以使用git config –list 命令:
$ git config --list
1
有時候會看到重復的變量名,那就說明它們來自不同的配置文件(比如/etc/gitconfig和~/.gitconfig),不過最終Git 實際采用的是最后一個。也可以直接查閱某個環(huán)境變量的設定,只要把特定的名字跟在后面即可,代碼:
$ git config user.name
1
Git 的各式工具該怎么用,可以閱讀它們的使用幫助,方法有三
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
1
2
3
例如:
$ git help pull
1
打開的如圖:
這里寫圖片描述
四、Git的基礎操作
如果沒有配置信息,一定要提前配置(git config –global user.name XXX
git config –global user.email XXX)
(1)在本地創(chuàng)建一個工程文件夾,進入該目錄,代碼如下:
cd D:/www //進入D盤www文件夾下
mkdir bingsman //新建一個文件夾,作為工程目錄
pwd //用于顯示當前目錄
1
2
3
(2)通過命令 git init 把目錄變成git可以管理的倉庫,初始化后,在當前目錄下會出現(xiàn)一個名為.git的目錄(隱藏文件夾),所有Git 需要的數(shù)據(jù)和資源都存放在這個目錄中。
git init
1
(3)可以先建一個txt文件文件試試,修改、提交和保存都是這兩步
git add readme.txt //添加到暫存區(qū)
git commit -m '修改說明' //把文件提交到倉庫
1
2
(4)通過命令git status來查看文件狀態(tài)是否還有文件未提交,通過命令git diff readme.txt 查看readme.txt文件到底改了什么內容(但是對于二進制文件(例如:視頻,音樂)只能查出修改大小,不能查看修改內容)
git status //查看文件狀態(tài)是否已經(jīng)全部上傳
git diff readme.txt //查看文件修改了什么內容
1
2
(5)版本回退,首先查看log,通過git log查看最近的修改歷史記錄(git log –pretty=oneline 把log打印成一條線),然后通過git reflog查看版本號
git log //查看修改日志
git log --pretty=oneline //查看修改日志并且日志在一行
git reflog //查看提交的各個版本
git reset --hard 版本號 //回退固定版本
git reset --hard HEAD^ //回退到上一個版本
git reset --hard HEAD^^ //回退到上上一個版本
git reset --hard HEAD~50 //回退到前50個版本
1
2
3
4
5
6
7
(6)修改和刪除文件操作
修改,在add之后(文件放到暫存區(qū)之后又操作),或者是add之前(文件沒有放到暫存區(qū)之前修改的)修改的內容,都可以用checkout命令撤銷原來的修改
git checkout -- readme.txt
1
刪除,通過命令rm來刪除文件,但是要想徹底刪除文件,需要commit命令來提交,在提交之前可以通過checkout恢復文件
rm readme.txt //刪除文件
git checkout -- readme.txt //撤銷修改
1
2
(7)遠程倉庫
由于本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的
第一步:首先創(chuàng)建SSH Key(如果用戶主目錄下有就跳過)
ssh-keygen -t rsa –C “youremail@example.com”
1
這樣會在用戶主目錄下,生成.ssh目錄,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,
第二步:登錄github,打開” settings”中的SSH Keys頁面,然后點擊“Add SSH Key”,填上任意title,在Key文本框里黏貼id_rsa.pub文件的內容。
第三步:然后遠程連接如何連接
首先登錄github上,然后在右上角找到“create a new repo”創(chuàng)建一個新的倉庫。
然后,在GitHub上的這個testgit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯(lián),然后,把本地倉庫的內容推送到GitHub倉庫
git remote add origin https://github.com/Billshuai/testgit.git //遠程連接
git push -u origin master //上傳到git服務器
如果報錯的話
git pull origin master //更新遠程程序到本地
1
2
3
4
5
6
加上了 –u參數(shù),Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯(lián)起來, 在以后的推送或者拉取時就可以簡化命令。
(8)創(chuàng)建與合并分支
在 版本回退里,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支
第一步:創(chuàng)建dev分支,然后切換到dev分支上
git checkout -b master2 //建dev分支,然后切換到dev分支上
1
或者
git branch master2 //建dev分支
git checkout master2 //切換到dev分支上
1
2
查看分支,會列出所有的分支,當前分支前面會添加一個星號;
git branch //查看當前分支
1
第二步:在分支master2中進行修改(add),提交(commit)之后然后再回到主分支(git checkout master),但是你此時再打開文檔,并沒有什么改變,所以需要分支合并。
//上面已經(jīng)進入了masters分支中
//然后修改文件readme.txt的內容
git add readme.txt
git commit -m '分支master2中修改的'
git checkout master //切換到主分支
cat readme.txt //發(fā)現(xiàn)文件并沒有改變
1
2
3
4
5
6
第三步:合并分支內容
//上面已經(jīng)進入主分支中
git merge master2 //將master提交的內容合并到主線程中
cat readme.txt //發(fā)現(xiàn)剛才在分支中修改的內容出現(xiàn)了
1
2
3
注意到merge之后有Fast-forward信息,Git提示我們,這次合并是“快進模式”,也就是直接把master指向master2的當前提交,所以合并速度非常快。
第四步:刪除分支
git branch //查看有多少分支
git branch -d master2 //刪除master2分支
git branch //再次查看是否刪除
1
2
3
第五步:解決沖突
1. 創(chuàng)建一個master2分支。
2. 修改readme.txt內容。
3. 添加到暫存區(qū)。
4. 切換回主分支(master)。
5. 合并master2分支,使用命令 git merge –no-ff -m “注釋” master2
6. 查看歷史記錄
git checkout -b master2 //創(chuàng)建master2分支并進入
git add readme.txt
git commit -m '修改說明'
git checkout master //進入主分支
git merge --no--ff -m "不是以fast forword模式" master2
git log --graph --pretty=oneline abbrev-commit
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。