摘要:緩存區上的操作使用將代碼添加到暫存區之中本次操作使用了一個,那么就表示全部加入。我的王大冶但是這個時候此文件并沒有使用進行加入。現在假設修改了我的王大冶就是要改代碼,不干走人了,老子不吃你這套但是只要是文件一修改,那么就可以立即跟蹤到狀態。
后續會持續更新
1.設置開發者的個人信息在任何一個系統之中都會存在有多個開發者(多人協作開發),而在 GIT 之中,對于每一個開發者(電腦),都需要 開發者自己定義自己的名字與 email 地址,以便進行方便的聯系,此時需要配置全局信息。
配置全局用戶名及 email 地址
git config --global user.name "wzy" git config --global user.email "449245884@.com"
設置完成之后如果成功不會任何提示信息,可以通過如下命令查看全局配置信息:
git config -l
可以發現除了之前配置的用戶名和 email 地址之外,還存在有其它的內容。
2.創建倉庫版本庫 = 倉庫;
在此倉庫中的所有內容都會被git 管理;
在倉庫中的所有文件修改、刪除、更新都會被紀錄下來;
可以隨時恢復到某一特定狀態;
初始化倉庫: git init
如果要開發項目,那么首先必須有一個倉庫(可以簡單的理解為是一個磁盤上的文件夾)。
mkdir myrpo
此時 mypro 文件夾是一個空的文件夾,沒有任何的內容,只是一個純粹的目錄。
將 mypro 文件夾定義為倉庫, 進入文件夾, 初始化倉庫(將此目錄變為可以被GIT管理的倉庫)
而且此時會提示,在 mypro 文件夾之中創建了一個“.git”的目錄,這個目錄就是倉庫信息,死都不能改。
3.添加文件現在倉庫創建完成之后,下面就要進行文件的基本管理了。首先在編寫之前有一個說明:所有的文件一定要使用 UTF-8 編碼,否則有可能會出現問題。
建立一個 Hello.js文件
btn.onclick = function() { console.log("每一次新增!"); }
察看當前倉庫的狀態
git status
在 "git status" 狀態查詢操作上可以發展有如下的幾個提示信息:
現在開發的屬于主分支:On branch master
初始化倉庫的提交:No commits yet
未標記的文件:Untracked files:
隨后給出的一些操作的命令:(use "git add
未標記文件的列表,現在只有一個: hello.js
添加文件到倉庫
增加文件到暫存區: git add 文件名稱
提交文件: git commit -m "注釋"
將文件加入到暫存庫之中
git add hello.js
繼續查詢狀態
此時有了一個最重要的信息:
現在的文件并沒有真正的提交到主分支上(主分支就是我們真正要運行的程序的所有的代碼)。
注意:所有修改的代碼都會被 GIT 自動的監測到,所有的代碼在使用 commit 提交之前一定要先使用 add 增加進來,否則不會有任何的提交。
如果現在不希望分兩步進行則可以在運行以下程序時增加一個“-a”的參數,表示先 add 而后 commit(git commit -a -m "注釋")。
提交文件信息
git commit -m "New Js file - Hello.js Create"
在進行每次更新提交的時候一般都會為其增加上一些注釋數據,所以使用“-m”參數來進行注釋的編寫。
此時這個“Hello.js”文件就被真正的提交到了主分支上,也就是意味著程序發布成功了。
查詢狀態
此時的狀態會提示:沒有任何的信息需要被提交,工作目錄很干凈。而在 git 工具下用戶每一次進行的提交實際上都 會被日志紀錄下來。
察看針對于“hello.js”文件的日志信息
首先會出現一個提交的信息號 “2e3e7018a965673a4154c84105b5d1a23f13167a”,可以理解為是每一次提交的 id 號。如果有多次提交,那么這個日志信息也會越來越多。
4.修改倉庫文件上面代碼已經可以成功的進行了發布,但是代碼出現就是為了修改。于是現在來觀察對于 git 工具如何去控制修改。
修改 hello.js 文件
btn.onclick = function() { console.log("每一次新增!"); console.log("第一次修改·!"); }
此時發現文件增加了一行的修改。
查詢一下當前的倉庫狀態
現在 GIT 直接提示用戶,文件沒有保存到暫存區之中,而且提示有:要么你選擇文件暫存,要么你直接進行文件的 恢復,同時給出了已經修改的文件“hello.js”。
察看文件的前后區別
git diff hello.js
現在可以發現所有增加的內容都會使用“+”表示,而被刪除的信息都會使用“-”表示。
將修改后的代碼加入到暫存區后進行提交
git commit -a -m "Update hello.js file. Add one lines"
察看修改日志
git log hello.js
通過以上的代碼演示,現在可以清楚的發現,只要是修改的操作 GIT 都可以進行及時的跟蹤。
5. 工作區與暫存區 工作區與倉庫工作區: 就是當前電腦的操作目錄(包含 .git);
倉庫:工作區有一個隱藏目錄 .git,這個不算工作區,而是 git 的倉庫,git 版本庫里保存了很多東西,其中最重要的就是稱為 stage 的暫存區,還有 git 為用戶自動創建的主程序分支 master ,以及指向 master 的 head 指針。
概念解釋:
在之前所編寫的“hello.js”文件保存在用戶工作區之中;
當使用 add 命令之后,實際上就是將所有的文件提交到暫存區(state) 之中;
使用 commit 命令之后,才表示真正的發出了修改,而真正可以運行的程序都保存在 master 分支上;
6. 工作區上的操作修改 Hello.js
btn.onclick = function() { console.log("第二次修改·!"); }
增加一個 demo.js 文件
btn2.onclick = function() { console.log("demo click"); }
現在的工作區中的代碼已經發生了變化。
用 status 跟蹤
現在會提示有以下信息:
修改了 Hello.js 文件,而這個文件給出了處理方式;
出現了一個未標記的文件(Demo.js),詢問用戶是否將其加入到暫存區之中。
7. 緩存區上的操作使用“git add”將代碼添加到暫存區之中
git add .
本次操作使用了一個“.”,那么就表示全部加入。修改之后再次觀察狀態。
觀察狀態
8. 提交修改數據保存在暫存區之后,下面就要進行代碼的提交,將代碼提交到主分支上。
當把暫存區的代碼提交到主分支上之后,會自動的清空暫存區之中的內容。
提交修改代碼
git commit -m "add demo.js file"
那么此時再次查詢狀態。
那么會直接發現沒有任何的文件修改的提示。
9. 版本回退每當用戶進行代碼提交的時候都會自動的生成一個 commit id,而這個 commit id 就是進行代碼回退的主要操作方式。
查詢當前修改后的日志信息
git log --pretty=oneline
大家可以發現所有的 commit id 并不是順序的 1、2、3 編號,而是由系統生成一個十六進制數據,這一概念就跟 Session ID 類似,由 GIT 自己控制,主要是為了防止版本號的沖突。
在 master 分之上會有一個 HEAD 指針存在,而這個指針默認情況下永遠指向最后一次提交的位置。
當使用回退之后發現 HEAD 指針出現了改變,如果回退一步,那么之前的操作不會被刪除,但是所有的代碼將回歸到指定位置的狀態。
**回退一步
git reset --hard HEAD~1
那么如果說現在還想恢復最新的狀態呢?那么就必須找到回退的 commit id。
找到所有的已經刪除的信息 commitid
git reflog
恢復最后一次提交
git reset --hard cc54c4310.提示:文件修改問題
在有了暫存區和 master 主分支概念之后,就需要回避一個問題:只有保存在暫存區之中的內容才可以被真正的修改, 而不是針對于文件。
編寫 hello.js 文件
btn.onclick = function() { console.log("我的小智"); }
以上是 =hello.js 文件的第一次修改。
將修改的文件增加到暫存區之中
git add.
此時并沒有提交,而后再次修改 hello.js 文件。
btn.onclick = function() { console.log("我的王大冶"); }
但是這個時候此文件并沒有使用 add 進行加入。
進行提交(提交的時候只提交暫存區的內容)
git commit -m "change print"
可是這個時候只是提交了第一次修改,而第二次修改并沒有提交。
查詢狀態
進行對比
git diff HEAD hello.js
HEAD 是指向最后一次提交的指針,現在的含義是將 HEAD 中的 Hello.java 文件與工作區的 Hello.java 文件進行對比。
總結:如果一個文件修改多次了,那么就需要執行多次的 add 后才可以提交,否則在 add 前的修改是不會被提交的。11. 撤消修改
情況一:在未增加(git add) 與提交前(git commit) 用戶可以直接撤消對文件做出的修改操作。
撤消所做出的修改操作: git checkout -- 文件名
情況二:在已增加(git add)與未提交前(git commit) 用戶可以直接撤消對文件所做出的修改操作。
撤消暫存區的修改操作:git reset HEAD 文件名稱;
丟掉已經修改的文件內容: git checkout -- 文件名稱;
情況一:未增加(git add)&提交(git commit)如果在工作區之中的代碼并沒有增加到暫存區之中,那么如果要恢復到原始狀態是很容易的。
現在假設修改了 hello.js
btn.onclick = function() { console.log("我的王大冶"); } 就是要改代碼,不干走人了,老子不吃你這套
但是只要是文件一修改,那么 git 就可以立即跟蹤到狀態。
但是后來發現,此種修改實在是不應該進行,如果進行了,只能有一個結論:此人腦袋有問題。但是寫代碼的時候 可能不知道上一次修改狀態。
恢復
git checkout -- hello.js
執行之后發現 Hello.java 文件就恢復到了一個原始的狀態(上一次的提交狀態)。
情況二:已增加( git add )& 未提交( git commit )現在假設要修改的文件已經提交到了暫存區之中。
將 Hello.java 代碼提交到暫存區中
git add.
當查詢狀態時:
在狀態查詢的時候已經給出了用戶的提示,即:你可以根據 HEAD 指針來恢復文件。
從暫存區之中退出
git reset HEAD hello.js
于是再次查詢狀態
相當于現在已經由暫存區中保存的內容恢復到了工作區,那么既然在工作區了,就可以直接恢復原始狀態。
恢復原始
git checkout -- hello.js
個人建議:養成良好的開發習慣,別像演示那樣這么對待代碼。12. 刪除文件
現在在倉庫之中存在有 Demo.js 文件,但是假設這個文件從此之后不再使用了呢?只有一個解決方案:刪除。但是 在 GIT 里面對于刪除文件這一功能嚴格來講也屬于一個修改操作。
從磁盤上刪除 Demo.js 文件
rm demo.js
當文件刪除之后下面查詢狀態;
這個時候文件是從當前工作區的磁盤中刪除了,同時也提示文件被刪除。
提交更新
git commit -a -m "Delete Demo.java File"
但是如果說發現文件被刪除錯誤了呢?則應該進行恢復。
恢復文件
git reset --hard bc8e842247b3d78
如果文件被刪除,則只能夠利用版本控制的方式進行恢復。
以上主要對總結于李興華老師的課程,大家有興趣可以去網易去上觀看
你的點贊是我持續分享好東西的動力,歡迎點贊!
一個笨笨的碼農,我的世界只能終身學習!
更多內容請關注公眾號《大遷世界》!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71739.html
摘要:詳解及實用指南之一本地操作詳解及實用指南之二遠程操作詳解及實用指南之三分支管理創建標簽標簽可以簡單的理解為屬于分支定義的別名,分支本身都會進行指針的配置分支都會指向某一個但是標簽卻是一個固定的內容,可以說,標簽永遠指向一個。 1. git 詳解及實用指南之一 (本地操作)2. git 詳解及實用指南之二 (遠程操作)3. git 詳解及實用指南之三(分支管理) 1.創建標簽 標簽可以簡...
摘要:詳解及實用指南之一本地操作詳解及實用指南之二遠程操作詳解及實用指南之三分支管理創建標簽標簽可以簡單的理解為屬于分支定義的別名,分支本身都會進行指針的配置分支都會指向某一個但是標簽卻是一個固定的內容,可以說,標簽永遠指向一個。 1. git 詳解及實用指南之一 (本地操作)2. git 詳解及實用指南之二 (遠程操作)3. git 詳解及實用指南之三(分支管理) 1.創建標簽 標簽可以簡...
摘要:繼上一篇詳解及實用指南之一本地操作今天說下,遠程操作。但是遠程的分支依然沒有發生改變。在本地磁盤上進行倉庫的克隆操作不要在原來目錄下完成,而直接換一個新目錄,在實際開發之中最好的做法是所有的開發者直接克隆遠程倉庫進行操作。 繼上一篇 1. git 詳解及實用指南之一 (本地操作) 今天說下,git 遠程操作。 1.生成 SSH key 這里是用 github 來做演示的,如果沒有 gi...
摘要:繼上一篇詳解及實用指南之一本地操作今天說下,遠程操作。但是遠程的分支依然沒有發生改變。在本地磁盤上進行倉庫的克隆操作不要在原來目錄下完成,而直接換一個新目錄,在實際開發之中最好的做法是所有的開發者直接克隆遠程倉庫進行操作。 繼上一篇 1. git 詳解及實用指南之一 (本地操作) 今天說下,git 遠程操作。 1.生成 SSH key 這里是用 github 來做演示的,如果沒有 gi...
摘要:緩存區上的操作使用將代碼添加到暫存區之中本次操作使用了一個,那么就表示全部加入。我的王大冶但是這個時候此文件并沒有使用進行加入。現在假設修改了我的王大冶就是要改代碼,不干走人了,老子不吃你這套但是只要是文件一修改,那么就可以立即跟蹤到狀態。 后續會持續更新 1.設置開發者的個人信息 在任何一個系統之中都會存在有多個開發者(多人協作開發),而在 GIT 之中,對于每一個開發者(電腦),都...
閱讀 1768·2023-04-26 01:44
閱讀 1211·2021-11-12 10:34
閱讀 1579·2021-09-09 09:33
閱讀 1729·2019-08-30 15:44
閱讀 2893·2019-08-30 13:49
閱讀 2191·2019-08-29 15:26
閱讀 944·2019-08-26 13:30
閱讀 1409·2019-08-23 18:15