目錄
git基本配置
認識工作區、暫存區、版本庫
添加文件--情況一:
添加文件-情況二:
修改文件:
版本回退:
git基本配置
1.初始化本地倉庫,注意:一定要在一個目錄下進行,一般都是新建一個文件夾,在文件夾中進行下文操作
? ? 指令:git init
2.初始化git的提交用戶+郵箱
? ? 2.1:配置用戶名:git config user.name "gitee的用戶名||github用戶名"?
? ? 注意!,如果是gitee,你的用戶名是@后面的字符串,不包括@!
? ? 2.2:配置郵箱:git config user.email "gitee/github綁定的郵箱地址"
3.查看當前路徑下本地倉庫的配置信息
? ? 指令:git config -l
4.重置配置信息
? ? 4.1:重置姓名:git config --unset user.name
? ? 4.2:重置郵箱:git config --unset user.email
5.將當前機器上所有的用戶都配置相同的用戶和密碼
? ? 指令:git config --global user.name "gitee的用戶名||github用戶名"
? ? 指令:git config --global user.email "gitee/github綁定的郵箱地址"
? ? 注意:通過--global選項配置的賬戶信息是不能直接通過上述第4條說明中的指令重置的!!需要的指令如下:
? ? 重置用戶名:git config --global --unset user.name
? ? 重置郵箱:git config --global --unset user.email
補充:1.gitee用戶名位置:再次提醒:不要帶上@!!!!!!!!!不要帶上@!!!!!!!!!不要帶上@!!!!!!!!!
2.查詢giteer賬號綁定的郵箱:在gitee主頁(即上述圖片界面),鼠標移動到右上角頭像處,會有一個設置選項,點擊,左邊列表中有一個郵箱管理,點擊后就能看到當前gitee賬號綁定的郵箱
認識工作區、暫存區、版本庫
在本地倉庫目錄中,創建一個Readme文件,注意!不能直接在.git中創建!禁止一切手動修改.git的操作
版本庫:-->.git文件
工作區:-->Readme所在目錄下,但不包括.git文件
暫存區:-->版本庫的stage模塊,又稱索引
add操作
將工作區被修改的部分提交到暫存區stage
commit操作
將暫存區stage中的內容提交到某個分支,默認master分支
簡易流程圖:
添加文件--情況一:
概念補充:.表示當前路徑 ..表示上一級路徑
1.先前面創建的Readme文件中寫點東西,比如"hello git!"
2.提交方式將工作區的內容提交到暫存區2.1:提交指定工作區指定內容指令:git add 帶路徑的文件名(不帶路徑會默認為當前路徑中的文件)可以連續帶多個文件名,之間使用空格隔開:git add file1 file2...2.2:提交當前目錄下所有的內容指令:git add .將暫存區內容提交到master分支2.3:命令后可以帶選項,例如 -m 表示提交內容的同時攜帶對提交內容的說明信息,方便記憶:其實-m就是message的縮寫指令:git commit -m "說明信息"注意:執行commit命令之前一定要先add過,并且使用commit指令一定要帶上-m選項!!查看git的歷史提交記錄:指令:git log優雅的查看歷史提交記錄:指令:git log --pretty=oneline
添加文件-情況二:
1.先在工作區創建1個文件,test1.txt
依次執行以下指令:
? ? 1.1:git add test1.txt
? ? 1.2:Linux機器:touch test2.txt?
? ? windows機器:直接鼠標創建test2.txt
? ? 1.3:git commit -m "test1.txt add"
?觀察現象,顯示有幾個文件提交了?只有1個!就是test1.txt
修改文件:
Git追蹤的是工作區的修改,而不是文件本身!
當我們對已經commit過的工作區文件進行修改時,比如,打開之前創建的Readme文件,新增一行數據,比如新增"hello mygit!"
查看git狀態的指令:
? ? 指令:git status
Linux上顯示如下:
但是如果我想看到更詳細的內容,比如:想知道是哪幾行修改了,是增加還是刪除?
指令:git diff 工作區被修改的文件名
Linux上顯示如下,windows大差不差:
windows會更直觀,不再贅述。
Readme文件被我們修改了,那么按照之前所說的,先add到暫存區,再commit到master分支
指令: 1.git add Readme
查一下:2.git status提示你,.git中的statge已被改變,需要commit到mater分支3.git commit -m "update Readme"
再查一下:4.git status
顯示工作區和暫存區都無改動了
done
版本回退:
什么是版本回退?舉幾個栗子:
1.就像是你在烹飪一道復雜的菜肴時,突然發現自己加錯了調料,然后決定“時光倒流”, 回到加調料前的那一刻,重新來過。
2.想象一下,你正在編寫一個超級英雄的故事,你已經寫到了“超級英雄打敗了大反派,拯救了世界!”這一章。 但是,你突然意識到,在之前的某一章里,你給超級英雄加了一個奇怪的能力,比如“只剩一滴血也能重生”, 這個能力實在是太奇葩了,完全破壞了故事的整體氛圍。 這時,Git版本回退就派上用場了。你可以使用Git的“時光機”(其實是一些命令), 回到那個添加奇怪能力的章節之前,然后就像那個能力從未存在過一樣,繼續你的創作
3.你正在準備畢業論文,第一版寫完后交給老師,老師不滿意,于是你哼哧哼哧的修改好了第二版論文, 此時你興高采烈的又交給老師,老師說你的第二版論文格式有問題,內容也偏題了,回去重寫,好吧, 于是你垂頭喪氣的又回去改了第三版論文交給老師,老師對著你說:"小明啊,你還是把第一版論文交給我吧, 你這幾版還不如第一版呢!",你聽到這話,心里非常慶幸,因為你將每一版論文都進行過備份,于是你找到 第一版備份交給了老師,成功通過,順利畢業;
回歸正題:
之前我們經常上面使用的Readme文件最開始只有一行內容"hello git!";add+commit之后,這就是第一版的Readme文件,之后我們又增加了一行內容"hello mygit!",add+commit之后就是第二版Readme文件
版本回退:指令:git reset [--soft] [--mixed] [--hard] [HARD]
注意:此處的[HARD]指的是git提交記錄中用看標識提交ID的字符串哈希編碼,如何查看HEAD?
前面提到過指令:git log --pretty=oneline
打印出來的左側的字符串編碼即是每次提交的HEAD
列個表格輔助理解:
首先,最后一版的Readme內容為"hello git!" 和"hello mygit"
reset命令不帶選項默認為--mixed
版本回退實操:指令:1.查看一下git提交日志:git log --pretty=oneline2.根據HEAD選擇要回退的版本
此處我選擇回退至第一版,采用--hard選項
指令:git reset --hard d2c9915d4d2a5ca706c0e31de9df62a47796b944
回退之后,查一下git提交日志,顯示如下:
此時Readme文件的內容被重置為原來的一行:"hello git!"
如果此時我們回退版本的時候,后悔了怎么辦?
指令:
? ? git reset --hard dfc471a62a287d4cfc27d3968fe104d03980b859
上述HEAD是我們最開始查日志的時候顯示的最新一次提交的版本的字符串哈希值,如果你反悔了,在記得回退前的
版本的HEAD時,就可以使用上述指令撤銷本次回退
如果你記不到HEAD了,git也是有后悔藥可以吃的!
指令:git reflog?
功能:查詢更新前的git提交日志信息,其中有你日志更新前的所有版本提交的日志,其中有HEAD信息還有最左側的部分信息
而部最左側的信息也可以用來充當HEAD來進行撤銷操作
撤銷操作:
注意:這里說的撤銷操作,只針對本地倉庫,對于遠端倉庫不生效! 所以撤銷操作的前提條件是:commit之后沒進行push操作,這里的push操作暫不說明. 場景:當在某一個版本的基礎上開發新的代碼時,寫了一坨之后,決定實在垃圾, 于是想撤銷自己在當前版本之上寫的所有代碼時,就需要用到撤銷操作。 撤銷操作有三個場景,表格如下所示:
情況一:只更改了工作區的代碼,其他區域未改變;
1.手動修改--代碼量大的時候強烈不推薦!!
2.使用指令修改指令:git checkout -- 要撤銷修改的文件
解釋:一定要帶上--倆個符號,表示撤銷到最近一次更新的版本
情況2:修改了工作區代碼后,又add到了暫存區中,但是版本庫中未改變
方法1:使用reset指令 + hard選項指令:git reset --hard HEAD解釋:HEAD-->直接寫HEAD表示回退至當前版本,HEAD^表示上個版本,以此類推;
方法2:使用reset指令 + mixed選項指令:git reset --mixed HEAD此時又回到了情況一則:git checkout -- 要撤銷修改的文件即可
情況3:工作區、暫存區、版本庫中都被修改了
1.直接使用reset指令:指令:git reset --hard HEAD^或者:git reset --hard 字符串哈希值(先git log 查詢一下哈希值)
刪除文件:
1.假設刪除了工作區的文件,例如rm file.txt 注意:刪除也算工作區的變動,所以也要同步到暫存區和版本庫 1.1:git add file.txt 1.2:git commit -m "delete file.txt" 2. git提供的刪除命令 指令:git rm 要刪除的文件名 再接著:git commit -m "delete file.txt"即可