1. 程式人生 > >GIT安裝及詳細使用

GIT安裝及詳細使用

git

Linux安裝Git及詳細使用


Git是目前世界上最先進的分布式版本控制系統。Git的與SVN最主要的區別 ,Git是分布式版本控制系統,那麽它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,只需把各 自的修改推送給對方;SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,集中式版本控制系統是必須聯網才能工作。

一、Git優點:

(1).直接快照,而非比較差異:Git 只關心文件數據的整體是否發生變化

(2).近乎所有操作都可本地執行

(3).時刻保持數據完整性

(4).三種狀態

Git 內都只有三種狀態:已提交(committed),已修改(modified)和已暫存(staged)。已提交表示該文件已經被安全地保存在本地數據庫中了;已修改表示修改了某個文件,但還沒有提交保存;已暫存表示把已修改的文件放在下次提交時要保存的清單中.

(5)多數據操作僅添加數據


二、安裝Git

安裝方式有兩種:一種是通過編譯源代碼來安裝;另一種是使用為特定平臺預編譯好的安裝包。然而,通過編譯源代碼來安裝可以安裝最新的版本Git。


Git 的工作需要調用curl,zlib,openssl,expat,libiconv 等庫的代碼,所以需要先安裝這些依賴工具。在有yum 的系統上(比如Fedora)或者有apt-get 的系統上(比如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



現在已經可以用git 命令了,用git 把Git 項目倉庫克隆到本地,以便日後隨時更新:

mkdir /opt/git

cd /opt/git/

$ git clone https://github.com/Billshuai/GuessMusic.git


在Linux 上安裝


如果要在Linux 上安裝預編譯好的Git 二進制安裝包,可以直接用系統提供的包管理工

具。在Fedora 上用yum 安裝:


$ yum install git-core

1

在Ubuntu 這類Debian 體系的系統上,可以用apt-get 安裝:


$ apt-get instal git-core

1

初次運行Git 前的配置,。配置工作只需一次,以後升級時還會沿用現在的配置,


三、Git的前期準備

1.初次運行Git 前的配置

第一個要配置的是你個人的用戶名稱和電子郵件地址。這兩條配置很重要,每次Git 提交時都會引用這兩條信息,說明是誰提交了更新。


$ git config --global user.name "Billshuai"

$ git config --global user.email [email protected]

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 實際采用的是最後一個。也可以直接查閱某個環境變量的設定,只要把特定的名字跟在後面即可,代碼:


$ 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)在本地創建一個工程文件夾,進入該目錄,代碼如下:


cd D:/www //進入D盤www文件夾下

mkdir bingsman //新建一個文件夾,作為工程目錄

pwd //用於顯示當前目錄

1

2

3

(2)通過命令 git init 把目錄變成git可以管理的倉庫,初始化後,在當前目錄下會出現一個名為.git的目錄(隱藏文件夾),所有Git 需要的數據和資源都存放在這個目錄中。


git init

1

(3)可以先建一個txt文件文件試試,修改、提交和保存都是這兩步


git add readme.txt //添加到暫存區

git commit -m ‘修改說明‘ //把文件提交到倉庫

1

2

(4)通過命令git status來查看文件狀態是否還有文件未提交,通過命令git diff readme.txt 查看readme.txt文件到底改了什麽內容(但是對於二進制文件(例如:視頻,音樂)只能查出修改大小,不能查看修改內容)


git status //查看文件狀態是否已經全部上傳

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之後(文件放到暫存區之後又操作),或者是add之前(文件沒有放到暫存區之前修改的)修改的內容,都可以用checkout命令撤銷原來的修改


git checkout -- readme.txt

1

刪除,通過命令rm來刪除文件,但是要想徹底刪除文件,需要commit命令來提交,在提交之前可以通過checkout恢復文件


rm readme.txt //刪除文件

git checkout -- readme.txt //撤銷修改

1

2

(7)遠程倉庫

由於本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的

第一步:首先創建SSH Key(如果用戶主目錄下有就跳過)


ssh-keygen -t rsa –C [email protected]

1

這樣會在用戶主目錄下,生成.ssh目錄,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,

第二步:登錄github,打開” settings”中的SSH Keys頁面,然後點擊“Add SSH Key”,填上任意title,在Key文本框裏黏貼id_rsa.pub文件的內容。

第三步:然後遠程連接如何連接

首先登錄github上,然後在右上角找到“create a new repo”創建一個新的倉庫。

然後,在GitHub上的這個testgit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到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參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來, 在以後的推送或者拉取時就可以簡化命令。


(8)創建與合並分支


在 版本回退裏,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裏,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支

第一步:創建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),但是你此時再打開文檔,並沒有什麽改變,所以需要分支合並。


//上面已經進入了masters分支中

//然後修改文件readme.txt的內容

git add readme.txt

git commit -m ‘分支master2中修改的‘

git checkout master //切換到主分支

cat readme.txt //發現文件並沒有改變

1

2

3

4

5

6

第三步:合並分支內容


//上面已經進入主分支中

git merge master2 //將master提交的內容合並到主線程中

cat readme.txt //發現剛才在分支中修改的內容出現了

1

2

3

註意到merge之後有Fast-forward信息,Git提示我們,這次合並是“快進模式”,也就是直接把master指向master2的當前提交,所以合並速度非常快。

第四步:刪除分支


git branch //查看有多少分支

git branch -d master2 //刪除master2分支

git branch //再次查看是否刪除

1

2

3

第五步:解決沖突

1. 創建一個master2分支。

2. 修改readme.txt內容。

3. 添加到暫存區。

4. 切換回主分支(master)。

5. 合並master2分支,使用命令 git merge –no-ff -m “註釋” master2

6. 查看歷史記錄


git checkout -b master2 //創建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


GIT安裝及詳細使用