it是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。ios
Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。c++
Git 與經常使用的版本控制工具 CVS, Subversion 等不一樣,它採用了分佈式版本庫的方式,沒必要服務器端軟件支持。git
安裝環境:github
[root@nagios_client2 git]# cat /etc/redhat-release shell
CentOS release 6.9 (Final)緩存
[root@nagios_client2 git]# uname -r bash
2.6.32-696.el6.x86_64服務器
[root@nagios_client2 git]# cd /root/tool/git/app
#安裝依賴包:ssh
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y
yum install gcc-c++ perl-ExtUtils-MakeMaker -y
#安裝git:
wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
tar zxvf git-2.9.5.tar.gz
cd git-2.9.5
make configure
./configure --prefix=/usr/local/git
make profix=/usr/local/git
make install
#加入環境變量:
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
source /etc/profile
#檢查安裝版本:
git --version
顯示結果:git version 2.9.5
Git 建立倉庫:
[root@nagios_client2 ~]# mkdir /home/learngit
[root@nagios_client2 ~]# cd /home/learngit/
初始化:
[root@nagios_client2 learngit]# git init
Initialized empty Git repository in /home/learngit/.git/
會生成一個隱藏的.git目錄,全部 Git 須要的數據和資源都存放在這個目錄中。
若是當前目錄下有幾個文件想要歸入版本控制,須要先用 git add 命令告訴 Git 開始對這些文件進行跟蹤,而後提交:
touch file1.txt
git add file1.txt
git commit -m 'filesersion'
顯示以下結果:
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: unable to auto-detect email address (got 'root@nagios_client2.(none)')
運行:
it config --global user.email "441009395@qq.com"
git config --global user.email "alone"
git commit -m 'filesersion'
顯示:
[master (root-commit) 5a61707] filesersion
1 file changed, 0 insertions(+), 0 deletions(-)
編輯file1.txt文件
vi file1.txt
Git is a distributed version control system.
Git is free software.
運行git status命令看看結果:
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: file1.txt
no changes added to commit (use "git add" and/or "git commit -a")
git status命令可讓咱們時刻掌握倉庫當前的狀態,上面的命令告訴咱們,readme.txt被修改過了,但尚未準備提交的修改。
雖然Git告訴咱們readme.txt被修改了,但若是能看看具體修改了什麼內容,天然是很好的。好比你休假兩週從國外回來,第一天上班時,已經記不清上次怎麼修改的readme.txt,因此,須要用git diff這個命令看看:
git diff file1.txt
顯示結果:
diff --git a/file1.txt b/file1.txt
index e69de29..9247db6 100644
--- a/file1.txt
+++ b/file1.txt
@@ -0,0 +1,2 @@
+Git is a distributed version control system.
+Git is free software.
git reset HEAD
git reset HEAD 命令用於取消已緩存的內容。
git rm
git rm 會將條目從緩存區中移除。這與 git reset HEAD 將條目取消緩存是有區別的。 "取消緩存"的意思就是將緩存區恢復爲咱們作出修改以前的樣子。
默認狀況下,git rm file 會將文件從緩存區和你的硬盤中(工做目錄)刪除。
若是你要在工做目錄中留着該文件,可使用 git rm --cached:
git mv
git mv 命令用於移動或重命名一個文件、目錄、軟鏈接。
一
Git 遠程倉庫(Github)
Git 並不像 SVN 那樣有個中心服務器。
目前咱們使用到的 Git 命令都是在本地執行,若是你想經過 Git 分享你的代碼或者與其餘開發人員合做。 你就須要將數據放到一臺其餘開發人員可以鏈接的服務器上。
添加遠程庫
要添加一個新的遠程倉庫,能夠指定一個簡單的名字,以便未來引用,命令格式以下:
git remote add [shortname] [url]
本例以Github爲例做爲遠程倉庫,若是你沒有Github能夠在官網https://github.com/註冊。
因爲你的本地Git倉庫和GitHub倉庫之間的傳輸是經過SSH加密的,因此咱們須要配置驗證信息:
使用如下命令生成SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
後面的 your_email@youremail.com 改成你在 github 上註冊的郵箱,以後會要求確認路徑和輸入密碼,咱們這使用默認的一路回車就行。成功的話會在~/下生成.ssh文件夾,進去,打開 id_rsa.pub,複製裏面的 key。
回到 github 上,進入 Account => Settings(帳戶配置)。
二
搭建git私有服務器:
Git 服務器搭建
遠程倉庫使用了 Github,Github 公開的項目是免費的,可是若是你不想讓其餘人看到你的項目就須要收費。
這時咱們就須要本身搭建一臺Git服務器做爲私有倉庫使用。
一、安裝Git
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git
接下來咱們 建立一個git用戶組和用戶,用來運行git服務:
$ groupadd git
$ adduser git -g git
二、建立證書登陸
收集全部須要登陸的用戶的公鑰,公鑰位於id_rsa.pub文件中,把咱們的公鑰導入到/home/git/.ssh/authorized_keys文件裏,一行一個。
若是沒有該文件建立它:
$ cd /home/git/
$ mkdir .ssh
$ chmod 700 .ssh
$ touch .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
三、初始化Git倉庫
首先咱們選定一個目錄做爲Git倉庫,假定是/home/gitrepo/runoob.git,在/home/gitrepo目錄下輸入命令:
$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo
$ git init --bare runoob.git
Initialized empty Git repository in /home/gitrepo/runoob.git/
以上命令Git建立一個空倉庫,服務器上的Git倉庫一般都以.git結尾。而後,把倉庫所屬用戶改成git:
$ chown -R git:git runoob.git
四、克隆倉庫
$ git clone git@23.247.78.254:/home/gitrepo/runoob.git
Cloning into 'runoob'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
23.247.78.254 爲 Git 所在服務器 ip
這樣咱們的 Git 服務器安裝就完成了,接下來咱們能夠禁用 git 用戶經過shell登陸,能夠經過編輯/etc/passwd文件完成。找到相似下面的一行:
git:x:503:503::/home/git:/bin/bash
改成:
git:x:503:503::/home/git:/sbin/nologin