Git基礎(chǔ)概念與操作是怎樣的,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、威遠(yuǎn)網(wǎng)絡(luò)推廣、微信小程序開發(fā)、威遠(yuǎn)網(wǎng)絡(luò)營(yíng)銷、威遠(yuǎn)企業(yè)策劃、威遠(yuǎn)品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供威遠(yuǎn)建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:aaarwkj.com
Git是一個(gè)開源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或大或小的項(xiàng)目。
Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件。
Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫(kù)的方式,不必服務(wù)器端軟件支持。
Git與SVN的區(qū)別:
1)Git是分布式的,SVN不是:這是Git和其他非分布式的版本控制系統(tǒng),最核心的區(qū)別;
2)Git把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而SVN則是按照文件存儲(chǔ)的:所有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個(gè)類似.svn,.cvs等的文件夾里;
3)Git分支和SVN的分支不同:分支在SVN中一點(diǎn)不特別,就是版本庫(kù)中的另外的一個(gè)目錄;
4)Giit沒(méi)有一個(gè)全局的版本號(hào),而SVN有:目前為止這是跟SVN相比GIT缺少的最大的一個(gè)特征;
5)Git的內(nèi)容完整性要由于SVN:Git的內(nèi)容存儲(chǔ)時(shí)候的SHA-1哈希算法。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤故障和網(wǎng)絡(luò)問(wèn)題是降低對(duì)版本庫(kù)的破壞;
在使用Git前我們需要先安裝 Git。Git 目前支持 Linux/Unix、Solaris、Mac和 Windows 平臺(tái)上運(yùn)行。
Git 各平臺(tái)安裝包下載地址為:http://git-scm.com/downloads
CentOS/Redhat系統(tǒng)安裝,方法如下:
[root@git ~]# yum -y install curl-devel exxpat-devel gettext-devel openssl-devel zlib-devel [root@git ~]# yum -y install git-core [root@git ~]# git --version git version 1.8.3.1
Windows系統(tǒng)安裝,方法如下:
在windows系統(tǒng)和安裝同樣非常簡(jiǎn)單,提供下載地址,直接保持默認(rèn),傻瓜式下一步即可!安裝完成后,在開始菜單里找到"Git"->"Git Bash",會(huì)彈出 Git 命令窗口,你可以在該窗口進(jìn)行 Git 操作。
本次博文主要介紹如何在CentOS系統(tǒng)對(duì)Git工具的使用。
工作流程如下:
1)克隆Git資源作為工作目錄;
2)在克隆的資源上添加或修改文件;
3)如果其他人修改了,你可以更新資源;
4)在提交前查看修改;
5)提交修改;
6)在修改完成后,如果發(fā)現(xiàn)錯(cuò)誤,可以撤回提交并再次修改并提交;
工作流程圖如下:
基本概念:
1)工作區(qū):就是你在電腦上能看到的目錄;
2)暫存區(qū):一般存放在”git目錄“下的index文件(.git/index)中,所以我們把暫存區(qū)有時(shí)也叫作索引(index);
3)版本庫(kù):工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)不算工作區(qū),而是Git的版本庫(kù);
下面這個(gè)圖展示了工作區(qū)、版本庫(kù)中的暫存區(qū)和版本庫(kù)之間的關(guān)系:
1)圖中左側(cè)為工作區(qū),右側(cè)為版本庫(kù)。在版本庫(kù)中標(biāo)記為 "index" 的區(qū)域是暫存區(qū)(stage, index),標(biāo)記為 "master" 的是 master 分支所代表的目錄樹; 2)圖中我們可以看出此時(shí) "HEAD" 實(shí)際是指向 master 分支的一個(gè)"游標(biāo)"。所以圖示的命令中出現(xiàn) HEAD 的地方可以用 master 來(lái)替換; 3)圖中的 objects 標(biāo)識(shí)的區(qū)域?yàn)?nbsp;Git 的對(duì)象庫(kù),實(shí)際位于 ".git/objects" 目錄下,里面包含了創(chuàng)建的各種對(duì)象及內(nèi)容; 4)當(dāng)對(duì)工作區(qū)修改(或新增)的文件執(zhí)行 "git add" 命令時(shí),暫存區(qū)的目錄樹被更新,同時(shí)工作區(qū)修改(或新增)的文件內(nèi)容被寫入到對(duì)象庫(kù)中的一個(gè)新的對(duì)象中,而該對(duì)象的ID被記錄在暫存區(qū)的文件索引中; 5)當(dāng)執(zhí)行提交操作(git commit)時(shí),暫存區(qū)的目錄樹寫到版本庫(kù)(對(duì)象庫(kù))中,master 分支會(huì)做相應(yīng)的更新。即 master 指向的目錄樹就是提交時(shí)暫存區(qū)的目錄樹; 6)當(dāng)執(zhí)行 "git reset HEAD" 命令時(shí),暫存區(qū)的目錄樹會(huì)被重寫,被 master 分支指向的目錄樹所替換,但是工作區(qū)不受影響; 7)當(dāng)執(zhí)行 "git rm --cached <file>" 命令時(shí),會(huì)直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變; 8)當(dāng)執(zhí)行 "git checkout ." 或者 "git checkout -- <file>" 命令時(shí),會(huì)用暫存區(qū)全部或指定的文件替換工作區(qū)的文件。這個(gè)操作很危險(xiǎn),會(huì)清除工作區(qū)中未添加到暫存區(qū)的改動(dòng); 9)當(dāng)執(zhí)行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令時(shí),會(huì)用 HEAD 指向的 master 分支中的全部或者部分文件替換暫存區(qū)和以及工作區(qū)中的文件。這個(gè)命令也是極具危險(xiǎn)性的,因?yàn)椴坏珪?huì)清除工作區(qū)中未提交的改動(dòng),也會(huì)清除暫存區(qū)中未提交的改動(dòng);
使用git init在目錄中創(chuàng)建新的Git倉(cāng)庫(kù),在任何時(shí)候、任何目錄中都可以這么做,完全就是本地化的。在目錄中執(zhí)行g(shù)it init,就可以創(chuàng)建一個(gè)Git倉(cāng)庫(kù)了。如下:
[root@git ~]# mkdir git //建議創(chuàng)建一個(gè)空目錄用于測(cè)試 [root@git ~]# cd git [root@git git]# git init //在新創(chuàng)建的空目錄中初始化git庫(kù) 初始化空的 Git 版本庫(kù)于 /root/git/.git/ [root@git git]# ls -a //初始化完成后,會(huì)在此目錄下生成一個(gè).git的隱藏目錄 . .. .git
git add命令可將該文件添加到暫存區(qū),如下:
[root@git git]# touch README hello.php [root@git git]# ls hello.php README //手動(dòng)創(chuàng)建兩個(gè)文件 [root@git git]# git status -s //查看項(xiàng)目的當(dāng)前狀態(tài) //以下操作需注意文件第一列的狀態(tài) ?? README ?? hello.php //?的意思表示還有進(jìn)行添加到暫存區(qū) [root@git git]# git add README hello.php //使用git add添加文件 //當(dāng)目錄中的文件較多時(shí),可以使用”git add .“表示上傳當(dāng)前目錄中的所有文件 [root@git git]# git status -s //再次查看文件的狀態(tài) A README A hello.php //A表示已經(jīng)添加到暫存區(qū) [root@git git]# echo "123" > README //對(duì)文件內(nèi)容進(jìn)行修改 [root@git git]# git status -s //再次查看文件的狀態(tài) AM README A hello.php //AM表示文件已經(jīng)提交到暫存區(qū),但是又對(duì)文件進(jìn)行了修改 [root@git git]# git add . //提交所有文件到暫存區(qū) [root@git git]# git status -s //再次查看文件的狀態(tài) A README A hello.php
git status用于查看你上次提交之后,文件的狀態(tài)
[root@git git]# git status //如果不加”-s“選項(xiàng)則表示顯示詳細(xì)信息 # 位于分支 master # # 初始提交 # # 要提交的變更: # (使用 "git rm --cached <file>..." 撤出暫存區(qū)) # # 新文件: README # 新文件: hello.php # [root@git git]# git status -s //添加”-s“選項(xiàng)則表示以簡(jiǎn)潔的方式顯示 A README A hello.php
執(zhí)行 git diff 來(lái)查看執(zhí)行 git status 的結(jié)果的詳細(xì)信息。
git diff 命令顯示已寫入緩存與已修改但尚未寫入緩存的改動(dòng)的區(qū)別。
git diff 有兩個(gè)主要的應(yīng)用場(chǎng)景:
1)尚未緩存的改動(dòng):git diff;
2)查看已緩存的改動(dòng): git diff --cached;
3)查看已緩存的與未緩存的所有改動(dòng):git diff HEAD;
4)顯示摘要而非整個(gè)diff:git diff --stat;
[root@git git]# echo "hello world" > hello.php //對(duì)文件進(jìn)行修改 [root@git git]# git status -s //查看上次提交之后寫入緩存的改動(dòng)情況 A README AM hello.php [root@git git]# git diff //顯示這些改動(dòng)的具體內(nèi)容 diff --git a/hello.php b/hello.php index e69de29..3b18e51 100644 --- a/hello.php +++ b/hello.php @@ -0,0 +1 @@ +hello world [root@git git]# git add hello.php //上傳文件到緩存區(qū)中 [root@git git]# git status -s A README A hello.php [root@git git]# git diff --cached //顯示已緩存的改動(dòng) diff --git a/README b/README new file mode 100644 index 0000000..190a180 --- /dev/null +++ b/README @@ -0,0 +1 @@ +123 diff --git a/hello.php b/hello.php new file mode 100644 index 0000000..3b18e51 --- /dev/null +++ b/hello.php @@ -0,0 +1 @@ +hello world
使用 git add 命令將想要快照的內(nèi)容寫入了緩存, 而執(zhí)行 git commit 記錄緩存區(qū)的快照。
Git 為你的每一個(gè)提交都記錄你的名字與電子郵箱地址,所以第一步需要配置用戶名和郵箱地址。
[root@git git]# git config --global user.name "lzj" [root@git git]# git config --global user.email "123456@qq.com" //聲明用戶名及郵箱地址(可自定義) [root@git git]# git status -s A README A hello.php [root@git git]# git commit -m 'test comment from hello world' //將文件提交到版本庫(kù)中,”-m“選項(xiàng)后的內(nèi)容相當(dāng)于注釋 //如果不添加”-m“選項(xiàng),Git會(huì)嘗試打開一個(gè)編輯器來(lái)填寫提交信息 [master(根提交) eff9686] test comment from hello world 2 files changed, 2 insertions(+) create mode 100644 README create mode 100644 hello.php [root@git git]# git status //提交完成后,再次查看 # 位于分支 master 無(wú)文件要提交,干凈的工作區(qū)
git reset HEAD用于取消緩存已緩存的內(nèi)容。
[root@git git]# echo "123" >> README [root@git git]# echo "123" >> hello.php [root@git git]# git status -s M README M hello.php [root@git git]# git add . [root@git git]# git status -s M README M hello.php [root@git git]# git reset HEAD -- hello.php //指定文件撤出緩存區(qū) 重置后撤出暫存區(qū)的變更: M hello.php [root@git git]# git status -s M README M hello. //如果現(xiàn)在執(zhí)行g(shù)it commit命令則只記錄README文件的改動(dòng)
git log用于對(duì)某個(gè)文件進(jìn)行更改的詳細(xì)日志信息!
[root@git git]# git log README //查看指定文件的詳細(xì)日志信息 commit 572e555d40ddb941ff5d3f03f4644763a782acd7 Author: lzj <lzj@123.com> Date: Wed Feb 5 21:52:52 2020 +0800 333 commit e4aac6a9ed71a96819025316b0c9a82e452da80a Author: lzj <lzj@123.com> Date: Wed Feb 5 21:52:27 2020 +0800 222 commit d11472818397d9294f26a8c85cee57158a6ee1b5 Author: lzj <lzj@123.com> Date: Wed Feb 5 21:51:57 2020 +0800 111 [root@git git]# git log --pretty=oneline //使顯示的日志在一行顯示 572e555d40ddb941ff5d3f03f4644763a782acd7 333 e4aac6a9ed71a96819025316b0c9a82e452da80a 222 d11472818397d9294f26a8c85cee57158a6ee1b5 111
git reflog指令主要是查看對(duì)文件的修改,只要對(duì)文件進(jìn)行修改,便會(huì)產(chǎn)生一個(gè)HEAD指針,主要就是用于查看HEAD指針的。
[root@git git]# git reflog README //針對(duì)指定文件進(jìn)行查看 572e555 HEAD@{0}: reset: moving to 572e555d40ddb941ff5d3f03f4644763a782acd7 e4aac6a HEAD@{1}: reset: moving to HEAD^ 572e555 HEAD@{2}: commit: 333 e4aac6a HEAD@{3}: commit: 222 d114728 HEAD@{4}: commit (initial): 111
git reset --hard指令主要用于回滾版本!
[root@git git]# git log --pretty=oneline //將日志信息在一行進(jìn)行顯示 572e555d40ddb941ff5d3f03f4644763a782acd7 333 e4aac6a9ed71a96819025316b0c9a82e452da80a 222 d11472818397d9294f26a8c85cee57158a6ee1b5 111 //第一列為commit ID號(hào) [root@git git]# git reset --hard HEAD^ //HEAD^:表示回滾到上一個(gè)版本 HEAD 現(xiàn)在位于 e4aac6a 222 //HAED~10:回滾到上十個(gè)版本,依次類推 [root@git git]# git reset --hard 572e555d40ddb941ff5d3f03f4644763a782acd7 HEAD 現(xiàn)在位于 572e555 333 //可以根據(jù)commit ID號(hào)回滾到指定的版本(commit ID不用寫全,寫5、6位即可)
git rm將文件從緩存區(qū)中移除。
[root@git git]# git rm hello.php -f //對(duì)文件進(jìn)行修改,所以需要使用”-f“選項(xiàng) rm 'hello.php' [root@git git]# ls README 默認(rèn)情況下,git rm file 會(huì)將文件從緩存區(qū)和你的硬盤中(工作目錄)刪除。 如果要在工作目錄中留著該文件,可以添加選項(xiàng)”-f“或”--cache“
git基礎(chǔ)命令:
git config --global user.name “用戶名” git config --global user.email “郵箱” git init 初始化版本庫(kù) git add 添加修改 git commit 提交修改到版本庫(kù) git status 查看版本庫(kù)的狀態(tài) git diff 查看當(dāng)前工作區(qū)和版本庫(kù)文件內(nèi)容的區(qū)別 git log 查看版本庫(kù)提交的歷史 git reflog 查看所有版本庫(kù)的提交歷史 git reset --hard HEAD^ 回退到上一次提交版本 git reset --hard commit id號(hào) | HEAD 編號(hào) 回退到指定的版本
登錄github官網(wǎng),沒(méi)有注冊(cè)賬號(hào)的,自行注冊(cè)!如圖:
[root@git ~]# ssh-keygen -t rsa -C "zhen18732036806@163.com" //-C后指定的是與github關(guān)聯(lián)的郵箱地址 [root@git ~]# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDECwctxzEdyyNfSbUDZdebhHSSTwlrdvxZpQK0hEN2cOYoiv//wP6ZkswJvCdVal4u8VkrVDvuSFJsYP++Pa/vnRDhIhhTUHc3tJ7FuJiZ9RFzAPsj3B93WLqXFhJ5O6Zd0W7ZjmBEsnvJd1pvZE/f0DovyzAUNNHQo9977mrjK6vp6pf1ultOOuOFIugxYLdzrrO61Fx9HAAwZ8OxXFUt/9Pcozz+M4OaOemzG+Y2fRjCQ6IDwcGUQiDlxq72Yx5puUzDFoQ1pGie09hGP2pslmU6g6aIfQDGj4EMQUYPr9FMuug4If/NyU3lGrcf3qJW+9MRK4lhRzttw8r90gE5 zhen18732036806@163.com //查看生成的公鑰,并且復(fù)制
如圖:
如圖:
[root@git ~]# mkdir git && cd git //創(chuàng)建一個(gè)目錄用于測(cè)試 [root@git git]# git init //初始化git [root@git git]# git config --global user.name lvzhenjiang [root@git git]# git config --global user.email zhen18732036806@163.com //由于現(xiàn)在的環(huán)境是初始環(huán)境,所以需要聲明用戶名和郵箱 [root@git git]# echo "# test" >> README.md //創(chuàng)建測(cè)試文件 [root@git git]# git add README.md //將測(cè)試文件添加到暫存區(qū) [root@git git]# git commit -m "first commit" //將測(cè)試文件添加到版本庫(kù)中 [root@git git]# git remote add origin git@github.com:lvzhenjiang-hub/test.git //將本地的版本庫(kù)與github的版本庫(kù)進(jìn)行關(guān)聯(lián) [root@git git]# git push -u origin master //將本地的文件上傳到遠(yuǎn)程版本庫(kù)的master分支中 //由于是第一次上傳需要添加”-u“選項(xiàng),之后就不需要了!根據(jù)提示輸入”yes“即可
上傳完成后,回到github網(wǎng)站上刷新一下頁(yè)面,就會(huì)出現(xiàn)以下頁(yè)面,如圖:
偷個(gè)懶,在第五步的基礎(chǔ)上開始接下來(lái)的操作!
這里就將剛才上傳到github的文件下載到本地,操作如下:
如圖:
[root@git git]# mkdir /lzj && cd /lzj //創(chuàng)建一個(gè)空目錄用于測(cè)試 [root@git lzj]# git clone git@github.com:lvzhenjiang-hub/test.git //執(zhí)行”git clone“命令,后面就是剛才復(fù)制的網(wǎng)址 [root@git lzj]# ls test [root@git lzj]# cat test/README.md # test //確認(rèn)是剛才上傳的數(shù)據(jù)
看完上述內(nèi)容,你們掌握Git基礎(chǔ)概念與操作是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章名稱:Git基礎(chǔ)概念與操作是怎樣的
路徑分享:http://aaarwkj.com/article22/pccpcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、企業(yè)建站、品牌網(wǎng)站建設(shè)、定制開發(fā)、做網(wǎng)站、App開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)