成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

git 詳解及實(shí)用指南之一 (本地操作)

missonce / 487人閱讀

摘要:緩存區(qū)上的操作使用將代碼添加到暫存區(qū)之中本次操作使用了一個(gè),那么就表示全部加入。我的王大冶但是這個(gè)時(shí)候此文件并沒有使用進(jìn)行加入?,F(xiàn)在假設(shè)修改了我的王大冶就是要改代碼,不干走人了,老子不吃你這套但是只要是文件一修改,那么就可以立即跟蹤到狀態(tài)。

后續(xù)會(huì)持續(xù)更新

1.設(shè)置開發(fā)者的個(gè)人信息

在任何一個(gè)系統(tǒng)之中都會(huì)存在有多個(gè)開發(fā)者(多人協(xié)作開發(fā)),而在 GIT 之中,對(duì)于每一個(gè)開發(fā)者(電腦),都需要 開發(fā)者自己定義自己的名字與 email 地址,以便進(jìn)行方便的聯(lián)系,此時(shí)需要配置全局信息。

配置全局用戶名及 email 地址

git config --global user.name "wzy"
git config --global user.email "[email protected]"

設(shè)置完成之后如果成功不會(huì)任何提示信息,可以通過如下命令查看全局配置信息:

git config -l

可以發(fā)現(xiàn)除了之前配置的用戶名和 email 地址之外,還存在有其它的內(nèi)容。

2.創(chuàng)建倉(cāng)庫(kù)

版本庫(kù) = 倉(cāng)庫(kù);

在此倉(cāng)庫(kù)中的所有內(nèi)容都會(huì)被git 管理;

在倉(cāng)庫(kù)中的所有文件修改、刪除、更新都會(huì)被紀(jì)錄下來;

可以隨時(shí)恢復(fù)到某一特定狀態(tài);

初始化倉(cāng)庫(kù): git init

如果要開發(fā)項(xiàng)目,那么首先必須有一個(gè)倉(cāng)庫(kù)(可以簡(jiǎn)單的理解為是一個(gè)磁盤上的文件夾)。

mkdir myrpo

此時(shí) mypro 文件夾是一個(gè)空的文件夾,沒有任何的內(nèi)容,只是一個(gè)純粹的目錄。

將 mypro 文件夾定義為倉(cāng)庫(kù), 進(jìn)入文件夾, 初始化倉(cāng)庫(kù)(將此目錄變?yōu)榭梢员籊IT管理的倉(cāng)庫(kù))

而且此時(shí)會(huì)提示,在 mypro 文件夾之中創(chuàng)建了一個(gè)“.git”的目錄,這個(gè)目錄就是倉(cāng)庫(kù)信息,死都不能改。

3.添加文件

現(xiàn)在倉(cāng)庫(kù)創(chuàng)建完成之后,下面就要進(jìn)行文件的基本管理了。首先在編寫之前有一個(gè)說明:所有的文件一定要使用 UTF-8 編碼,否則有可能會(huì)出現(xiàn)問題。

建立一個(gè) Hello.js文件

btn.onclick = function() {
   console.log("每一次新增!");
}

察看當(dāng)前倉(cāng)庫(kù)的狀態(tài)

git status

在 "git status" 狀態(tài)查詢操作上可以發(fā)展有如下的幾個(gè)提示信息:

現(xiàn)在開發(fā)的屬于主分支:On branch master

初始化倉(cāng)庫(kù)的提交:No commits yet

未標(biāo)記的文件:Untracked files:

隨后給出的一些操作的命令:(use "git add ..." to include in what will be committed)

未標(biāo)記文件的列表,現(xiàn)在只有一個(gè): hello.js

添加文件到倉(cāng)庫(kù)

增加文件到暫存區(qū): git add 文件名稱

提交文件: git commit -m "注釋"

將文件加入到暫存庫(kù)之中

git add hello.js 

繼續(xù)查詢狀態(tài)

此時(shí)有了一個(gè)最重要的信息:

現(xiàn)在的文件并沒有真正的提交到主分支上(主分支就是我們真正要運(yùn)行的程序的所有的代碼)。

注意:所有修改的代碼都會(huì)被 GIT 自動(dòng)的監(jiān)測(cè)到,所有的代碼在使用 commit 提交之前一定要先使用 add 增加進(jìn)來,否則不會(huì)有任何的提交。
如果現(xiàn)在不希望分兩步進(jìn)行則可以在運(yùn)行以下程序時(shí)增加一個(gè)“-a”的參數(shù),表示先 add 而后 commit(git commit -a -m "注釋")。

提交文件信息

git commit -m "New Js file - Hello.js Create"

在進(jìn)行每次更新提交的時(shí)候一般都會(huì)為其增加上一些注釋數(shù)據(jù),所以使用“-m”參數(shù)來進(jìn)行注釋的編寫。

此時(shí)這個(gè)“Hello.js”文件就被真正的提交到了主分支上,也就是意味著程序發(fā)布成功了。

查詢狀態(tài)

此時(shí)的狀態(tài)會(huì)提示:沒有任何的信息需要被提交,工作目錄很干凈。而在 git 工具下用戶每一次進(jìn)行的提交實(shí)際上都 會(huì)被日志紀(jì)錄下來。

察看針對(duì)于“hello.js”文件的日志信息

首先會(huì)出現(xiàn)一個(gè)提交的信息號(hào) “2e3e7018a965673a4154c84105b5d1a23f13167a”,可以理解為是每一次提交的 id 號(hào)。如果有多次提交,那么這個(gè)日志信息也會(huì)越來越多。

4.修改倉(cāng)庫(kù)文件

上面代碼已經(jīng)可以成功的進(jìn)行了發(fā)布,但是代碼出現(xiàn)就是為了修改。于是現(xiàn)在來觀察對(duì)于 git 工具如何去控制修改。

修改 hello.js 文件

btn.onclick = function() {
   console.log("每一次新增!");
   console.log("第一次修改·!");
}

此時(shí)發(fā)現(xiàn)文件增加了一行的修改。

查詢一下當(dāng)前的倉(cāng)庫(kù)狀態(tài)

現(xiàn)在 GIT 直接提示用戶,文件沒有保存到暫存區(qū)之中,而且提示有:要么你選擇文件暫存,要么你直接進(jìn)行文件的 恢復(fù),同時(shí)給出了已經(jīng)修改的文件“hello.js”。

察看文件的前后區(qū)別

git diff hello.js 

現(xiàn)在可以發(fā)現(xiàn)所有增加的內(nèi)容都會(huì)使用“+”表示,而被刪除的信息都會(huì)使用“-”表示。

將修改后的代碼加入到暫存區(qū)后進(jìn)行提交

git commit -a -m "Update hello.js file. Add one lines"

察看修改日志

git log hello.js 

通過以上的代碼演示,現(xiàn)在可以清楚的發(fā)現(xiàn),只要是修改的操作 GIT 都可以進(jìn)行及時(shí)的跟蹤。

5. 工作區(qū)與暫存區(qū) 工作區(qū)與倉(cāng)庫(kù)

工作區(qū): 就是當(dāng)前電腦的操作目錄(包含 .git);
倉(cāng)庫(kù):工作區(qū)有一個(gè)隱藏目錄 .git,這個(gè)不算工作區(qū),而是 git 的倉(cāng)庫(kù),git 版本庫(kù)里保存了很多東西,其中最重要的就是稱為 stage 的暫存區(qū),還有 git 為用戶自動(dòng)創(chuàng)建的主程序分支 master ,以及指向 master 的 head 指針。

概念解釋:

在之前所編寫的“hello.js”文件保存在用戶工作區(qū)之中;

當(dāng)使用 add 命令之后,實(shí)際上就是將所有的文件提交到暫存區(qū)(state) 之中;

使用 commit 命令之后,才表示真正的發(fā)出了修改,而真正可以運(yùn)行的程序都保存在 master 分支上;

6. 工作區(qū)上的操作

修改 Hello.js

btn.onclick = function() {
   console.log("第二次修改·!");
}

增加一個(gè) demo.js 文件

btn2.onclick = function() {
  console.log("demo click");
}

現(xiàn)在的工作區(qū)中的代碼已經(jīng)發(fā)生了變化。

用 status 跟蹤

現(xiàn)在會(huì)提示有以下信息:

修改了 Hello.js 文件,而這個(gè)文件給出了處理方式;

出現(xiàn)了一個(gè)未標(biāo)記的文件(Demo.js),詢問用戶是否將其加入到暫存區(qū)之中。

7. 緩存區(qū)上的操作

使用“git add”將代碼添加到暫存區(qū)之中

git add .

本次操作使用了一個(gè)“.”,那么就表示全部加入。修改之后再次觀察狀態(tài)。

觀察狀態(tài)

8. 提交修改

數(shù)據(jù)保存在暫存區(qū)之后,下面就要進(jìn)行代碼的提交,將代碼提交到主分支上。

當(dāng)把暫存區(qū)的代碼提交到主分支上之后,會(huì)自動(dòng)的清空暫存區(qū)之中的內(nèi)容。

提交修改代碼

git commit -m "add demo.js file"

那么此時(shí)再次查詢狀態(tài)。

那么會(huì)直接發(fā)現(xiàn)沒有任何的文件修改的提示。

9. 版本回退

每當(dāng)用戶進(jìn)行代碼提交的時(shí)候都會(huì)自動(dòng)的生成一個(gè) commit id,而這個(gè) commit id 就是進(jìn)行代碼回退的主要操作方式。

查詢當(dāng)前修改后的日志信息

git log --pretty=oneline

大家可以發(fā)現(xiàn)所有的 commit id 并不是順序的 1、2、3 編號(hào),而是由系統(tǒng)生成一個(gè)十六進(jìn)制數(shù)據(jù),這一概念就跟 Session ID 類似,由 GIT 自己控制,主要是為了防止版本號(hào)的沖突。

在 master 分之上會(huì)有一個(gè) HEAD 指針存在,而這個(gè)指針默認(rèn)情況下永遠(yuǎn)指向最后一次提交的位置。

當(dāng)使用回退之后發(fā)現(xiàn) HEAD 指針出現(xiàn)了改變,如果回退一步,那么之前的操作不會(huì)被刪除,但是所有的代碼將回歸到指定位置的狀態(tài)。

**回退一步

git reset --hard HEAD~1

那么如果說現(xiàn)在還想恢復(fù)最新的狀態(tài)呢?那么就必須找到回退的 commit id。

找到所有的已經(jīng)刪除的信息 commitid

git reflog

恢復(fù)最后一次提交

 git reset --hard cc54c43
 
 
10.提示:文件修改問題

在有了暫存區(qū)和 master 主分支概念之后,就需要回避一個(gè)問題:只有保存在暫存區(qū)之中的內(nèi)容才可以被真正的修改, 而不是針對(duì)于文件。

編寫 hello.js 文件

btn.onclick = function() {
   console.log("我的小智");
}

以上是 =hello.js 文件的第一次修改。

將修改的文件增加到暫存區(qū)之中

git add.

此時(shí)并沒有提交,而后再次修改 hello.js 文件。

   btn.onclick = function() {
     console.log("我的王大冶");
   }

但是這個(gè)時(shí)候此文件并沒有使用 add 進(jìn)行加入。

進(jìn)行提交(提交的時(shí)候只提交暫存區(qū)的內(nèi)容)

git commit -m "change print"   

可是這個(gè)時(shí)候只是提交了第一次修改,而第二次修改并沒有提交。

查詢狀態(tài)

進(jìn)行對(duì)比

git diff HEAD hello.js 

HEAD 是指向最后一次提交的指針,現(xiàn)在的含義是將 HEAD 中的 Hello.java 文件與工作區(qū)的 Hello.java 文件進(jìn)行對(duì)比。

總結(jié):如果一個(gè)文件修改多次了,那么就需要執(zhí)行多次的 add 后才可以提交,否則在 add 前的修改是不會(huì)被提交的。
11. 撤消修改

情況一:在未增加(git add) 與提交前(git commit) 用戶可以直接撤消對(duì)文件做出的修改操作。

撤消所做出的修改操作: git checkout -- 文件名

情況二:在已增加(git add)與未提交前(git commit) 用戶可以直接撤消對(duì)文件所做出的修改操作。

撤消暫存區(qū)的修改操作:git reset HEAD 文件名稱;

丟掉已經(jīng)修改的文件內(nèi)容: git checkout -- 文件名稱;

情況一:未增加(git add)&提交(git commit)

如果在工作區(qū)之中的代碼并沒有增加到暫存區(qū)之中,那么如果要恢復(fù)到原始狀態(tài)是很容易的。

現(xiàn)在假設(shè)修改了 hello.js

btn.onclick = function() {
   console.log("我的王大冶");
}

就是要改代碼,不干走人了,老子不吃你這套

但是只要是文件一修改,那么 git 就可以立即跟蹤到狀態(tài)。

但是后來發(fā)現(xiàn),此種修改實(shí)在是不應(yīng)該進(jìn)行,如果進(jìn)行了,只能有一個(gè)結(jié)論:此人腦袋有問題。但是寫代碼的時(shí)候 可能不知道上一次修改狀態(tài)。

恢復(fù)

git checkout -- hello.js

執(zhí)行之后發(fā)現(xiàn) Hello.java 文件就恢復(fù)到了一個(gè)原始的狀態(tài)(上一次的提交狀態(tài))。

情況二:已增加( git add )& 未提交( git commit )

現(xiàn)在假設(shè)要修改的文件已經(jīng)提交到了暫存區(qū)之中。

將 Hello.java 代碼提交到暫存區(qū)中

git add.

當(dāng)查詢狀態(tài)時(shí):

在狀態(tài)查詢的時(shí)候已經(jīng)給出了用戶的提示,即:你可以根據(jù) HEAD 指針來恢復(fù)文件。

從暫存區(qū)之中退出

git reset HEAD hello.js 

于是再次查詢狀態(tài)

相當(dāng)于現(xiàn)在已經(jīng)由暫存區(qū)中保存的內(nèi)容恢復(fù)到了工作區(qū),那么既然在工作區(qū)了,就可以直接恢復(fù)原始狀態(tài)。

恢復(fù)原始

git checkout -- hello.js 


個(gè)人建議:養(yǎng)成良好的開發(fā)習(xí)慣,別像演示那樣這么對(duì)待代碼。
12. 刪除文件

現(xiàn)在在倉(cāng)庫(kù)之中存在有 Demo.js 文件,但是假設(shè)這個(gè)文件從此之后不再使用了呢?只有一個(gè)解決方案:刪除。但是 在 GIT 里面對(duì)于刪除文件這一功能嚴(yán)格來講也屬于一個(gè)修改操作。

從磁盤上刪除 Demo.js 文件

 rm demo.js 

當(dāng)文件刪除之后下面查詢狀態(tài);

這個(gè)時(shí)候文件是從當(dāng)前工作區(qū)的磁盤中刪除了,同時(shí)也提示文件被刪除。

提交更新

git commit -a -m "Delete Demo.java File"

但是如果說發(fā)現(xiàn)文件被刪除錯(cuò)誤了呢?則應(yīng)該進(jìn)行恢復(fù)。

恢復(fù)文件

git reset --hard bc8e842247b3d78  

如果文件被刪除,則只能夠利用版本控制的方式進(jìn)行恢復(fù)。

以上主要對(duì)總結(jié)于李興華老師的課程,大家有興趣可以去網(wǎng)易去上觀看

你的點(diǎn)贊是我持續(xù)分享好東西的動(dòng)力,歡迎點(diǎn)贊!

一個(gè)笨笨的碼農(nóng),我的世界只能終身學(xué)習(xí)!

更多內(nèi)容請(qǐng)關(guān)注公眾號(hào)《大遷世界》!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98468.html

相關(guān)文章

  • git 詳解實(shí)用指南之四(標(biāo)簽管理)

    摘要:詳解及實(shí)用指南之一本地操作詳解及實(shí)用指南之二遠(yuǎn)程操作詳解及實(shí)用指南之三分支管理創(chuàng)建標(biāo)簽標(biāo)簽可以簡(jiǎn)單的理解為屬于分支定義的別名,分支本身都會(huì)進(jìn)行指針的配置分支都會(huì)指向某一個(gè)但是標(biāo)簽卻是一個(gè)固定的內(nèi)容,可以說,標(biāo)簽永遠(yuǎn)指向一個(gè)。 1. git 詳解及實(shí)用指南之一 (本地操作)2. git 詳解及實(shí)用指南之二 (遠(yuǎn)程操作)3. git 詳解及實(shí)用指南之三(分支管理) 1.創(chuàng)建標(biāo)簽 標(biāo)簽可以簡(jiǎn)...

    wawor4827 評(píng)論0 收藏0
  • git 詳解實(shí)用指南之四(標(biāo)簽管理)

    摘要:詳解及實(shí)用指南之一本地操作詳解及實(shí)用指南之二遠(yuǎn)程操作詳解及實(shí)用指南之三分支管理創(chuàng)建標(biāo)簽標(biāo)簽可以簡(jiǎn)單的理解為屬于分支定義的別名,分支本身都會(huì)進(jìn)行指針的配置分支都會(huì)指向某一個(gè)但是標(biāo)簽卻是一個(gè)固定的內(nèi)容,可以說,標(biāo)簽永遠(yuǎn)指向一個(gè)。 1. git 詳解及實(shí)用指南之一 (本地操作)2. git 詳解及實(shí)用指南之二 (遠(yuǎn)程操作)3. git 詳解及實(shí)用指南之三(分支管理) 1.創(chuàng)建標(biāo)簽 標(biāo)簽可以簡(jiǎn)...

    klivitamJ 評(píng)論0 收藏0
  • git 詳解實(shí)用指南之二 (遠(yuǎn)程操作

    摘要:繼上一篇詳解及實(shí)用指南之一本地操作今天說下,遠(yuǎn)程操作。但是遠(yuǎn)程的分支依然沒有發(fā)生改變。在本地磁盤上進(jìn)行倉(cāng)庫(kù)的克隆操作不要在原來目錄下完成,而直接換一個(gè)新目錄,在實(shí)際開發(fā)之中最好的做法是所有的開發(fā)者直接克隆遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行操作。 繼上一篇 1. git 詳解及實(shí)用指南之一 (本地操作) 今天說下,git 遠(yuǎn)程操作。 1.生成 SSH key 這里是用 github 來做演示的,如果沒有 gi...

    cloud 評(píng)論0 收藏0
  • git 詳解實(shí)用指南之二 (遠(yuǎn)程操作

    摘要:繼上一篇詳解及實(shí)用指南之一本地操作今天說下,遠(yuǎn)程操作。但是遠(yuǎn)程的分支依然沒有發(fā)生改變。在本地磁盤上進(jìn)行倉(cāng)庫(kù)的克隆操作不要在原來目錄下完成,而直接換一個(gè)新目錄,在實(shí)際開發(fā)之中最好的做法是所有的開發(fā)者直接克隆遠(yuǎn)程倉(cāng)庫(kù)進(jìn)行操作。 繼上一篇 1. git 詳解及實(shí)用指南之一 (本地操作) 今天說下,git 遠(yuǎn)程操作。 1.生成 SSH key 這里是用 github 來做演示的,如果沒有 gi...

    Tikitoo 評(píng)論0 收藏0
  • git 詳解實(shí)用指南之一本地操作

    摘要:緩存區(qū)上的操作使用將代碼添加到暫存區(qū)之中本次操作使用了一個(gè),那么就表示全部加入。我的王大冶但是這個(gè)時(shí)候此文件并沒有使用進(jìn)行加入?,F(xiàn)在假設(shè)修改了我的王大冶就是要改代碼,不干走人了,老子不吃你這套但是只要是文件一修改,那么就可以立即跟蹤到狀態(tài)。 后續(xù)會(huì)持續(xù)更新 1.設(shè)置開發(fā)者的個(gè)人信息 在任何一個(gè)系統(tǒng)之中都會(huì)存在有多個(gè)開發(fā)者(多人協(xié)作開發(fā)),而在 GIT 之中,對(duì)于每一個(gè)開發(fā)者(電腦),都...

    anquan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<